1# Copyright (c) 2012 The Chromium OS Authors.
2#
3# SPDX-License-Identifier:	GPL-2.0+
4#
5
6import command
7import gitutil
8import os
9
10def FindGetMaintainer():
11    """Look for the get_maintainer.pl script.
12
13    Returns:
14        If the script is found we'll return a path to it; else None.
15    """
16    try_list = [
17        os.path.join(gitutil.GetTopLevel(), 'scripts'),
18        ]
19    # Look in the list
20    for path in try_list:
21        fname = os.path.join(path, 'get_maintainer.pl')
22        if os.path.isfile(fname):
23            return fname
24
25    return None
26
27def GetMaintainer(fname, verbose=False):
28    """Run get_maintainer.pl on a file if we find it.
29
30    We look for get_maintainer.pl in the 'scripts' directory at the top of
31    git.  If we find it we'll run it.  If we don't find get_maintainer.pl
32    then we fail silently.
33
34    Args:
35        fname: Path to the patch file to run get_maintainer.pl on.
36
37    Returns:
38        A list of email addresses to CC to.
39    """
40    get_maintainer = FindGetMaintainer()
41    if not get_maintainer:
42        if verbose:
43            print("WARNING: Couldn't find get_maintainer.pl")
44        return []
45
46    stdout = command.Output(get_maintainer, '--norolestats', fname)
47    lines = stdout.splitlines()
48    return [ x.replace('"', '') for x in lines ]
49