Spaces:
Sleeping
Sleeping
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() |