python-scripts/scripts/GithubCLI/githubCLI.py
shata ae3a6d2f8b Added GitHub CLI project
--Shatanik Mahanty <shatanikmahanty@gmail.com>
2022-10-07 15:35:09 +05:30

63 lines
2.3 KiB
Python

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()