"""Main entry point for LLM Code Deployment System.""" import argparse import asyncio import sys def main(): """Main CLI entry point.""" parser = argparse.ArgumentParser( description="LLM Code Deployment System", formatter_class=argparse.RawDescriptionHelpFormatter, epilog=""" Examples: # Start student API python main.py student-api # Start instructor API python main.py instructor-api # Run round 1 task generation python main.py round1 # Run evaluation python main.py evaluate # Run round 2 task generation python main.py round2 # Initialize database python main.py init-db """, ) parser.add_argument( "command", choices=[ "student-api", "instructor-api", "round1", "round2", "evaluate", "init-db", ], help="Command to run", ) args = parser.parse_args() if args.command == "student-api": from student.api import app import uvicorn from shared.config import settings settings.ensure_directories() print(f"Starting Student API on port {settings.student_api_port}...") uvicorn.run(app, host="0.0.0.0", port=settings.student_api_port) elif args.command == "instructor-api": from instructor.api import app import uvicorn from shared.config import settings settings.ensure_directories() print(f"Starting Instructor API on port {settings.instructor_api_port}...") uvicorn.run(app, host="0.0.0.0", port=settings.instructor_api_port) elif args.command == "round1": from instructor.round1 import main as round1_main print("Running Round 1 task generation...") asyncio.run(round1_main()) elif args.command == "round2": from instructor.round2 import main as round2_main print("Running Round 2 task generation...") asyncio.run(round2_main()) elif args.command == "evaluate": from instructor.evaluate import main as evaluate_main print("Running evaluation...") asyncio.run(evaluate_main()) elif args.command == "init-db": from instructor.database import Database print("Initializing database...") db = Database() db.create_tables() print("Database initialized successfully!") if __name__ == "__main__": main()