From 09d56b849a94fbd2ba108b0edfd8159e83c0c2d0 Mon Sep 17 00:00:00 2001 From: jboursier Date: Fri, 21 Oct 2022 19:53:15 +0200 Subject: [PATCH 1/2] Various improvements Signed-off-by: jboursier --- src/cli.py | 6 ++++++ src/ghas_cli/utils/network.py | 1 + src/ghas_cli/utils/repositories.py | 31 +++++++++++++++--------------- 3 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/cli.py b/src/cli.py index a7a7ab8..46a79a9 100644 --- a/src/cli.py +++ b/src/cli.py @@ -162,6 +162,7 @@ def repositories_cli() -> None: ), default="human", ) +@click.argument("output", type=click.File("w")) @click.option( "-t", "--token", @@ -181,6 +182,7 @@ def repositories_list( archived: bool, disabled: bool, format: str, + output: Any, organization: str, token: str, ) -> None: @@ -198,19 +200,23 @@ def repositories_list( if "human" == format: for r in res: + output.write(r + "\n") click.echo(r) elif "ghas" == format: repos = [] for r in res: repos.append(r.to_ghas()) + output.write(str([{"login": organization, "repos": repos}]) + "\n") click.echo([{"login": organization, "repos": repos}]) elif "json" == format: repos = [] for r in res: repos.append(r.to_json()) + output.write(str(repos) + "\n") click.echo(repos) elif "list" == format: for r in res: + output.write(r.name + "\n") click.echo(r.name) diff --git a/src/ghas_cli/utils/network.py b/src/ghas_cli/utils/network.py index 8f9ae4e..692b586 100644 --- a/src/ghas_cli/utils/network.py +++ b/src/ghas_cli/utils/network.py @@ -30,6 +30,7 @@ def check_rate_limit(response: Any) -> bool: print( f"Rate limit reached: {response.headers['x-ratelimit-remaining']}/{response.headers['x-ratelimit-limit']} - {reset_time}" ) + time.sleep(reset_time) return True if response.status_code == 403: diff --git a/src/ghas_cli/utils/repositories.py b/src/ghas_cli/utils/repositories.py index 36c4103..8b2dedb 100644 --- a/src/ghas_cli/utils/repositories.py +++ b/src/ghas_cli/utils/repositories.py @@ -181,31 +181,32 @@ def get_org_repositories( repo = Repository() repo.load_json(r, token=token) + # repo.load_json(r, token=None) if language != "" and repo.main_language != language: - # print( - # f"{repo.name} ignored because of language: {language} vs. {repo.main_language}" - # ) + print( + f"{repo.name} ignored because of language: {language} vs. {repo.main_language}" + ) continue if default_branch != "" and repo.default_branch != default_branch: - # print( - # f"{repo.name} ignored because of default branch: {default_branch} vs. {repo.default_branch}" - # ) + print( + f"{repo.name} ignored because of default branch: {default_branch} vs. {repo.default_branch}" + ) continue if license != "" and repo.license != license: - # print( - # f"{repo.name} ignored because of license: {license} vs. {repo.license}" - # ) + print( + f"{repo.name} ignored because of license: {license} vs. {repo.license}" + ) continue if repo.archived != archived: - # print( - # f"{repo.name} ignored because of archived: {archived} vs. {repo.archived}" - # ) + print( + f"{repo.name} ignored because of archived: {archived} vs. {repo.archived}" + ) continue if repo.disabled != disabled: - # print( - # f"{repo.name} ignored because of license: {archived} vs. {repo.archived}" - # ) + print( + f"{repo.name} ignored because of license: {archived} vs. {repo.archived}" + ) continue repos_list.append(repo) From ab40ce8a3ae7015604f9f97bc8f008ce7d093a69 Mon Sep 17 00:00:00 2001 From: jboursier Date: Sat, 22 Oct 2022 12:46:29 +0200 Subject: [PATCH 2/2] Fixes Signed-off-by: jboursier --- src/cli.py | 5 +++-- src/ghas_cli/utils/network.py | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/cli.py b/src/cli.py index 46a79a9..b43929e 100644 --- a/src/cli.py +++ b/src/cli.py @@ -10,6 +10,7 @@ try: import click + import json from typing import Dict, Any from datetime import datetime except ImportError: @@ -206,13 +207,13 @@ def repositories_list( repos = [] for r in res: repos.append(r.to_ghas()) - output.write(str([{"login": organization, "repos": repos}]) + "\n") + output.write(json.dumps([{"login": organization, "repos": repos}]) + "\n") click.echo([{"login": organization, "repos": repos}]) elif "json" == format: repos = [] for r in res: repos.append(r.to_json()) - output.write(str(repos) + "\n") + output.write(json.dumps(repos) + "\n") click.echo(repos) elif "list" == format: for r in res: diff --git a/src/ghas_cli/utils/network.py b/src/ghas_cli/utils/network.py index 692b586..b7557d3 100644 --- a/src/ghas_cli/utils/network.py +++ b/src/ghas_cli/utils/network.py @@ -2,6 +2,7 @@ #!/usr/bin/env python3 from typing import Any, Dict +from datetime import datetime import time