]> Git Repo - J-u-boot.git/blobdiff - tools/patman/get_maintainer.py
patman: Correct easy pylint warnings in __main__
[J-u-boot.git] / tools / patman / get_maintainer.py
index 00b49394bc5ef87ca72c2075546c330a883cb8c7..8df3d124bace07e13f87faa8d3698f0aa359d972 100644 (file)
@@ -1,47 +1,61 @@
+# SPDX-License-Identifier: GPL-2.0+
 # Copyright (c) 2012 The Chromium OS Authors.
-#
-# SPDX-License-Identifier:     GPL-2.0+
+# Copyright (c) 2022 Maxim Cournoyer <[email protected]>
 #
 
-import command
-import gitutil
 import os
+import shlex
+import shutil
 
-def FindGetMaintainer():
-    """Look for the get_maintainer.pl script.
+from patman import gitutil
+from u_boot_pylib import command
 
-    Returns:
-        If the script is found we'll return a path to it; else None.
+
+def find_get_maintainer(script_file_name):
+    """Try to find where `script_file_name` is.
+
+    It searches in PATH and falls back to a path relative to the top
+    of the current git repository.
     """
-    try_list = [
-        os.path.join(gitutil.GetTopLevel(), 'scripts'),
-        ]
-    # Look in the list
-    for path in try_list:
-        fname = os.path.join(path, 'get_maintainer.pl')
-        if os.path.isfile(fname):
-            return fname
+    get_maintainer = shutil.which(script_file_name)
+    if get_maintainer:
+        return get_maintainer
 
-    return None
+    git_relative_script = os.path.join(gitutil.get_top_level(),
+                                       script_file_name)
+    if os.path.exists(git_relative_script):
+        return git_relative_script
 
-def GetMaintainer(fname, verbose=False):
-    """Run get_maintainer.pl on a file if we find it.
 
-    We look for get_maintainer.pl in the 'scripts' directory at the top of
-    git.  If we find it we'll run it.  If we don't find get_maintainer.pl
-    then we fail silently.
+def get_maintainer(script_file_name, fname, verbose=False):
+    """Run `script_file_name` on a file.
+
+    `script_file_name` should be a get_maintainer.pl-like script that
+    takes a patch file name as an input and return the email addresses
+    of the associated maintainers to standard output, one per line.
+
+    If `script_file_name` does not exist we fail silently.
 
     Args:
-        fname: Path to the patch file to run get_maintainer.pl on.
+        script_file_name: The file name of the get_maintainer.pl script
+            (or compatible).
+        fname: File name of the patch to process with get_maintainer.pl.
 
     Returns:
         A list of email addresses to CC to.
     """
-    get_maintainer = FindGetMaintainer()
+    # Expand `script_file_name` into a file name and its arguments, if
+    # any.
+    cmd_args = shlex.split(script_file_name)
+    file_name = cmd_args[0]
+    arguments = cmd_args[1:]
+
+    get_maintainer = find_get_maintainer(file_name)
     if not get_maintainer:
         if verbose:
-            print "WARNING: Couldn't find get_maintainer.pl"
+            print("WARNING: Couldn't find get_maintainer.pl")
         return []
 
-    stdout = command.Output(get_maintainer, '--norolestats', fname)
-    return stdout.splitlines()
+    stdout = command.output(get_maintainer, *arguments, fname)
+    lines = stdout.splitlines()
+    return [x.replace('"', '') for x in lines]
This page took 0.023238 seconds and 4 git commands to generate.