diff --git a/git_cl.py b/git_cl.py index 01b5d5775..4d999ed28 100755 --- a/git_cl.py +++ b/git_cl.py @@ -4048,10 +4048,17 @@ def CMDupload(parser, args): help='Modify description before upload. Cannot be used ' 'with --force. It is a noop when --no-squash is set ' 'or a new commit is created.') + parser.add_option('--git-completion-helper', action="store_true", + help=optparse.SUPPRESS_HELP) orig_args = args (options, args) = parser.parse_args(args) + if options.git_completion_helper: + print(' '.join(opt.get_opt_string() for opt in parser.option_list + if opt.help != optparse.SUPPRESS_HELP)) + return + if git_common.is_dirty_git_tree('upload'): return 1 diff --git a/git_cl_completion.sh b/git_cl_completion.sh index 8feb66aff..74687eb30 100755 --- a/git_cl_completion.sh +++ b/git_cl_completion.sh @@ -30,5 +30,19 @@ __git_cl_compute_all_commands () { _git_cl () { __git_cl_compute_all_commands - __gitcomp_nl "${__git_cl_all_commands}" + local subcommands=$(echo "$__git_cl_all_commands" | xargs) + local subcommand=$(__git_find_on_cmdline "$subcommands") + if [[ -z "$subcommand" ]]; then + __gitcomp "$subcommands" + return + fi + + case "$subcommand,$cur" in + upload,--*) + __gitcomp_builtin cl_upload + ;; + "",*) + __gitcomp_nl "${__git_cl_all_commands}" + ;; + esac }