diff options
Diffstat (limited to '')
-rw-r--r-- | .ci/scripts/merge/apply-patches-by-label-private.py | 45 | ||||
-rw-r--r-- | .ci/scripts/merge/apply-patches-by-label.py | 16 |
2 files changed, 57 insertions, 4 deletions
diff --git a/.ci/scripts/merge/apply-patches-by-label-private.py b/.ci/scripts/merge/apply-patches-by-label-private.py new file mode 100644 index 000000000..fe0acd510 --- /dev/null +++ b/.ci/scripts/merge/apply-patches-by-label-private.py @@ -0,0 +1,45 @@ +# Download all pull requests as patches that match a specific label +# Usage: python download-patches-by-label.py <Label to Match> <Root Path Folder to DL to> + +import requests, sys, json, shutil, subprocess, os, traceback + +org = os.getenv("PRIVATEMERGEORG", "yuzu-emu") +repo = os.getenv("PRIVATEMERGEREPO", "yuzu-private") +tagline = sys.argv[3] +user = sys.argv[1] + +dl_list = {} + +TAG_NAME = sys.argv[2] + +def check_individual(repo_id, pr_id): + url = 'https://%sdev.azure.com/%s/%s/_apis/git/repositories/%s/pullRequests/%s/labels?api-version=5.1-preview.1' % (user, org, repo, repo_id, pr_id) + response = requests.get(url) + if (response.ok): + try: + js = response.json() + return any(tag.get('name') == TAG_NAME for tag in js['value']) + except: + return False + return False + +def merge_pr(pn, ref): + print("Matched PR# %s" % pn) + print(subprocess.check_output(["git", "fetch", "https://%sdev.azure.com/%s/_git/%s" % (user, org, repo), ref, "-f"])) + print(subprocess.check_output(["git", "merge", "--squash", 'origin/' + ref.replace('refs/heads/','')])) + print(subprocess.check_output(["git", "commit", "-m\"Merge %s PR %s\"" % (tagline, pn)])) + +def main(): + url = 'https://%sdev.azure.com/%s/%s/_apis/git/pullrequests?api-version=5.1' % (user, org, repo) + response = requests.get(url) + if (response.ok): + js = response.json() + tagged_prs = filter(lambda pr: check_individual(pr['repository']['id'], pr['pullRequestId']), js['value']) + map(lambda pr: merge_pr(pr['pullRequestId'], pr['sourceRefName']), tagged_prs) + +if __name__ == '__main__': + try: + main() + except: + traceback.print_exc(file=sys.stdout) + sys.exit(-1) diff --git a/.ci/scripts/merge/apply-patches-by-label.py b/.ci/scripts/merge/apply-patches-by-label.py index b346001a5..43ed74d7f 100644 --- a/.ci/scripts/merge/apply-patches-by-label.py +++ b/.ci/scripts/merge/apply-patches-by-label.py @@ -1,7 +1,9 @@ # Download all pull requests as patches that match a specific label # Usage: python download-patches-by-label.py <Label to Match> <Root Path Folder to DL to> -import requests, sys, json, urllib3.request, shutil, subprocess +import requests, sys, json, urllib3.request, shutil, subprocess, os + +tagline = sys.argv[2] http = urllib3.PoolManager() dl_list = {} @@ -12,17 +14,23 @@ def check_individual(labels): return True return False -try: - url = 'https://api.github.com/repos/yuzu-emu/yuzu/pulls' +def do_page(page): + url = 'https://api.github.com/repos/yuzu-emu/yuzu/pulls?page=%s' % page response = requests.get(url) if (response.ok): j = json.loads(response.content) + if j == []: + return for pr in j: if (check_individual(pr["labels"])): pn = pr["number"] print("Matched PR# %s" % pn) print(subprocess.check_output(["git", "fetch", "https://github.com/yuzu-emu/yuzu.git", "pull/%s/head:pr-%s" % (pn, pn), "-f"])) print(subprocess.check_output(["git", "merge", "--squash", "pr-%s" % pn])) - print(subprocess.check_output(["git", "commit", "-m\"Merge PR %s\"" % pn])) + print(subprocess.check_output(["git", "commit", "-m\"Merge %s PR %s\"" % (tagline, pn)])) + +try: + for i in range(1,30): + do_page(i) except: sys.exit(-1) |