CobolBanking / app.py
puffy310's picture
Update app.py
bc759ab verified
raw
history blame
2.02 kB
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()