blob: e1d15ff6ab57235b79f7f4a27c1033f563729304 [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001# SPDX-License-Identifier: GPL-2.0+
Doug Anderson21a19d72012-12-03 14:43:16 +00002# Copyright (c) 2012 The Chromium OS Authors.
3#
Doug Anderson21a19d72012-12-03 14:43:16 +00004
Doug Anderson21a19d72012-12-03 14:43:16 +00005import os
6
Simon Glassbf776672020-04-17 18:09:04 -06007from patman import command
Simon Glassbf776672020-04-17 18:09:04 -06008
Simon Glass967af262022-01-29 14:14:10 -07009def find_get_maintainer(try_list):
Doug Anderson21a19d72012-12-03 14:43:16 +000010 """Look for the get_maintainer.pl script.
11
Simon Glass156e6552020-06-07 06:45:48 -060012 Args:
13 try_list: List of directories to try for the get_maintainer.pl script
14
Doug Anderson21a19d72012-12-03 14:43:16 +000015 Returns:
16 If the script is found we'll return a path to it; else None.
17 """
Doug Anderson21a19d72012-12-03 14:43:16 +000018 # Look in the list
19 for path in try_list:
20 fname = os.path.join(path, 'get_maintainer.pl')
21 if os.path.isfile(fname):
22 return fname
23
24 return None
25
Simon Glass967af262022-01-29 14:14:10 -070026def get_maintainer(dir_list, fname, verbose=False):
Doug Anderson21a19d72012-12-03 14:43:16 +000027 """Run get_maintainer.pl on a file if we find it.
28
29 We look for get_maintainer.pl in the 'scripts' directory at the top of
30 git. If we find it we'll run it. If we don't find get_maintainer.pl
31 then we fail silently.
32
33 Args:
Simon Glass156e6552020-06-07 06:45:48 -060034 dir_list: List of directories to try for the get_maintainer.pl script
Doug Anderson21a19d72012-12-03 14:43:16 +000035 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 """
Simon Glass967af262022-01-29 14:14:10 -070040 get_maintainer = find_get_maintainer(dir_list)
Doug Anderson21a19d72012-12-03 14:43:16 +000041 if not get_maintainer:
42 if verbose:
Paul Burtona920a172016-09-27 16:03:50 +010043 print("WARNING: Couldn't find get_maintainer.pl")
Doug Anderson21a19d72012-12-03 14:43:16 +000044 return []
45
Simon Glassd9800692022-01-29 14:14:05 -070046 stdout = command.output(get_maintainer, '--norolestats', fname)
Stefan BrĂ¼nsd1ccaa42017-12-31 23:21:17 +010047 lines = stdout.splitlines()
48 return [ x.replace('"', '') for x in lines ]