Index: git_nav_downstream.py
|
diff --git a/git_nav_downstream.py b/git_nav_downstream.py
|
index 4d8b823cb7e2c4cf1e50025ac3b92fd68ec6c16c..bce850e4163e05652b68faf83a392bccc62bf249 100755
|
--- a/git_nav_downstream.py
|
+++ b/git_nav_downstream.py
|
@@ -9,13 +9,20 @@ is more than one downstream branch, then this script will prompt you to select
|
which branch.
|
"""
|
|
+import argparse
|
import sys
|
|
-from git_common import current_branch, branches, upstream, run, hash_one
|
+from git_common import current_branch, branches, upstream, run_stream, hash_one
|
|
|
-def main(argv):
|
- assert len(argv) == 1, "No arguments expected"
|
+def main(args):
|
+ parser = argparse.ArgumentParser()
|
+ parser.add_argument('--pick',
|
+ help=(
|
+ 'The number to pick if this command would '
|
+ 'prompt'))
|
+ opts = parser.parse_args(args)
|
+
|
upfn = upstream
|
cur = current_branch()
|
if cur == 'HEAD':
|
@@ -29,21 +36,26 @@ def main(argv):
|
if not downstreams:
|
return "No downstream branches"
|
elif len(downstreams) == 1:
|
- run('checkout', downstreams[0])
|
+ run_stream('checkout', downstreams[0], stdout=sys.stdout, stderr=sys.stderr)
|
else:
|
high = len(downstreams) - 1
|
- print
|
while True:
|
print "Please select a downstream branch"
|
for i, b in enumerate(downstreams):
|
print " %d. %s" % (i, b)
|
- r = raw_input("Selection (0-%d)[0]: " % high).strip() or '0'
|
+ prompt = "Selection (0-%d)[0]: " % high
|
+ r = opts.pick
|
+ if r:
|
+ print prompt + r
|
+ else:
|
+ r = raw_input(prompt).strip() or '0'
|
if not r.isdigit() or (0 > int(r) > high):
|
print "Invalid choice."
|
else:
|
- run('checkout', downstreams[int(r)])
|
+ run_stream('checkout', downstreams[int(r)], stdout=sys.stdout,
|
+ stderr=sys.stderr)
|
break
|
|
|
if __name__ == '__main__':
|
- sys.exit(main(sys.argv))
|
+ sys.exit(main(sys.argv[1:]))
|
|