From 8b8a883718609bc7c185360647157be490f6ac14 Mon Sep 17 00:00:00 2001 From: Sorin Ionescu Date: Sun, 30 Sep 2012 15:53:26 -0400 Subject: [PATCH] Add completion for Git submodule moving and removing --- modules/git/functions/_git-submodule-move | 41 +++++++++++++++++++++ modules/git/functions/_git-submodule-remove | 27 ++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 modules/git/functions/_git-submodule-move create mode 100644 modules/git/functions/_git-submodule-remove diff --git a/modules/git/functions/_git-submodule-move b/modules/git/functions/_git-submodule-move new file mode 100644 index 0000000..ab8cd1b --- /dev/null +++ b/modules/git/functions/_git-submodule-move @@ -0,0 +1,41 @@ +#compdef git-submodule-move +#autoload + +# +# Completes git-submodule-move. +# +# Authors: +# Sorin Ionescu +# + +if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then + return 1 +fi + +local state expl ret=1 +local -a submodules +local submodule + +_arguments -C -s -S \ + '1::args:->submodule' \ + '2::args:->directory' && ret=0 + +case "$state" in + (submodule) + while IFS=$'\n' read submodule; do + submodules+=("$submodule") + done < <( + git config --file "$(git-root)/.gitmodules" --list \ + | grep '.path=' \ + | cut -d= -f2- + ) + + _describe -t submodule 'submodules' submodules && ret=0 + ;; + (directory) + _wanted directories expl 'directory' _path_files -/ || _message 'directory' + ;; +esac + +return $ret + diff --git a/modules/git/functions/_git-submodule-remove b/modules/git/functions/_git-submodule-remove new file mode 100644 index 0000000..1460dd0 --- /dev/null +++ b/modules/git/functions/_git-submodule-remove @@ -0,0 +1,27 @@ +#compdef git-submodule-remove +#autoload + +# +# Completes git-submodule-remove. +# +# Authors: +# Sorin Ionescu +# + +if ! is-true "$(git rev-parse --is-inside-work-tree 2> /dev/null)"; then + return 1 +fi + +local -a submodules +local submodule + +while IFS=$'\n' read submodule; do + submodules+=("$submodule") +done < <( + git config --file "$(git-root)/.gitmodules" --list \ + | grep '.path=' \ + | cut -d= -f2- +) + +_describe -t submodule 'submodules' submodules && return 0 +