Spaces:
Sleeping
Sleeping
| import argparse | |
| import sys | |
| from chess_engine.api.cli import main as cli_main | |
| # Try to import uvicorn, but don't fail if it's not available | |
| try: | |
| import uvicorn | |
| UVICORN_AVAILABLE = True | |
| except ImportError: | |
| UVICORN_AVAILABLE = False | |
| def main(): | |
| """Main entry point for the application""" | |
| parser = argparse.ArgumentParser(description="Chess Engine with Stockfish") | |
| subparsers = parser.add_subparsers(dest="command", help="Command to run") | |
| # CLI command | |
| cli_parser = subparsers.add_parser("cli", help="Run command-line interface") | |
| cli_parser.add_argument("--color", "-c", choices=["white", "black"], default="white", | |
| help="Player's color (default: white)") | |
| cli_parser.add_argument("--difficulty", "-d", | |
| choices=["beginner", "easy", "medium", "hard", "expert", "master"], | |
| default="medium", help="AI difficulty level (default: medium)") | |
| cli_parser.add_argument("--time", "-t", type=float, default=1.0, | |
| help="Time limit for AI moves in seconds (default: 1.0)") | |
| cli_parser.add_argument("--stockfish-path", "-s", type=str, default=None, | |
| help="Path to Stockfish executable") | |
| cli_parser.add_argument("--no-book", action="store_true", | |
| help="Disable opening book") | |
| cli_parser.add_argument("--no-analysis", action="store_true", | |
| help="Disable position analysis") | |
| # API command | |
| api_parser = subparsers.add_parser("api", help="Run REST API server") | |
| api_parser.add_argument("--host", default="127.0.0.1", help="Host to bind (default: 127.0.0.1)") | |
| api_parser.add_argument("--port", "-p", type=int, default=8000, help="Port to bind (default: 8000)") | |
| api_parser.add_argument("--reload", action="store_true", help="Enable auto-reload") | |
| args = parser.parse_args() | |
| if args.command == "cli": | |
| cli_main(args) | |
| elif args.command == "api": | |
| if not UVICORN_AVAILABLE: | |
| print("Error: uvicorn package is not installed. Please install it with:") | |
| print("pip install uvicorn") | |
| sys.exit(1) | |
| try: | |
| from chess_engine.api.rest_api import app | |
| uvicorn.run(app, host=args.host, port=args.port, reload=args.reload) | |
| except ImportError as e: | |
| print(f"Error: {e}") | |
| print("Make sure all required packages are installed:") | |
| print("pip install fastapi uvicorn") | |
| sys.exit(1) | |
| else: | |
| # Default to CLI if no command specified | |
| cli_main() | |
| if __name__ == "__main__": | |
| main() | |