Files
gitea-dashboard/src/gitea_dashboard/cli.py
sylvain 01f88a0eca fix(audit): correct findings from review round 1
- client: add raise_for_status() in get_latest_release() for non-404 errors (FINDING-001)
- client: add timeout parameter (default 30s) passed to all session.get() calls (FINDING-004/SEC-002)
- cli: replace return with sys.exit(1) in all except blocks (FINDING-002)
- test_cli: remove duplicate test_exits_when_token_missing, assert GITEA_TOKEN in stderr (FINDING-006)
- test_cli: update connection error tests to expect SystemExit(1) after exit code fix
- test_cli: rework token masking test to inject token into exception message (FINDING-007)
- test_client: add test_raises_on_server_error for HTTP 500 path (FINDING-001)
- test_client: add tests for default and custom timeout values (FINDING-004)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 19:00:57 +01:00

59 lines
1.7 KiB
Python

"""Point d'entree pour le CLI gitea-dashboard."""
from __future__ import annotations
import os
import sys
import requests
from rich.console import Console
from gitea_dashboard.client import GiteaClient
from gitea_dashboard.collector import collect_all
from gitea_dashboard.display import render_dashboard
_DEFAULT_URL = "http://192.168.0.106:3000"
def main() -> None:
"""Point d'entree principal.
1. Lit GITEA_URL (defaut: http://192.168.0.106:3000) et GITEA_TOKEN (requis)
2. Cree le GiteaClient
3. Collecte les donnees via collect_all()
4. Affiche via render_dashboard()
5. Gere les erreurs : config manquante, connexion refusee, timeout
"""
console = Console(stderr=True)
token = os.environ.get("GITEA_TOKEN")
if not token:
console.print(
"[red]Erreur : GITEA_TOKEN non defini. Exportez la variable d'environnement.[/red]"
)
sys.exit(1)
url = os.environ.get("GITEA_URL", _DEFAULT_URL)
client = GiteaClient(url, token)
try:
repos = collect_all(client)
except requests.ConnectionError:
console.print("[red]Erreur : connexion refusee. Verifiez l'URL et le serveur Gitea.[/red]")
sys.exit(1)
except requests.Timeout:
console.print(
"[red]Erreur : delai d'attente depasse. Le serveur Gitea ne repond pas.[/red]"
)
sys.exit(1)
except requests.RequestException as exc:
# Ne jamais afficher le token dans les messages d'erreur
msg = str(exc)
if token in msg:
msg = msg.replace(token, "***")
console.print(f"[red]Erreur API : {msg}[/red]")
sys.exit(1)
render_dashboard(repos)