Created
May 25, 2022 07:39
-
-
Save frbayart/f98a5d1e646eb308cb160f4dff82b8b8 to your computer and use it in GitHub Desktop.
Probot settings.yaml generator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from github import Github | |
from jinja2 import Environment, FileSystemLoader | |
import os | |
import yaml | |
g = Github(os.environ['GITHUT_PAT']) | |
repo = g.get_repo("GH-ORG/REPONAME") | |
labels = repo.get_labels() | |
milestones = repo.get_milestones() | |
topics = repo.get_topics() | |
collaborators = repo.get_collaborators() | |
teams = repo.get_teams() | |
class Branch: | |
def __init__( | |
self, | |
name, | |
enforce_admins, | |
dismiss_stale_reviews, | |
required_approving_review_count, | |
require_code_owner_reviews, | |
required_status_checks | |
): | |
self.name = name | |
self.enforce_admins = enforce_admins | |
self.dismiss_stale_reviews = dismiss_stale_reviews | |
self.required_approving_review_count = required_approving_review_count | |
self.require_code_owner_reviews = require_code_owner_reviews | |
self.required_status_checks = required_status_checks | |
b = [] | |
for branch in ['main', 'develop']: | |
print(branch) | |
b.append( | |
Branch( | |
repo.get_branch(branch).name, | |
repo.get_branch(branch).get_protection().enforce_admins, | |
repo.get_branch(branch).get_protection().required_pull_request_reviews.dismiss_stale_reviews, | |
repo.get_branch(branch).get_protection().required_pull_request_reviews.required_approving_review_count, | |
repo.get_branch(branch).get_protection().required_pull_request_reviews.require_code_owner_reviews, | |
repo.get_branch(branch).get_protection().required_status_checks | |
) | |
) | |
if __name__ == "__main__": | |
env = Environment(loader = FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True) | |
template = env.get_template('settings.yaml.j2') | |
file=open("settings.yaml", "w") | |
file.write(template.render( | |
repository=repo, | |
labels=labels, | |
milestones=milestones, | |
topics=topics, | |
collaborators=collaborators, | |
teams=teams, | |
branches=b | |
)) | |
file.close() |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# These settings are synced to GitHub by https://probot.github.io/apps/settings/ | |
repository: | |
name: {{ repository.name }} | |
description: {{ repository.description }} | |
{% if repository.homepage | length > 0 %} | |
homepage: {{ repository.homepage }} | |
{% endif %} | |
{% if topics | length > 0 %} | |
topics: {% for topic in topics %}{{ topic }}{% if not loop.last %}, {% endif %}{% endfor %} | |
{% endif %} | |
private: {{ repository.private | lower }} | |
has_issues: {{ repository.has_issues | lower }} | |
has_projects: {{ repository.has_projects | lower }} | |
has_wiki: {{ repository.has_wiki | lower }} | |
has_downloads: {{ repository.has_downloads | lower }} | |
default_branch: {{ repository.default_branch | lower }} | |
allow_squash_merge: {{ repository.allow_squash_merge | lower }} | |
allow_merge_commit: {{ repository.allow_merge_commit | lower }} | |
allow_rebase_merge: {{ repository.allow_rebase_merge | lower }} | |
delete_branch_on_merge: {{ repository.delete_branch_on_merge | lower }} | |
enable_automated_security_fixes: {{ repository.enable_automated_security_fixes() | lower }} | |
enable_vulnerability_alerts: {{ repository.enable_vulnerability_alert() | lower }} | |
labels: | |
{% for label in labels %} | |
- name: {{ label.name }} | |
color: {{ label.color }} | |
description: {{ label.description }} | |
{% endfor %} | |
milestones: | |
{% for milestone in milestones %} | |
- title: {{ milestone.title }} | |
{% if milestone.description | length > 0 %} | |
description: | | |
{{ milestone.description | indent(6)}} | |
{% endif %} | |
state: {{ milestone.state }} | |
{% endfor %} | |
# See https://docs.github.com/en/rest/reference/teams#add-or-update-team-repository-permissions for available options | |
teams: | |
{% for team in teams %} | |
- name: {{ team.name }} | |
permission: {{ team.permission }} | |
{% endfor %} | |
branches: | |
{% for branch in branches %} | |
- name: {{ branch.name }} | |
protection: | |
required_pull_request_reviews: | |
required_approving_review_count: {{ branch.required_approving_review_count }} | |
dismiss_stale_reviews: {{ branch.dismiss_stale_reviews | lower }} | |
require_code_owner_reviews: {{ branch.require_code_owner_reviews | lower }} | |
required_status_checks: | |
strict: {{ branch.required_status_checks.strict | lower }} | |
contexts: [{% for context in branch.required_status_checks.contexts %}'{{ context }}'{% if not loop.last %}, {% endif %}{% endfor %}] | |
enforce_admins: {{ branch.enforce_admins |lower }} | |
required_linear_history: true | |
required_signatures: true | |
{% endfor %} | |
- name: release/* | |
protection: | |
required_pull_request_reviews: | |
required_approving_review_count: 1 | |
dismiss_stale_reviews: true | |
require_code_owner_reviews: false | |
required_status_checks: | |
strict: true | |
contexts: ['continuous-integration/jenkins/branch'] | |
enforce_admins: true | |
required_linear_history: true | |
required_signatures: true | |
- name: support/* | |
protection: | |
required_pull_request_reviews: | |
required_approving_review_count: 1 | |
dismiss_stale_reviews: true | |
require_code_owner_reviews: false | |
required_status_checks: | |
strict: true | |
contexts: ['continuous-integration/jenkins/branch'] | |
enforce_admins: true | |
required_linear_history: true | |
required_signatures: true |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment