mirror of
https://github.com/cookiecutter/cookiecutter-django.git
synced 2024-11-22 09:36:52 +03:00
Add docstrings to the update_contributors.py file
This commit is contained in:
parent
5c77042b59
commit
333da12f51
|
@ -8,6 +8,7 @@ CURRENT_FILE = Path(__file__)
|
|||
ROOT = CURRENT_FILE.parents[1]
|
||||
BOT_LOGINS = ["pyup-bot"]
|
||||
|
||||
# Jinja template for CONTRIBUTORS.md
|
||||
CONTRIBUTORS_TEMPLATE = """
|
||||
# Contributors
|
||||
|
||||
|
@ -69,9 +70,19 @@ guidance and advice.
|
|||
|
||||
|
||||
def main() -> None:
|
||||
"""
|
||||
Script entry point.
|
||||
|
||||
1. Fetch recent contribtors from the Github API
|
||||
2. Add missing ones to the JSON file
|
||||
3. Generate Markdown from JSON file
|
||||
"""
|
||||
# Use Github API to fetch recent authors rather than
|
||||
# git CLI because we need to know their GH username
|
||||
gh = GitHub()
|
||||
recent_authors = set(gh.iter_recent_authors())
|
||||
|
||||
# Add missing users to the JSON file
|
||||
contrib_file = ContributorsJSONFile()
|
||||
for username in recent_authors:
|
||||
print(f"Checking if {username} should be added")
|
||||
|
@ -81,10 +92,13 @@ def main() -> None:
|
|||
print(f"Added {username} to contributors")
|
||||
contrib_file.save()
|
||||
|
||||
# Generate MD file from JSON file
|
||||
write_md_file(contrib_file.content)
|
||||
|
||||
|
||||
class GitHub:
|
||||
"""Small wrapper around Github REST API."""
|
||||
|
||||
base_url = "https://api.github.com"
|
||||
|
||||
def __init__(self) -> None:
|
||||
|
@ -107,29 +121,36 @@ class GitHub:
|
|||
|
||||
|
||||
class ContributorsJSONFile:
|
||||
"""Helper to interact with the JSON file."""
|
||||
|
||||
file_path = ROOT / ".github" / "contributors.json"
|
||||
content = None
|
||||
|
||||
def __init__(self) -> None:
|
||||
"""Read initial content."""
|
||||
self.content = json.loads(self.file_path.read_text())
|
||||
|
||||
def __contains__(self, github_login: str):
|
||||
"""Provide a nice API to do: `username in file`."""
|
||||
return any(github_login == contrib["github_login"] for contrib in self.content)
|
||||
|
||||
def add_contributor(self, user_data):
|
||||
"""Append the contributor data we care about at the end."""
|
||||
contributor_data = {
|
||||
"name": user_data["name"],
|
||||
"github_login": user_data["login"],
|
||||
"twitter_username": user_data["twitter_username"],
|
||||
}
|
||||
self.content.extend(contributor_data)
|
||||
self.content.append(contributor_data)
|
||||
|
||||
def save(self):
|
||||
"""Write the file to disk with indentation."""
|
||||
text_content = json.dumps(self.content, indent=2, ensure_ascii=False)
|
||||
self.file_path.write_text(text_content)
|
||||
|
||||
|
||||
def write_md_file(contributors):
|
||||
"""Generate markdown file from Jinja template."""
|
||||
template = Template(CONTRIBUTORS_TEMPLATE, autoescape=True)
|
||||
core_contributors = [c for c in contributors if c.get("is_core", False)]
|
||||
other_contributors = (c for c in contributors if not c.get("is_core", False))
|
||||
|
|
Loading…
Reference in New Issue
Block a user