Adding autoloaded completion plugin for homeshick
This commit is contained in:
parent
223197b4e0
commit
0f88a73fad
72
plugins/homeshick/_homeshick
Normal file
72
plugins/homeshick/_homeshick
Normal file
@ -0,0 +1,72 @@
|
||||
#compdef homeshick
|
||||
#autoload
|
||||
|
||||
_homeshick () {
|
||||
local context state line curcontext="$curcontext" ret=1
|
||||
_arguments -n : \
|
||||
{-q,--quiet}'[Suppress status output]' \
|
||||
'(-s --skip)'{-f,--force}'[Overwrite files that already exist]' \
|
||||
'(-f --force)'{-s,--skip}'[Skip files that already exist]' \
|
||||
{-b,--batch}'[Batch-mode: Skip interactive prompt]' \
|
||||
{-h,--help}'[Help message]' \
|
||||
'1:commands:(cd clone generate list check refresh pull link track help)' \
|
||||
'*::arguments:->arguments' \
|
||||
&& ret=0
|
||||
|
||||
case $state in
|
||||
(arguments)
|
||||
curcontext="${curcontext%:*:*}:homeshick-arguments-$words[1]:"
|
||||
case $words[1] in
|
||||
(cd)
|
||||
_arguments \
|
||||
'1:castles:_homeshick_repo_folders' \
|
||||
&& ret=0
|
||||
;;
|
||||
(check|refresh|pull)
|
||||
_arguments \
|
||||
'*: :_homeshick_castles' \
|
||||
&& ret=0
|
||||
;;
|
||||
(link)
|
||||
_arguments \
|
||||
'*: :_homeshick_castles' \
|
||||
&& ret=0
|
||||
;;
|
||||
(track)
|
||||
_arguments \
|
||||
'1: :_homeshick_castles' \
|
||||
"*: :_path_files" \
|
||||
&& ret=0
|
||||
;;
|
||||
(help)
|
||||
_arguments \
|
||||
':command:(cd clone generate list check refresh pull link track help)' \
|
||||
&& ret=0
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
_homeshick_repo_folders() {
|
||||
_path_files -/W $HOME/.homesick/repos
|
||||
}
|
||||
|
||||
_homeshick_castles()
|
||||
{
|
||||
local castles repos="$HOME/.homesick/repos"
|
||||
castles=()
|
||||
for repo in $(find $repos -mindepth 2 -maxdepth 2 -type d -name .git); do
|
||||
castles+=($(_homeshick_basename "${repo%/.git}"))
|
||||
done
|
||||
_describe -t castles 'castle' castles && ret=0
|
||||
}
|
||||
|
||||
_homeshick_basename()
|
||||
{
|
||||
printf -- "${1##*/}"
|
||||
}
|
||||
|
||||
_homeshick "$@"
|
Loading…
Reference in New Issue
Block a user