75 lines
3.3 KiB
Python
75 lines
3.3 KiB
Python
#!/usr/bin/env python
|
|
from __future__ import print_function
|
|
|
|
import os
|
|
from github import Github
|
|
|
|
github_token = os.getenv("GITHUB_TOKEN")
|
|
packages_dir = "./packages"
|
|
|
|
if not github_token:
|
|
print("$GITHUB_TOKEN environment variable missing.")
|
|
quit()
|
|
|
|
gh = Github(github_token)
|
|
|
|
for basename in os.listdir(packages_dir):
|
|
path = os.path.join(packages_dir, basename)
|
|
if os.path.isdir(path):
|
|
print("===Entering repo `" + basename + "`")
|
|
repo = gh.get_repo("angel-dart/" + basename)
|
|
if repo.owner.login != "angel-dart-archive":
|
|
# Manually do the transfer...
|
|
params = {"new_owner": "angel-dart-archive"}
|
|
repo._requester.requestJsonAndCheck(
|
|
"POST", repo.url + "/transfer", input=params,
|
|
)
|
|
print("======Transferred `" + basename + "` to angel-dart-archive")
|
|
if repo.archived:
|
|
print("======SKIPPED ARCHIVED REPO")
|
|
continue
|
|
new_desc = "moved to angel-dart/angel/packages/" + basename
|
|
new_homepage = "https://github.com/angel-dart/angel/tree/master/packages/" + basename
|
|
if (repo.description != new_desc) or (repo.homepage != new_homepage):
|
|
repo.edit(description=new_desc, homepage=new_homepage)
|
|
print("======Changed description+homepage")
|
|
|
|
open_issues = repo.get_issues(state="open")
|
|
for issue in open_issues:
|
|
label_name = "package:" + basename
|
|
label_found = False
|
|
for label in issue.labels:
|
|
if label.name == label_name:
|
|
label_found = True
|
|
break
|
|
if not label_found:
|
|
issue.edit(labels=[label_name])
|
|
print("======Labeled issue \"" + issue.title + "\"")
|
|
|
|
# Duplicate the issue in angel-dart/angel...
|
|
angel = gh.get_repo("angel-dart/angel")
|
|
body = "*This issue was originally created by @" + issue.user.login
|
|
body += " here, before being automatically moved: "
|
|
body += "\n" + issue.html_url
|
|
body += "*\n\n---\n" + issue.body
|
|
new_issue = angel.create_issue(title=issue.title, labels=[label_name], body=body)
|
|
for comment in issue.get_comments():
|
|
comment_body = "@" + comment.user.login + " commented:\n\n" + comment.body
|
|
new_issue.create_comment(comment_body)
|
|
new_body = "*This issue was automatically moved to: " + new_issue.html_url + "."
|
|
issue.edit(state='closed', body=new_body)
|
|
print("======Moved issue \"" + issue.title + "\"")
|
|
|
|
open_pulls = repo.get_pulls(state="open")
|
|
for pull in open_pulls:
|
|
msg = "Hi, @" + pull.user.login + "! Thanks again for this PR."
|
|
msg += "\n\nAll Angel subprojects have been consolidated into a single monorepo: "
|
|
msg += "https://github.com/angel-dart/angel."
|
|
msg += "\n\nPlease fork the monorepo, and open a new PR there instead."
|
|
pull.create_issue_comment(msg)
|
|
pull.edit(state='closed')
|
|
print("======Commented on + closed PR \"" + pull.title + "\"")
|
|
|
|
# Archive the repository!
|
|
repo.edit(archived=True)
|
|
print("======Archived `" + basename + "`. Rest in Peace!")
|