diff --git a/bootstrap.sh b/bootstrap.sh index 8ce4939..e824268 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,19 +1,16 @@ #!/bin/bash -# traptest.sh # Start both of DeerFlow's backend and web UI server. # If the user presses Ctrl+C, kill them both. -if [ "$1" = "--dev" -o "$1" = "-d" -o "$1" = "dev" ]; then - echo "Starting DeerFlow in [DEVELOPMENT] mode..." - echo - uv run server.py --reload & SERVER_PID=$$! - cd web && pnpm dev & WEB_PID=$$! - trap "kill $$SERVER_PID $$WEB_PID" SIGINT SIGTERM - wait +if [ "$1" = "--dev" -o "$1" = "-d" -o "$1" = "dev" -o "$1" = "development" ]; then + echo -e "Starting DeerFlow in [DEVELOPMENT] mode...\n" + uv run server.py --reload & SERVER_PID=$$! + cd web && pnpm dev & WEB_PID=$$! + trap "kill $$SERVER_PID $$WEB_PID" SIGINT SIGTERM + wait else - echo "Starting DeerFlow in [PRODUCTION] mode..." - echo - uv run server.py - cd web && pnpm start + echo -e "Starting DeerFlow in [PRODUCTION] mode...\n" + uv run server.py + cd web && pnpm start fi diff --git a/server.py b/server.py index a7c424e..86cf6bc 100644 --- a/server.py +++ b/server.py @@ -5,8 +5,8 @@ Server script for running the Deer API. """ +import argparse import logging -import sys import uvicorn @@ -19,14 +19,47 @@ logging.basicConfig( logger = logging.getLogger(__name__) if __name__ == "__main__": + # Parse command line arguments + parser = argparse.ArgumentParser(description="Run the Deer API server") + parser.add_argument( + "--reload", + action="store_true", + help="Enable auto-reload (default: True except on Windows)", + ) + parser.add_argument( + "--host", + type=str, + default="localhost", + help="Host to bind the server to (default: localhost)", + ) + parser.add_argument( + "--port", + type=int, + default=8000, + help="Port to bind the server to (default: 8000)", + ) + parser.add_argument( + "--log-level", + type=str, + default="info", + choices=["debug", "info", "warning", "error", "critical"], + help="Log level (default: info)", + ) + + args = parser.parse_args() + + # Determine reload setting + reload = False + + # Command line arguments override defaults + if args.reload: + reload = True + logger.info("Starting Deer API server") - reload = True - if sys.platform.startswith("win"): - reload = False uvicorn.run( "src.server:app", - host="0.0.0.0", - port=8000, + host=args.host, + port=args.port, reload=reload, - log_level="info", + log_level=args.log_level, )