feat(cli,display): add --health check and repo description column

Add --health option to verify Gitea connectivity and display version.
Add Description column (truncated at 40 chars) with --no-desc to hide
it. Add get_version() method to GiteaClient.

fixes #14
fixes #15

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
sylvain
2026-03-12 19:18:03 +01:00
parent 2ef7ec175e
commit 1b33cd36f9
6 changed files with 245 additions and 9 deletions

View File

@@ -59,9 +59,35 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
dest="format",
help="Format de sortie (defaut: table).",
)
parser.add_argument(
"--health",
action="store_true",
default=False,
help="Verifie la connexion Gitea et affiche la version. Exit 0 si OK, 1 sinon.",
)
parser.add_argument(
"--no-desc",
action="store_true",
default=False,
help="Masque la colonne Description dans le tableau.",
)
return parser.parse_args(argv)
def _run_health_check(client: GiteaClient, console: Console) -> None:
"""Execute le health check et affiche les resultats.
1. Appelle client.get_version() -> affiche "Gitea vX.Y.Z"
2. Appelle client.get_repos() -> affiche "N repos accessibles"
"""
version_info = client.get_version()
version = version_info.get("version", "inconnue")
console.print(f"Gitea v{version}")
repos = client.get_repos()
console.print(f"{len(repos)} repos accessibles")
def main(argv: list[str] | None = None) -> None:
"""Point d'entree principal.
@@ -90,6 +116,10 @@ def main(argv: list[str] | None = None) -> None:
client = GiteaClient(url, token)
try:
if args.health:
_run_health_check(client, console)
return
repos = collect_all(client, include=args.repo, exclude=args.exclude)
except requests.ConnectionError:
console.print("[red]Erreur : connexion refusee. Verifiez l'URL et le serveur Gitea.[/red]")
@@ -111,4 +141,4 @@ def main(argv: list[str] | None = None) -> None:
sorted_repos = sort_repos(repos, args.sort)
print(export_json(sorted_repos)) # noqa: T201
else:
render_dashboard(repos, sort_key=args.sort)
render_dashboard(repos, sort_key=args.sort, show_description=not args.no_desc)