Jeremy White : Improve diagnostic messages.

Alexandre Julliard julliard at winehq.org
Fri Jul 15 05:07:51 CDT 2022


Module: tools
Branch: master
Commit: dd1f0c3aa2f23a65a594cf65a057b81d8c9158c0
URL:    https://gitlab.winehq.org/winehq/tools/-/commit/dd1f0c3aa2f23a65a594cf65a057b81d8c9158c0

Author: Jeremy White <jwhite at codeweavers.com>
Date:   Thu Jul 14 14:21:25 2022 -0500

Improve diagnostic messages.

This includes printing who each MR is assigned to, so we
can more readily check the work of this script.

---

 gitlab/gitlab-to-mail/assign.py | 49 +++++++++++++++++++++++------------------
 1 file changed, 28 insertions(+), 21 deletions(-)

diff --git a/gitlab/gitlab-to-mail/assign.py b/gitlab/gitlab-to-mail/assign.py
index 5a8b914d..9b6acb69 100755
--- a/gitlab/gitlab-to-mail/assign.py
+++ b/gitlab/gitlab-to-mail/assign.py
@@ -20,6 +20,8 @@ def empty_record():
           'globs': [],
           'maintainers': [],
           'people': [],
+          'maintainer_ids': [],
+          'people_ids': [],
     }
     return copy.deepcopy(m)
 
@@ -27,7 +29,7 @@ def fetch_users():
     url = urljoin(settings.GITLAB_URL, f"api/v4/projects/{settings.GITLAB_PROJECT_ID}/users")
     return fetch_all(url, settings)
 
-def append_user(user_map, line, out, verbose=False):
+def append_user(user_map, line, id_array, name_array, verbose=False):
     match = re.match("(.+)<", line)
     if match:
         name = match.group(1).strip()
@@ -36,7 +38,8 @@ def append_user(user_map, line, out, verbose=False):
         return
 
     if name in user_map:
-        out.append(user_map[name])
+        id_array.append(user_map[name])
+        name_array.append(name)
     elif verbose:
         print("Cannot find GitLab account for [{}]".format(name), file=sys.stderr)
 
@@ -69,9 +72,9 @@ def get_maintainers_map(verbose=False):
                 glob += '*'
             m['globs'].append(glob)
         elif line.find("M:\t") == 0:
-            append_user(user_map, line[3:], m['maintainers'], verbose)
+            append_user(user_map, line[3:], m['maintainer_ids'], m['maintainers'], verbose)
         elif line.find("P:\t") == 0:
-            append_user(user_map, line[3:], m['people'], verbose)
+            append_user(user_map, line[3:], m['people_ids'], m['people'], verbose)
         elif line.find("W:\t") == 0:
             pass
         elif len(m['globs']) == 0:
@@ -89,17 +92,21 @@ def post_reviewers(mr_iid, reviewers):
     r.raise_for_status()
 
 def get_assignees(maintainers_map, files):
-    maintainers = []
-    people = []
+    maintainer_ids = []
+    people_ids = []
+    maintainer_names = []
+    people_names = []
     for m in maintainers_map:
         for glob in m['globs']:
             for f in files:
                 if fnmatch.fnmatch(f, glob):
-                    maintainers = maintainers + m['maintainers']
-                    people = people + m['people']
-    if len(maintainers) > 0:
-        return maintainers
-    return people
+                    maintainer_ids = maintainer_ids + m['maintainer_ids']
+                    maintainer_names = maintainer_names + m['maintainers']
+                    people_ids = people_ids + m['people_ids']
+                    people_names = people_names + m['people']
+    if len(maintainer_ids) > 0:
+        return maintainer_ids, maintainer_names
+    return people_ids, people_names
 
 def assign_reviewers(mr_iid, version, maintainers_map, update_db):
     paths = []
@@ -108,23 +115,23 @@ def assign_reviewers(mr_iid, version, maintainers_map, update_db):
     for d in version['diffs']:
         if 'new_path' in d:
             paths.append(d['new_path'])
-    a = get_assignees(maintainers_map, paths)
-    if len(a) > 0:
+    ids, names = get_assignees(maintainers_map, paths)
+    if len(ids) > 0:
         if update_db:
             # set() prunes dupes, list() makes it json transmittable again
-            post_reviewers(mr_iid, list(set(a)))
+            post_reviewers(mr_iid, list(set(ids)))
+            print(f"Asking {names} to review MR {mr_iid}")
         else:
-            print("Debug: would set reviewers for {} to ids {}".format(mr_iid, a))
+            print("Debug: would set reviewers for {} to {}".format(mr_iid, set(names)))
+    else:
+        print(f"No suitable reviewers found for MR {mr_iid}")
 
 def main(argv):
     """ Debug code; pass in a config file and the names of files you want to test """
     maintainers_map = get_maintainers_map(True)
-    a = get_assignees(maintainers_map, argv[2:])
-    users = fetch_users()
-    for id in a:
-        for u in users:
-            if id == u['id']:
-                print("{}: {}".format(id, u['name']))
+    ids, names = get_assignees(maintainers_map, argv[2:])
+    for i in range(len(ids)):
+        print("{}: {}".format(ids[i], names[i]))
 
 if __name__ == "__main__":
     main(sys.argv)




More information about the wine-cvs mailing list