Files
website-v2/libraries/management/commands/import_commit_counts.py
2023-05-26 09:48:55 -07:00

32 lines
1.1 KiB
Python

import djclick as click
from libraries.github import GithubAPIClient, LibraryUpdater
from libraries.models import Library
@click.command()
@click.option("--token", is_flag=False, help="Github API token")
@click.option(
"--branch", is_flag=False, help="Branch name (default master)", default="master"
)
def command(branch, token):
"""Imports commit counts for all libraries, broken down by month, and saves
them to the database. This is a one-time import.
:param branch: The branch to import commit data from. Default is master.
:param token: Github API token
"""
updater = LibraryUpdater(client=GithubAPIClient(token=token))
for library in Library.objects.all():
commits = updater.client.get_commits(
repo_slug=library.github_repo, branch=branch
)
commit_data = updater.parser.get_commits_per_month(commits)
updater.update_monthly_commit_data(library, commit_data, branch=branch)
library.refresh_from_db()
click.secho(
f"Updated {library.name} commits; {library.commit_data.count()} monthly counts added",
fg="green",
)