roll_dep.py: switch to argparse

This makes for cleaner code and better --help.

Also, handle case when deps directory does not exist.

Review URL: https://codereview.chromium.org/1160833005

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@295475 0039d316-1c4b-4281-b951-d872f2087c98
changes/01/332501/1
sbc@chromium.org 10 years ago
parent f0149a3cb5
commit 30e5b23701

@ -5,10 +5,11 @@
"""Rolls DEPS controlled dependency. """Rolls DEPS controlled dependency.
Works only with git checkout and git dependencies. Works only with git checkout and git dependencies. Currently this
script will always roll to the tip of to origin/master.
""" """
import optparse import argparse
import os import os
import re import re
import subprocess import subprocess
@ -53,6 +54,8 @@ def roll(root, deps_dir, key, reviewers, bug):
raise Error('Ensure %s is clean first.' % root) raise Error('Ensure %s is clean first.' % root)
full_dir = os.path.normpath(os.path.join(os.path.dirname(root), deps_dir)) full_dir = os.path.normpath(os.path.join(os.path.dirname(root), deps_dir))
if not os.path.isdir(full_dir):
raise Error('Directory not found: %s' % deps_dir)
head = check_output(['git', 'rev-parse', 'HEAD'], cwd=full_dir).strip() head = check_output(['git', 'rev-parse', 'HEAD'], cwd=full_dir).strip()
if not head in deps_content: if not head in deps_content:
@ -122,21 +125,19 @@ def roll(root, deps_dir, key, reviewers, bug):
def main(): def main():
parser = optparse.OptionParser( parser = argparse.ArgumentParser(description=__doc__)
description=sys.modules[__name__].__doc__, parser.add_argument('-r', '--reviewer',
usage='roll-dep [flags] <dependency path> <variable>')
parser.add_option(
'-r', '--reviewer', default='',
help='To specify multiple reviewers, use comma separated list, e.g. ' help='To specify multiple reviewers, use comma separated list, e.g. '
'-r joe,jane,john. Defaults to @chromium.org') '-r joe,jane,john. Defaults to @chromium.org')
parser.add_option('-b', '--bug', default='') parser.add_argument('-b', '--bug')
options, args = parser.parse_args() parser.add_argument('dep_path', help='path to dependency')
if not len(args) or len(args) > 2: parser.add_argument('key', nargs='?',
parser.error('Expect one or two arguments' % args) help='regexp for dependency in DEPS file')
args = parser.parse_args()
reviewers = None reviewers = None
if options.reviewer: if args.reviewer:
reviewers = options.reviewer.split(',') reviewers = args.reviewer.split(',')
for i, r in enumerate(reviewers): for i, r in enumerate(reviewers):
if not '@' in r: if not '@' in r:
reviewers[i] = r + '@chromium.org' reviewers[i] = r + '@chromium.org'
@ -144,10 +145,10 @@ def main():
try: try:
roll( roll(
os.getcwd(), os.getcwd(),
deps_dir=args[0], args.dep_path,
key=args[1] if len(args) > 1 else None, args.key,
reviewers=reviewers, reviewers=reviewers,
bug=options.bug) bug=args.bug)
except Error as e: except Error as e:
sys.stderr.write('error: %s\n' % e) sys.stderr.write('error: %s\n' % e)

Loading…
Cancel
Save