commit 1452873415e94a04bf43127a3d3c1b37e41095d7 Author: Nick Mathewson nickm@torproject.org Date: Thu Jun 18 17:41:04 2020 -0400
Add a script to generate good-looking gitlab checklists --- gitlab/gitlab-checklist | 68 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+)
diff --git a/gitlab/gitlab-checklist b/gitlab/gitlab-checklist new file mode 100755 index 0000000..3af269c --- /dev/null +++ b/gitlab/gitlab-checklist @@ -0,0 +1,68 @@ +#!/usr/bin/python3 +import gitlab +import sys + +# +# To use this program, copy a list of tickets from gitlab. It's indended +# that you'll take the list from the tracbot list of parent and child +# tickets, getting a string like: +# " legacy/trac#33679 (moved), legacy/trac#33073 (moved), ..." +# +# This program will talk to gitlab and find what the tickets names are +# and what projects they belong to. It is set up to look in tor, then +# chutney, then legacy/trac, and it is set up to write tickets +# relative to "tor". +# +# The result will be a gitlab checklist. + +if sys.stdin.isatty(): + print("(reading from stdin...)", file=stderr) + +# Parse the input. +input = sys.stdin.read() +input = input.replace("legacy/trac#", " ") +input = input.replace("(moved)", " ") +input = input.replace(",", " ") +issues = input.split() + +gl = gitlab.Gitlab('https://gitlab.torproject.org') + +MAIN_PROJECT = "tor" + +if 0: + all_projects = {} + for p in gl.projects.list(all=True): + all_projects[p.name.lower()] = p + + projects = [ all_projects[x] for x in [ + "tor", "chutney", "legacy/trac" ]] + +else: + projects = [ gl.projects.get(i) for i in + [ 426, # tor + 427, # chutney + 414, # legacy/trac + ] ] + +def get_issue(iid): + for p in projects: + try: + return p.issues.get(iid) + except gitlab.exceptions.GitlabError: + pass + return None + +for iid in issues: + issue = get_issue(iid) + if issue is None: + print(" * [ ] #{} ????".format(iid)) + else: + if issue.state == 'closed': + x = "x" + else: + x = " " + name = gl.projects.get(issue.project_id).name.lower() + if name == MAIN_PROJECT: + name = "" + print(" * [{}] {}#{} {} ".format(x, name, iid, issue.title)) +