-#!/usr/bin/env python
+#!/usr/bin/env python3
import argparse
import getdeveloperlib
+import sys
+
def parse_args():
parser = argparse.ArgumentParser()
help='find developers in charge of this architecture')
parser.add_argument('-p', dest='package', action='store',
help='find developers in charge of this package')
+ parser.add_argument('-f', dest='files', nargs='*',
+ help='find developers in charge of these files')
parser.add_argument('-c', dest='check', action='store_const',
const=True, help='list files not handled by any developer')
+ parser.add_argument('-e', dest='email', action='store_const',
+ const=True, help='only list affected developer email addresses')
+ parser.add_argument('-v', dest='validate', action='store_const',
+ const=True, help='validate syntax of DEVELOPERS file')
+ parser.add_argument('-d', dest='filename', action='store', default=None,
+ help='override the default DEVELOPERS file (for debug)')
return parser.parse_args()
+
def __main__():
- devs = getdeveloperlib.parse_developers()
- if devs is None:
- sys.exit(1)
args = parse_args()
# Check that only one action is given
action += 1
if args.package is not None:
action += 1
+ if args.files:
+ action += 1
if args.check:
action += 1
+ if args.validate:
+ action += 1
if len(args.patches) != 0:
action += 1
if action > 1:
print("No action specified")
return
+ devs = getdeveloperlib.parse_developers(args.filename)
+ if devs is None:
+ sys.exit(1)
+
+ # Validation is done by parse_developers() above and we error out
+ # if the validation didn't work, so if we reach here, it means
+ # validation passed, so we can simply bail out in success.
+ if args.validate:
+ return
+
# Handle the check action
if args.check:
files = getdeveloperlib.check_developers(devs)
print(dev.name)
return
+ # Handle the files action
+ if args.files is not None:
+ for dev in devs:
+ for f in args.files:
+ if dev.hasfile(f):
+ print(dev.name)
+ break
+
# Handle the patches action
if len(args.patches) != 0:
(files, infras) = getdeveloperlib.analyze_patches(args.patches)
if i in dev.infras:
matching_devs.add(dev.name)
- for dev in matching_devs:
- result += " --cc \"%s\"" % dev
+ if args.email:
+ for dev in matching_devs:
+ print(dev)
+ else:
+ for dev in matching_devs:
+ result += " --cc \"%s\"" % dev
- if result != "":
- print("git send-email %s" % result)
+ if result != "":
+ print("git send-email %s" % result)
-__main__()
+__main__()