import gradio as gr import subprocess # Run setup.sh once at startup def run_setup(): result = subprocess.run( ["sh", "scripts/setup.sh"], capture_output=True, text=True ) return result.stdout + "\n" + result.stderr # Run setup to compile COBOL files print("🚀 Running setup...") setup_output = run_setup() print(setup_output) # Helper function to run COBOL binaries def run_cobol_binary(binary_name, input_data=None): try: if input_data: result = subprocess.run( [f"./cobol/{binary_name}"], input=input_data, capture_output=True, text=True, timeout=10 ) else: result = subprocess.run( [f"./cobol/{binary_name}"], capture_output=True, text=True, timeout=10 ) return result.stdout or result.stderr except Exception as e: return str(e) # --- Account Balance --- def get_balance(account_number): input_str = f"{account_number}\n" return run_cobol_binary("account", input_str) # --- Loan Status --- def check_loan_status(account_number): input_str = f"{account_number}\n" return run_cobol_binary("loan", input_str) # --- Gradio UI --- with gr.Blocks(title="COBOL Bank Demo") as demo: gr.Markdown("# 💰 COBOL Banking System\nRun real COBOL programs in your browser!") with gr.Tab("Account Balance"): acc_input = gr.Number(label="Enter Account Number") acc_output = gr.Textbox(label="Balance Info") acc_btn = gr.Button("Check Balance") acc_btn.click(fn=get_balance, inputs=acc_input, outputs=acc_output) with gr.Tab("Loan Status"): loan_input = gr.Number(label="Enter Account Number") loan_output = gr.Textbox(label="Loan Info") loan_btn = gr.Button("Check Loan") loan_btn.click(fn=check_loan_status, inputs=loan_input, outputs=loan_output) demo.launch()