from github import Github from rich.console import Console from rich.table import Table import typer from rich import print from rich.panel import Panel from rich.console import Group import random app = typer.Typer() console = Console() # Create your token from https://github.com/settings/tokens/new # Select repo and user scope g = Github("ADD_YOUR_OWN") @app.command() def showall(): print("\n\n") user = g.get_user() table = Table("Repo Name", "URL", "Stars", "Open Issues", ) for repo in user.get_repos(): r = lambda: random.randint(0, 255) color = str('#%02X%02X%02X' % (r(), r(), r())) table.add_row("[bold " + color + "]" + repo.name, "[bold " + color + "]" + repo.url, "[bold " + color + "]" + str(repo.stargazers_count), "[bold " + color + "]" + str(repo.open_issues_count), ) group = Group( table, ) print(Panel(group, title="[bold underline purple]All Repos of " + user.name)) print("\n\n") @app.command() def showproject(name: str): repo = g.get_user().get_repo(name=name) print("\n\n") table = Table("Name", "Contributions") for contributor in repo.get_contributors(): r = lambda: random.randint(0, 255) color = str('#%02X%02X%02X' % (r(), r(), r())) table.add_row("[bold " + color + "]" + contributor.name, "[bold " + color + "]" + str(contributor.contributions)) group = Group( "[bold green]Owner:[/bold green] " + "[bold]" + repo.owner.name + "[/bold]\n" "[bold blue]URL:[/bold blue] " + "[bold]" + repo.url + "[/bold]\n" "[bold #ecc73c]Stars:[/bold #ecc73c] " + "[bold]" + str( repo.stargazers_count) + "[/bold]", "[bold blue]Forks:[/bold blue] " + "[bold]" + str(repo.forks_count) + "[/bold]", "[bold #6a5b64]Watchers:[/bold #6a5b64] " + "[bold]" + str(repo.watchers_count) + "[/bold]", "[bold red]Issues:[/bold red] " + "[bold]" + str(repo.open_issues_count) + "[/bold]", table, ) print(Panel(group, title="[bold underline purple]Details of " + repo.name)) print("\n\n") if __name__ == "__main__": app()