Code

Teach bash about git-submodule and its subcommands
authorShawn O. Pearce <spearce@spearce.org>
Thu, 23 Aug 2007 05:50:49 +0000 (01:50 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Thu, 23 Aug 2007 05:50:49 +0000 (01:50 -0400)
The git-submodule command is new in 1.5.3 and contains a number
of useful subcommands for working on submodules.  We usually try
to offer the subcommands of a git command in the bash completion,
so here they are for git-submodule.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
contrib/completion/git-completion.bash

index 6ed6a51dc6f425ac1d3111fd818473e37adf22fb..a652c88b27cc29f14caba12549770d66cb4e10e4 100755 (executable)
@@ -1024,6 +1024,31 @@ _git_stash ()
        __gitcomp 'list show apply clear'
 }
 
+_git_submodule ()
+{
+       local i c=1 command
+       while [ $c -lt $COMP_CWORD ]; do
+               i="${COMP_WORDS[c]}"
+               case "$i" in
+               add|status|init|update) command="$i"; break ;;
+               esac
+               c=$((++c))
+       done
+
+       if [ $c -eq $COMP_CWORD -a -z "$command" ]; then
+               local cur="${COMP_WORDS[COMP_CWORD]}"
+               case "$cur" in
+               --*)
+                       __gitcomp "--quiet --cached"
+                       ;;
+               *)
+                       __gitcomp "add status init update"
+                       ;;
+               esac
+               return
+       fi
+}
+
 _git ()
 {
        local i c=1 command __git_dir
@@ -1090,6 +1115,7 @@ _git ()
        show)        _git_show ;;
        show-branch) _git_log ;;
        stash)       _git_stash ;;
+       submodule)   _git_submodule ;;
        whatchanged) _git_log ;;
        *)           COMPREPLY=() ;;
        esac
@@ -1138,6 +1164,7 @@ complete -o default -o nospace -F _git_reset git-reset
 complete -o default -o nospace -F _git_shortlog git-shortlog
 complete -o default -o nospace -F _git_show git-show
 complete -o default -o nospace -F _git_stash git-stash
+complete -o default -o nospace -F _git_submodule git-submodule
 complete -o default -o nospace -F _git_log git-show-branch
 complete -o default -o nospace -F _git_log git-whatchanged