diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8d63dcb..1b17c37 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,7 @@ repos: rev: 5.12.0 hooks: - id: isort - args: ["--profile", "black"] + args: ["--profile", "black", "-l", "79"] - repo: https://github.com/PyCQA/flake8 rev: 6.1.0 hooks: diff --git a/src/gitea_gitlab_exporter/api.py b/src/gitea_gitlab_exporter/api.py index ef7e7d4..e965386 100644 --- a/src/gitea_gitlab_exporter/api.py +++ b/src/gitea_gitlab_exporter/api.py @@ -47,3 +47,21 @@ def get_project_details(args): raise KeyError(f"Project {args.project} not found") print(json.dumps(project)) + + +def get_issues(args): + project_id = args.project_id + url = gitlab_url( + f"/projects/{project_id}/issues?pagination=offset&per_page=500&" + ) + + response = get(url, args) + + return response + + +def get_wiki(args): + url = gitlab_url(f"/projects/{args.project_id}/wikis?with_content=1") + response = get(url, args) + + return response diff --git a/src/gitea_gitlab_exporter/cli.py b/src/gitea_gitlab_exporter/cli.py index 526ce93..d15bbbf 100644 --- a/src/gitea_gitlab_exporter/cli.py +++ b/src/gitea_gitlab_exporter/cli.py @@ -8,7 +8,13 @@ import click from prettytable import PrettyTable from requests.exceptions import HTTPError -from .api import get_project_details, get_user, list_projects +from .api import ( + get_issues, + get_project_details, + get_user, + get_wiki, + list_projects, +) def parse_args(): @@ -166,3 +172,38 @@ def click_get_user(ctx): cli.add_command(click_get_user) + + +@click.command() +@click.option("--project", help="Project name or ID", required=True) +@click.pass_context +def export_project(ctx, project): + project_list = [ + prj + for prj in list_projects(ctx.obj) + if (prj["id"] == project or prj["name"] == project) + ] + + if len(project_list) > 1: + print("Multiple projects found.") + sys.exit(2) + + if len(project_list) < 1: + print("No matching projects") + sys.exit(2) + + project_details = project_list[0] + + ctx.obj.project_id = project_details["id"] + + issues = get_issues(ctx.obj) + + project_details["issues"] = issues + + wiki_pages = get_wiki(ctx.obj) + project_details["wiki_pages"] = wiki_pages + + print(json.dumps(project_details)) + + +cli.add_command(export_project)