11a459660SWolfgang Denk# SPDX-License-Identifier: GPL-2.0+ 2*83d290c5STom Rini# Copyright (c) 2012 The Chromium OS Authors. 321a19d70SDoug Anderson# 421a19d70SDoug Anderson 521a19d70SDoug Andersonimport command 621a19d70SDoug Andersonimport gitutil 721a19d70SDoug Andersonimport os 821a19d70SDoug Anderson 921a19d70SDoug Andersondef FindGetMaintainer(): 1021a19d70SDoug Anderson """Look for the get_maintainer.pl script. 1121a19d70SDoug Anderson 1221a19d70SDoug Anderson Returns: 1321a19d70SDoug Anderson If the script is found we'll return a path to it; else None. 1421a19d70SDoug Anderson """ 1521a19d70SDoug Anderson try_list = [ 1621a19d70SDoug Anderson os.path.join(gitutil.GetTopLevel(), 'scripts'), 1721a19d70SDoug Anderson ] 1821a19d70SDoug Anderson # Look in the list 1921a19d70SDoug Anderson for path in try_list: 2021a19d70SDoug Anderson fname = os.path.join(path, 'get_maintainer.pl') 2121a19d70SDoug Anderson if os.path.isfile(fname): 2221a19d70SDoug Anderson return fname 2321a19d70SDoug Anderson 2421a19d70SDoug Anderson return None 2521a19d70SDoug Anderson 2621a19d70SDoug Andersondef GetMaintainer(fname, verbose=False): 2721a19d70SDoug Anderson """Run get_maintainer.pl on a file if we find it. 2821a19d70SDoug Anderson 2921a19d70SDoug Anderson We look for get_maintainer.pl in the 'scripts' directory at the top of 3021a19d70SDoug Anderson git. If we find it we'll run it. If we don't find get_maintainer.pl 3121a19d70SDoug Anderson then we fail silently. 3221a19d70SDoug Anderson 3321a19d70SDoug Anderson Args: 3421a19d70SDoug Anderson fname: Path to the patch file to run get_maintainer.pl on. 3521a19d70SDoug Anderson 3621a19d70SDoug Anderson Returns: 3721a19d70SDoug Anderson A list of email addresses to CC to. 3821a19d70SDoug Anderson """ 3921a19d70SDoug Anderson get_maintainer = FindGetMaintainer() 4021a19d70SDoug Anderson if not get_maintainer: 4121a19d70SDoug Anderson if verbose: 42a920a17bSPaul Burton print("WARNING: Couldn't find get_maintainer.pl") 4321a19d70SDoug Anderson return [] 4421a19d70SDoug Anderson 4521a19d70SDoug Anderson stdout = command.Output(get_maintainer, '--norolestats', fname) 46d1ccaa47SStefan Brüns lines = stdout.splitlines() 47d1ccaa47SStefan Brüns return [ x.replace('"', '') for x in lines ] 48