feat(v1.2.0): retry API, dernier commit, tri, coloration, export JSON

- client.py: _get_with_retry (max 2 retries, backoff lineaire), get_latest_commit
- collector.py: champ last_commit_date dans RepoData
- display.py: colonne "Dernier commit", _sort_repos (name/issues/release/activity),
  _colorize_milestone_due (rouge/jaune/vert selon echeance)
- cli.py: options --sort/-s et --format/-f (table/json)
- exporter.py: nouveau module, repos_to_dicts + export_json
- 88 tests (35 nouveaux), ruff clean

fixes #8, fixes #7, fixes #10, fixes #9, fixes #6

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
sylvain
2026-03-12 03:58:45 +01:00
parent 19f300ccdb
commit 4c66fbe98d
10 changed files with 639 additions and 10 deletions

View File

@@ -43,6 +43,21 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
default=None,
help="Exclure les repos par nom (sous-chaine, insensible a la casse). Repeatable.",
)
parser.add_argument(
"--sort",
"-s",
choices=["name", "issues", "release", "activity"],
default="name",
help="Critere de tri des repos (defaut: name).",
)
parser.add_argument(
"--format",
"-f",
choices=["table", "json"],
default="table",
dest="format",
help="Format de sortie (defaut: table).",
)
return parser.parse_args(argv)
@@ -91,4 +106,9 @@ def main(argv: list[str] | None = None) -> None:
console.print(f"[red]Erreur API : {msg}[/red]")
sys.exit(1)
render_dashboard(repos)
if args.format == "json":
from gitea_dashboard.exporter import export_json
print(export_json(repos)) # noqa: T201
else:
render_dashboard(repos, sort_key=args.sort)