Picarones / picarones /cli /_serve.py
Claude
fix(ci): restaurer rétrocompat tests + corriger 14 cassures CI
c0f7ba9 unverified
Raw
History Blame
2.18 kB
"""Commande ``serve`` : lance l'interface web FastAPI Picarones.
Sous-module CLI extrait de l'ancien ``picarones/cli.py`` (1519 lignes)
lors du chantier 5 post-Sprint 97. Les commandes ici s'enregistrent
automatiquement sur le groupe ``cli`` à l'import.
Comportement et signatures inchangés — uniquement de la modularisation.
"""
from __future__ import annotations
import sys
import click
from picarones.cli import cli, _setup_logging
# ---------------------------------------------------------------------------
# picarones serve
# ---------------------------------------------------------------------------
@cli.command("serve")
@click.option(
"--host",
default="127.0.0.1",
show_default=True,
help="Adresse d'écoute du serveur web",
)
@click.option(
"--port", "-p",
default=8000,
show_default=True,
type=click.IntRange(1, 65535),
help="Port d'écoute du serveur web",
)
@click.option("--reload", is_flag=True, default=False, help="Mode rechargement automatique (développement)")
@click.option("--verbose", "-v", is_flag=True, default=False, help="Mode verbeux")
def serve_cmd(host: str, port: int, reload: bool, verbose: bool) -> None:
"""Lance l'interface web locale Picarones sur localhost.
Accessible dans le navigateur à l'adresse : http://HOST:PORT
\b
Exemples :
picarones serve
picarones serve --port 8080
picarones serve --host 0.0.0.0 --port 8000
"""
_setup_logging(verbose)
try:
import uvicorn
except ImportError:
click.echo(
"uvicorn n'est pas installé. Installez-le avec :\n"
" pip install uvicorn[standard]\n"
"ou :\n"
" pip install picarones[web]",
err=True,
)
sys.exit(1)
url = f"http://{host}:{port}"
click.echo("Picarones — Interface web locale")
click.echo(f"Démarrage du serveur sur {url}")
click.echo("Appuyez sur Ctrl+C pour arrêter.\n")
log_level = "debug" if verbose else "info"
uvicorn.run(
"picarones.web.app:app",
host=host,
port=port,
reload=reload,
log_level=log_level,
)