Add GitLab source for gitlab.com and self-hosted instances (Salsa)

This commit is contained in:
2026-08-25 18:02:52 +02:00
parent fadb15ccf7
commit 5b89313c4a
3 changed files with 373 additions and 11 deletions
+22
View File
@@ -10,6 +10,7 @@ from datetime import UTC, datetime
from weekly_activity.model import last_week_window
from weekly_activity.report import format_report
from weekly_activity.sources.github import GitHubSource
from weekly_activity.sources.gitlab import GitLabSource
from weekly_activity.sources.launchpad import LaunchpadSource
@@ -48,6 +49,25 @@ def parse_args(argv: Sequence[str] | None = None) -> argparse.Namespace:
gh.add_argument("username", help="GitHub username.")
gh.add_argument("--token", default=None, help="GitHub token (or set GITHUB_TOKEN env var).")
gl = subparsers.add_parser(
"gitlab",
parents=[base],
help="GitLab activity (gitlab.com or any self-hosted instance, e.g. Debian Salsa).",
)
gl.add_argument("username", help="GitLab username.")
gl.add_argument(
"--url",
default="https://gitlab.com",
help="Base URL of the GitLab instance (default: https://gitlab.com).",
)
gl.add_argument("--token", default=None, help="API token (overrides env discovery).")
gl.add_argument(
"--token-env",
default=None,
metavar="VAR",
help="Env var holding the API token (see README for discovery order).",
)
return parser.parse_args(argv)
@@ -84,6 +104,8 @@ def main() -> None:
)
elif args.source == "github":
source = GitHubSource(token=args.token)
elif args.source == "gitlab":
source = GitLabSource(url=args.url, token=args.token, token_env=args.token_env)
else:
raise SystemExit(f"error: unknown source {args.source!r}")