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

@@ -93,6 +93,13 @@ def _colorize_milestone_due(due_on: str | None) -> str:
return "green"
def _truncate(text: str, max_length: int = 40) -> str:
"""Tronque le texte a max_length caracteres avec '...' si necessaire."""
if len(text) <= max_length:
return text
return text[:max_length] + "..."
def sort_repos(repos: list[RepoData], sort_key: str) -> list[RepoData]:
"""Trie la liste des repos selon le critere donne.
@@ -126,15 +133,18 @@ def render_dashboard(
repos: list[RepoData],
console: Console | None = None,
sort_key: str = "name",
show_description: bool = True,
) -> None:
"""Affiche le dashboard complet dans le terminal.
- Tableau principal : nom repo, indicateurs (fork/archive/mirror),
issues ouvertes, derniere release (tag + date relative)
- Tableau principal : nom repo, description (optionnelle, tronquee a 40 chars),
indicateurs (fork/archive/mirror), issues ouvertes, derniere release
- Section milestones : par repo ayant des milestones,
nom, progression (closed/total), date echeance
Le parametre console permet l'injection pour les tests.
Si show_description est True, ajoute une colonne "Description"
entre "Repo" et "Issues", tronquee a 40 caracteres.
"""
if console is None:
console = Console()
@@ -149,6 +159,8 @@ def render_dashboard(
# Tableau principal
table = Table(title="Gitea Dashboard")
table.add_column("Repo", style="bold")
if show_description:
table.add_column("Description")
table.add_column("Issues", justify="right")
table.add_column("Release")
table.add_column("Dernier commit")
@@ -162,13 +174,19 @@ def render_dashboard(
_format_relative_date(repo.last_commit_date) if repo.last_commit_date else "\u2014"
)
table.add_row(
name,
f"[{issues_style}]{issues_str}[/{issues_style}]",
release_str,
commit_str,
row = [name]
if show_description:
row.append(_truncate(repo.description or ""))
row.extend(
[
f"[{issues_style}]{issues_str}[/{issues_style}]",
release_str,
commit_str,
]
)
table.add_row(*row)
console.print(table)
# Section milestones — uniquement si au moins un repo en a