This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
osmith gerrit-no-reply at lists.osmocom.orgosmith has uploaded this change for review. ( https://gerrit.osmocom.org/11672 Change subject: use argparse ...................................................................... use argparse Change-Id: Ib2207346003ffb28432b1cd1bac6250ad8a1a060 --- M src/gits 1 file changed, 40 insertions(+), 48 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-dev refs/changes/72/11672/1 diff --git a/src/gits b/src/gits index 3528915..316fd03 100755 --- a/src/gits +++ b/src/gits @@ -26,8 +26,6 @@ doc = '''gits: conveniently manage several git subdirectories. Instead of doing the 'cd foo; git status; cd ../bar; git status' dance, this helps to save your time with: status, fetch, rebase, ... - -See 'gits help' ''' re_status_mods = re.compile('^\t(modified|deleted):.*') @@ -223,21 +221,12 @@ print(format_summaries(infos)) -def cmd_status(): - if len(sys.argv) > 2: - error('no arguments allowed') - print_status() - - -def cmd_do(argv=None): - if argv is None: - argv = sys.argv[2:] +def cmd_do(argv): for git_dir in git_dirs(): git(git_dir, *argv, may_fail=True, section_marker=True) -def cmd_sh(): - cmd = sys.argv[2:] +def cmd_sh(cmd): for git_dir in git_dirs(): print('\n===== %s =====' % git_dir) print('+ %s' % cmd_to_str(cmd)) @@ -358,10 +347,6 @@ return orig_branch -def cmd_fetch(): - cmd_do(['fetch'] + sys.argv[2:]) - - def cmd_rebase(): skipped = [] for git_dir in git_dirs(): @@ -385,39 +370,46 @@ print('\nskipped: %s' % ' '.join(skipped)) -commands = { - 'status': (cmd_status, 'Show a branch summary and indicate modifications.'), - 'fetch': (cmd_fetch, "Run 'git fetch' in each clone; useful before `gits rebase`."), - 'rebase': (cmd_rebase, 'Interactively ff-merge master and rebase current branches.'), - 'sh': (cmd_sh, 'Run arbitrary shell command in each clone (`gits sh echo hi`).'), - 'do': (cmd_do, 'Run arbitrary git command in each clone (`gits do clean -dxf`).'), - 'help': (cmd_help, 'List gits commands.'), -} +def parse_args(): + parser = argparse.ArgumentParser(description=doc) + sub = parser.add_subparsers(title="action", dest="action") + sub.required = True -aliases = { - 's': 'status', - 'st': 'status', - 'r': 'rebase', - 're': 'rebase', - 'f': 'fetch', - '-h': 'help', -} + sub.add_parser("status", aliases=["st", "s"], + help="show a branch summary and indicate modifications") + + fetch = sub.add_parser("fetch", aliases=["f"], + help="run 'git fetch' in each clone; useful before `gits rebase`") + fetch.add_argument("remainder", nargs=argparse.REMAINDER, + help="additional arguments to be passed to git fetch") + + sub.add_parser("rebase", aliases=["r", "re"], + help="interactively ff-merge master and rebase current branches") + + sh = sub.add_parser("sh", + help="run arbitrary shell command in each clone (`gits sh echo hi`)") + sh.add_argument("remainder", nargs=argparse.REMAINDER, + help="command to run in each clone") + + do = sub.add_parser("do", + help="run arbitrary git command in each clone (`gits do clean -dxf`)") + do.add_argument("remainder", nargs=argparse.REMAINDER, + help="git command to run in each clone") + + return parser.parse_args() + if __name__ == '__main__': - - if len(sys.argv) < 2: - usage('Pass at least one argument to tell me what to do.') - - command_str = sys.argv[1] - alias_for = aliases.get(command_str) - if alias_for: - command_str = alias_for - command = commands.get(command_str) - - if command: - func, doc = command - func() - else: - error('unknown command: %r\n`gits help` may help' % command_str) + args = parse_args() + if args.action in ["status", "s", "st"]: + print_status() + elif args.action in ["fetch", "f"]: + cmd_do(['fetch'] + args.remainder) + elif args.action in ["rebase", "r"]: + cmd_rebase() + elif args.action == "sh": + cmd_sh(args.remainder) + elif args.action == "do": + cmd_do(args.remainder) # vim: shiftwidth=4 expandtab tabstop=4 -- To view, visit https://gerrit.osmocom.org/11672 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-dev Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: Ib2207346003ffb28432b1cd1bac6250ad8a1a060 Gerrit-Change-Number: 11672 Gerrit-PatchSet: 1 Gerrit-Owner: osmith <osmith at sysmocom.de> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20181108/77827f10/attachment.htm>