"""Point d'entrée : `python -m noxely_server`.""" from __future__ import annotations import sys import uvicorn from .config import load def ensure_usable(data_dir) -> None: """Le dossier de données est la première chose qui peut manquer : on le dit clairement.""" try: data_dir.mkdir(parents=True, exist_ok=True) probe = data_dir / ".ecriture" probe.touch() probe.unlink() except PermissionError: print( f"[noxely] Droits insuffisants sur {data_dir}.\n" f" Choisissez un dossier accessible dans server/.env (NOXELY_DATA=./data),\n" f" ou créez-le : sudo install -d -o $(whoami) {data_dir}", file=sys.stderr, ) raise SystemExit(1) except OSError as error: print(f"[noxely] Dossier de données inutilisable ({data_dir}) : {error}", file=sys.stderr) raise SystemExit(1) def main() -> None: config = load() ensure_usable(config.data_dir) # Importé après la vérification : l'application ouvre la base dès son chargement. from .api import app print(f"[noxely] données : {config.data_dir}") print(f"[noxely] écoute : http://{config.host}:{config.port}") uvicorn.run(app, host=config.host, port=config.port, log_level="info") if __name__ == "__main__": main()