From aa015053932b501195d77d981606172be811dd0e Mon Sep 17 00:00:00 2001 From: Darrien Rushing Date: Sat, 29 Nov 2025 13:27:51 -0700 Subject: [PATCH 1/3] ignoring all __pycache__/ --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 42ffb51..7395f3a 100755 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,11 @@ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. +__pycache__/ # virtual environment venv/* venv +*.pyc +*.cpython # Ignore sqlite database files *.db From 1229754d668b0a90cc2922da6162965f033724b7 Mon Sep 17 00:00:00 2001 From: Darrien Rushing Date: Sun, 30 Nov 2025 17:40:23 -0600 Subject: [PATCH 2/3] Getting things running again - moving to standard CLI options - added documentation to start tracking necessary models --- docs/data-flow.drawio | 100 ++++++++++++++++++ .../__pycache__/__init__.cpython-313.pyc | Bin 202 -> 0 bytes .../__pycache__/__main__.cpython-313.pyc | Bin 384 -> 0 bytes .../__pycache__/gh_actions.cpython-313.pyc | Bin 1374 -> 0 bytes .../__pycache__/main.cpython-313.pyc | Bin 2942 -> 0 bytes .../__pycache__/repos.cpython-313.pyc | Bin 4362 -> 0 bytes src/github_cli/{ => actions}/gh_actions.py | 0 src/github_cli/actions/refresh.py | 5 + src/github_cli/{ => actions}/repos.py | 32 +++--- .../__pycache__/manager.cpython-313.pyc | Bin 1382 -> 0 bytes src/github_cli/main.py | 72 +++++++++---- .../__pycache__/workflow.cpython-313.pyc | Bin 1487 -> 0 bytes 12 files changed, 177 insertions(+), 32 deletions(-) create mode 100644 docs/data-flow.drawio delete mode 100644 src/github_cli/__pycache__/__init__.cpython-313.pyc delete mode 100644 src/github_cli/__pycache__/__main__.cpython-313.pyc delete mode 100644 src/github_cli/__pycache__/gh_actions.cpython-313.pyc delete mode 100644 src/github_cli/__pycache__/main.cpython-313.pyc delete mode 100644 src/github_cli/__pycache__/repos.cpython-313.pyc rename src/github_cli/{ => actions}/gh_actions.py (100%) create mode 100644 src/github_cli/actions/refresh.py rename src/github_cli/{ => actions}/repos.py (81%) delete mode 100644 src/github_cli/database/__pycache__/manager.cpython-313.pyc delete mode 100644 src/github_cli/models/__pycache__/workflow.cpython-313.pyc diff --git a/docs/data-flow.drawio b/docs/data-flow.drawio new file mode 100644 index 0000000..bfba3a1 --- /dev/null +++ b/docs/data-flow.drawio @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/github_cli/__pycache__/__init__.cpython-313.pyc b/src/github_cli/__pycache__/__init__.cpython-313.pyc deleted file mode 100644 index dce9c87348cbc6de558caf53bb6acd525fd93340..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 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 LCahN&cH{mRlBupv diff --git a/src/github_cli/__pycache__/repos.cpython-313.pyc b/src/github_cli/__pycache__/repos.cpython-313.pyc deleted file mode 100644 index 9a2b70d9daeb00e8c269ab545409fe5f9c4baee9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4362 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 Qg=2rzV@mM=NQE_j0m(2Fy8r+H diff --git a/src/github_cli/main.py b/src/github_cli/main.py index d64f13d..abb7634 100644 --- a/src/github_cli/main.py +++ b/src/github_cli/main.py @@ -4,7 +4,8 @@ import argparse import textwrap from dotenv import load_dotenv -from github_cli import repos +from github_cli.actions import repos as repo_actions +from github_cli.actions import refresh as refresh_actions def start_repl(): print("Welcome to the REPL") @@ -28,27 +29,62 @@ def main(): print("Welcome to GitHub Inventory!") load_dotenv() - parser = argparse.ArgumentParser(prog = 'github-inventory', - formatter_class = argparse.RawDescriptionHelpFormatter, - epilog = textwrap.dedent('Examples: main.py --option') - ) - parser.add_argument('--repl', action = argparse.BooleanOptionalAction, help = "Start REPL-mode") + parser = argparse.ArgumentParser( + prog = 'github-inventory', + formatter_class = argparse.RawDescriptionHelpFormatter, + epilog = textwrap.dedent('Examples: main.py --option') + ) + subparsers = parser.add_subparsers(dest="command") - subparsers = parser.add_subparsers(dest = 'service', required = True) - gh_parser = subparsers.add_parser('github', help = 'GitHub related commands') - gh_subparser = gh_parser.add_subparsers(dest = 'command') + refresh_parser = subparsers.add_parser("refresh", help="Refresh the database") - repo_parser = gh_subparser.add_parser('repo', help = 'GitHub repo commands') - repo_parser.add_argument('--name', type = str, help = 'Name of repository') - repo_parser.add_argument('--owner', type = str, help = 'Owner of repository') - repo_parser.add_argument('--report', type = str, help = 'Type of report to execute') - repo_parser.add_argument('--user', type = str, help = 'GitHub username') - repo_parser.add_argument('--csv', action = argparse.BooleanOptionalAction) - repo_parser.set_defaults(func = repos.handle_args) + import_parser = subparsers.add_parser("import", help="Import data to the database") + import_parser.add_argument( + "--repos", + action="store_true", + help="Import all repos" + ) + import_parser.add_argument( + "--orgs", + action="store_true", + help="Import all orgs" + ) + + list_parser = subparsers.add_parser("list", help="List items in the database") + list_parser.add_argument( + "--repos", + action="store_true", + help="List all repos.", + ) args = parser.parse_args() - if hasattr(args, 'func'): - args.func(args) + + if args.command == "refresh": + # TODO: Implement refresh action + refresh_actions.handle_refresh() + elif args.command == "list": + if args.repos: + repo_actions.handle_repos(username="meddlin") + # repo_data = repos.__request_repos_for_user(username="meddlin") + # print(repo_data) + + # parser.add_argument('--repl', action = argparse.BooleanOptionalAction, help = "Start REPL-mode") + + # subparsers = parser.add_subparsers(dest = 'service', required = True) + # gh_parser = subparsers.add_parser('github', help = 'GitHub related commands') + # gh_subparser = gh_parser.add_subparsers(dest = 'command') + + # repo_parser = gh_subparser.add_parser('repo', help = 'GitHub repo commands') + # repo_parser.add_argument('--name', type = str, help = 'Name of repository') + # repo_parser.add_argument('--owner', type = str, help = 'Owner of repository') + # repo_parser.add_argument('--report', type = str, help = 'Type of report to execute') + # repo_parser.add_argument('--user', type = str, help = 'GitHub username') + # repo_parser.add_argument('--csv', action = argparse.BooleanOptionalAction) + # repo_parser.set_defaults(func = repos.handle_args) + + # args = parser.parse_args() + # if hasattr(args, 'func'): + # args.func(args) if __name__ == "__main__": main() diff --git a/src/github_cli/models/__pycache__/workflow.cpython-313.pyc b/src/github_cli/models/__pycache__/workflow.cpython-313.pyc deleted file mode 100644 index 76bead4cfe08c0da8d2caceb59bda5addf6fd91c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1487 zcmb7EOONA35H81Y5Jx|)H$#xPQe`{YU2fY_ecxB^hs#yf-jqrf;P~O!tErX+ z_=BA7KtCRv7Sav0;5Bfd1CDl*NhSnLGCkc*oCIsBv-twW4GckO4v37S3EjyIvyMJA zoGhAwmP5;<70^sH3#~Xb-l;iu2cBd_ZkTsU9XLsk6a}X&%t@tJRpk%;@T0}~mviy; z1)o3tQ^zGLNr{+aZI?2ku6_+B6ua_R?@{=^T-ri=5p{oq?K2vWG?snGb|66 z{ikW+9$a3j0%LyQhm5J_%T;}_ouI_YcM+~3>OiZr%CEckR`$Amv@#Ru++A7gyS-H< zf!5)wus(WYRa)P9^QZC#cY?dC3ObaOxR#Gm+`t(&_L=5rlvCtP%6iJ#l#P^gDd$rz zq->^a5ue1@3gC52{OPOb{1@nDl61Nzor4i#;S|UWoaOjeR#%t^Z|gH`B$1 z@+*XE_`R~fwyV!-%a4iL%g=}!%SSIzbNMNG-CO(4i(FrRLT=~Q?h+r~+DDsuv1&z7 zG%Z0l9UGB)D`~p8)#%%kmW-S8d0*~Y61$gbPWKaQZZU>EvEZa_#=cpMcsf&I?7|l^ z!}TlG-D+ z5Bv4#fK&~dov2Q#0j Date: Sun, 30 Nov 2025 22:31:46 -0600 Subject: [PATCH 3/3] Can print list of repos - uses the GitHubRepository model --- src/github_cli/actions/repos.py | 28 ++-- src/github_cli/models/repository.py | 235 ++++++++++++++++++---------- 2 files changed, 167 insertions(+), 96 deletions(-) diff --git a/src/github_cli/actions/repos.py b/src/github_cli/actions/repos.py index 602e666..1914cac 100644 --- a/src/github_cli/actions/repos.py +++ b/src/github_cli/actions/repos.py @@ -10,6 +10,7 @@ from rich.table import Table from github_cli.actions.gh_actions import __request_repo_workflows from github_cli.models.workflow import GitHubWorkflow +from github_cli.models.repository import GitHubRepository from github_cli.database.manager import DatabaseManager def __request_repos_for_user(username: str) -> List[Any]: @@ -91,20 +92,13 @@ def user_repos_report(username: str): console.print(table) def handle_repos(username: str): - data = __request_repos_for_user(username=username) - print(data) - -# def handle_args(args): -# """Handle args for repo commands - -# Args: -# args (_type_): _description_ -# """ -# if args.report == 'list': -# user_repos_report(args.user) - -# if args.report == 'workflows': -# wfs = __request_repo_workflows(owner = 'meddlin', repo = 'github-inventory') -# for w in wfs: -# workflow = GitHubWorkflow.from_dict(w) -# print(workflow.name) + repo_data = __request_repos_for_user(username=username) + for repo in repo_data: + gh_repo = GitHubRepository( + id=repo['id'], + node_id=repo['node_id'], + url=repo['url'], + language=repo['language'] + ) + print(gh_repo.url) + print('all repos processed...') diff --git a/src/github_cli/models/repository.py b/src/github_cli/models/repository.py index 28a5552..8264e41 100644 --- a/src/github_cli/models/repository.py +++ b/src/github_cli/models/repository.py @@ -4,82 +4,159 @@ class GitHubRepository: def __init__( self, - id: int, - node_id: str, - name: str, - full_name: str, - private: bool, - owner: GitHubOwner, - html_url: str, - description: str, - fork: bool, - url: str, - forks_url: str, - keys_url: str, - collaborators_url: str, - teams_url: str, - hooks_url: str, - issue_events_url: str, - events_url: str, - assignees_url: str, - branches_url: str, - tags_url: str, - blobs_url: str, - git_tags_url: str, - git_refs_url: str, - trees_url: str, - statuses_url: str, - languages_url: str, - stargazers_url: str, - contributors_url: str, - cubscribers_url: str, - subscription_url: str, - commits_url: str, - issue_comment_url: str, - contents_url: str, - compare_url: str, - merges_url: str, - archive_url: str, - downloads_url: str, - issues_url: str, - pulls_url: str, - milestones_url: str, - notifications_url: str, - labels_url: str, - releases_url: str, - deployments_url: str, - created_at: str, - updated_at: str, - pushed_at: str, - git_url: str, - ssh_url: str, - clone_url: str, - svn_url: str, - homepage: Any, - size: int, - stargazers_count: int, - watchers_count: int, - language: str, - has_issues: bool, - has_projects: bool, - has_downloads: bool, - has_wiki: bool, - has_pages: bool, - has_discussions: bool, - forks_count: int, - mirror_url: str, - archived: bool, - disabled: bool, - open_issues_count: int, - license: str, - allow_forking: bool, - is_template: bool, - web_commit_signoff_required: bool, - topics: List[Any], - visibility: str, - forks: int, - open_issues: int, - watchers: int, - default_branch: str, - permissions: GitHubRepoPermissions - ) + id: int | None = None, + node_id: str = "", + name: str = "", + full_name: str = "", + private: bool | None = None, + owner: GitHubOwner | None = None, + html_url: str = "", + description: str = "", + fork: bool | None = None, + url: str = "", + forks_url: str = "", + keys_url: str = "", + collaborators_url: str = "", + teams_url: str = "", + hooks_url: str = "", + issue_events_url: str = "", + events_url: str = "", + assignees_url: str = "", + branches_url: str = "", + tags_url: str = "", + blobs_url: str = "", + git_tags_url: str = "", + git_refs_url: str = "", + trees_url: str = "", + statuses_url: str = "", + languages_url: str = "", + stargazers_url: str = "", + contributors_url: str = "", + cubscribers_url: str = "", + subscription_url: str = "", + commits_url: str = "", + issue_comment_url: str = "", + contents_url: str = "", + compare_url: str = "", + merges_url: str = "", + archive_url: str = "", + downloads_url: str = "", + issues_url: str = "", + pulls_url: str = "", + milestones_url: str = "", + notifications_url: str = "", + labels_url: str = "", + releases_url: str = "", + deployments_url: str = "", + created_at: str = "", + updated_at: str = "", + pushed_at: str = "", + git_url: str = "", + ssh_url: str = "", + clone_url: str = "", + svn_url: str = "", + homepage: Any = None, + size: int | None = None, + stargazers_count: int | None = None, + watchers_count: int | None = None, + language: str = "", + has_issues: bool | None = None, + has_projects: bool | None = None, + has_downloads: bool | None = None, + has_wiki: bool | None = None, + has_pages: bool | None = None, + has_discussions: bool | None = None, + forks_count: int | None = None, + mirror_url: str = "", + archived: bool | None = None, + disabled: bool | None = None, + open_issues_count: int | None = None, + license: str = "", + allow_forking: bool | None = None, + is_template: bool | None = None, + web_commit_signoff_required: bool | None = None, + topics: List[Any] | None = None, + visibility: str = "", + forks: int | None = None, + open_issues: int| None = None, + watchers: int | None = None, + default_branch: str = "", + # permissions: GitHubRepoPermissions + ): + self.id = id + self.node_id = node_id + self.name = name + self.full_name = full_name + self.private = private + self.owner = owner + self.html_url = html_url + self.description = description + self.fork = fork + self.url = url + self.forks_url = forks_url + self.keys_url = keys_url + self.collaborators_url = collaborators_url + self.teams_url = teams_url + self.hooks_url = hooks_url + self.issue_events_url = issue_events_url + self.events_url = events_url + self.assignees_url = assignees_url + self.branches_url = branches_url + self.tags_url = tags_url + self.blobs_url = blobs_url + self.git_tags_url = git_tags_url + self.git_refs_url = git_refs_url + self.trees_url = trees_url + self.statuses_url = statuses_url + self.languages_url = languages_url + self.stargazers_url = stargazers_url + self.contributors_url = contributors_url + self.cubscribers_url = cubscribers_url + self.subscription_url = subscription_url + self.commits_url = commits_url + self.issue_comment_url = issue_comment_url + self.contents_url = contents_url + self.compare_url = compare_url + self.merges_url = merges_url + self.archive_url = archive_url + self.downloads_url = downloads_url + self.issues_url = issues_url + self.pulls_url = pulls_url + self.milestones_url = milestones_url + self.notifications_url = notifications_url + self.labels_url = labels_url + self.releases_url = releases_url + self.deployments_url = deployments_url + self.created_at = created_at + self.updated_at = updated_at + self.pushed_at = pushed_at + self.git_url = git_url + self.ssh_url = ssh_url + self.clone_url = clone_url + self.svn_url = svn_url + self.homepage = homepage + self.size = size + self.stargazers_count = stargazers_count + self.watchers_count = watchers_count + self.language = language + self.has_issues = has_issues + self.has_projects = has_projects + self.has_downloads = has_downloads + self.has_wiki = has_wiki + self.has_pages = has_pages + self.has_discussions = has_discussions + self.forks_count = forks_count + self.mirror_url = mirror_url + self.archived = archived + self.disabled = disabled + self.open_issues_count = open_issues_count + self.license = license + self.allow_forking = allow_forking + self.is_template = is_template + self.web_commit_signoff_required = web_commit_signoff_required + self.topics = topics + self.visibility = visibility + self.forks = forks + self.open_issues = open_issues + self.watchers = watchers + self.default_branch = default_branch \ No newline at end of file