Add CLI args for host, port, workers, and reload

This commit is contained in:
Michael Pilosov 2026-04-05 22:54:20 -06:00
parent 20dca2eefa
commit ff29a3cd4e
3 changed files with 50 additions and 17 deletions

View File

@ -20,6 +20,7 @@ app = FastAPI(title="Chess Pressure", docs_url=None, redoc_url=None)
# --- Models ---
class PGNUpload(BaseModel):
pgn: str
@ -31,6 +32,7 @@ class MoveRequest(BaseModel):
# --- API ---
@app.get("/api/games")
def list_games():
return get_game_list()
@ -55,6 +57,7 @@ def parse_uploaded_pgn(body: PGNUpload):
@app.get("/api/legal")
def legal_moves(fen: str):
import chess
board = chess.Board(fen)
return [m.uci() for m in board.legal_moves]
@ -81,7 +84,28 @@ def index():
def main():
uvicorn.run("chess_pressure.app:app", host="0.0.0.0", port=8888, workers=2)
import argparse
parser = argparse.ArgumentParser(description="Chess Pressure server")
parser.add_argument(
"--host", default="0.0.0.0", help="Bind address (default: 0.0.0.0)"
)
parser.add_argument(
"--port", "-p", type=int, default=8888, help="Port (default: 8888)"
)
parser.add_argument(
"--workers", "-w", type=int, default=2, help="Worker processes (default: 2)"
)
parser.add_argument("--reload", action="store_true", help="Enable auto-reload")
args = parser.parse_args()
uvicorn.run(
"chess_pressure.app:app",
host=args.host,
port=args.port,
workers=args.workers,
reload=args.reload,
)
if __name__ == "__main__":

View File

@ -64,26 +64,32 @@ def parse_pgn(pgn_text: str) -> dict:
frames = []
# Frame 0: starting position
frames.append({
frames.append(
{
"board": board_to_dict(board),
"pressure": compute_pressure(board, weighted=False),
"pressure_weighted": compute_pressure(board, weighted=True),
})
}
)
for node in game.mainline():
move = node.move
san = board.san(move)
board.push(move)
moves.append({
moves.append(
{
"san": san,
"uci": move.uci(),
"ply": board.ply(),
})
frames.append({
}
)
frames.append(
{
"board": board_to_dict(board),
"pressure": compute_pressure(board, weighted=False),
"pressure_weighted": compute_pressure(board, weighted=True),
})
}
)
return {
"headers": headers,

View File

@ -198,7 +198,10 @@ Ke7 29.Ra1 Nc6 0-1""",
def get_game_list() -> list[dict]:
"""Return list of available games (id, name, white, black)."""
return [{"id": g["id"], "name": g["name"], "white": g["white"], "black": g["black"]} for g in GAMES]
return [
{"id": g["id"], "name": g["name"], "white": g["white"], "black": g["black"]}
for g in GAMES
]
def get_game_pgn(game_id: str) -> str | None: