- 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>
59 lines
1.7 KiB
Python
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)
|