[tor-commits] [githax/master] Add a script to generate good-looking gitlab checklists

nickm at torproject.org nickm at torproject.org
Thu Jun 18 21:41:31 UTC 2020


commit 1452873415e94a04bf43127a3d3c1b37e41095d7
Author: Nick Mathewson <nickm at 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))
+



More information about the tor-commits mailing list