123 lines
3.6 KiB
Bash
123 lines
3.6 KiB
Bash
#compdef antidote
|
|
|
|
function _antidote_subcommands {
|
|
local usage=$(
|
|
antidote --help |
|
|
${__adote_awkcmd:-awk} '
|
|
BEGIN{OFS=":"; p=0}
|
|
/^commands:$/ {p=1; next}
|
|
!p{next}
|
|
{ for(i=3; i<=NF; i++) { $2=$2" "$i } }
|
|
{ print $1,$2 }
|
|
'
|
|
)
|
|
local -a subcommands=("${(@f)usage}")
|
|
_describe -t subcommands 'subcommand' subcommands "$@"
|
|
}
|
|
|
|
function _antidote_installed_bundles {
|
|
local -a bundles=("${(@f)$(antidote list -s)}")
|
|
_describe 'installed bundles' bundles
|
|
}
|
|
|
|
function _antidote_bundle_kinds {
|
|
local -a kinds=(
|
|
'autoload' 'clone' 'defer' 'fpath' 'path' 'zsh'
|
|
)
|
|
_describe 'bundle kinds' kinds
|
|
}
|
|
|
|
function _antidote {
|
|
typeset -A opt_args
|
|
local context state line
|
|
local curcontext="$curcontext"
|
|
local ret=1
|
|
|
|
_arguments -C \
|
|
'(- *)'{-v,--version}'[Show version]' \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
'1: :_antidote_subcommands' \
|
|
'*:: :->subcmds' && return 0
|
|
|
|
case "$state" in
|
|
(subcmds)
|
|
case $words[1] in
|
|
(bundle)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
&& ret=0
|
|
;;
|
|
(help)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
&& ret=0
|
|
;;
|
|
(home)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
&& ret=0
|
|
;;
|
|
(init)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
&& ret=0
|
|
;;
|
|
(install|script)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
'(-k --kind)'{-k,--kind}'[The kind of bundle]:kinds:_antidote_bundle_kinds' \
|
|
'(-p --path)'{-p,--path}'[A relative subpath within the bundle where the plugin is located]' \
|
|
'(-a --autoload)'{-a,--autoload}'[A relative subpath within the bundle where autoload function files are located]' \
|
|
'(-c --conditional)'{-c,--conditional}'[A conditional function used to check whether to load the bundle]' \
|
|
'(-b --branch)'{-b,--branch}'[The git branch to use]' \
|
|
'(--pre)--pre[A function to be called prior to loading the bundle]' \
|
|
'(--post)--post[A function to be called after loading the bundle]' \
|
|
&& ret=0
|
|
;;
|
|
(list)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
'(-s --short)'{-s,--short}'[Show shortened repos where possible]' \
|
|
'(-d --dirs)'{-d,--dirs}'[Show only bundle directories]' \
|
|
'(-u --url)'{-u,--url}'[Show bundle URLs]' \
|
|
&& ret=0
|
|
;;
|
|
(load)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
&& ret=0
|
|
;;
|
|
(path)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
&& ret=0
|
|
;;
|
|
(purge)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
'(-a --all)'{-a,--all}'[Purge all cloned bundles]' \
|
|
"*::antidote bundles:_antidote_installed_bundles" \
|
|
&& ret=0
|
|
;;
|
|
(update)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
'(-s --selp)'{-s,--self}'[Update antidote]' \
|
|
'(-b --bundles)'{-b,--bundles}'[Update bundles]' \
|
|
&& ret=0
|
|
;;
|
|
(*)
|
|
_arguments \
|
|
'(- *)'{-h,--help}'[Show usage information]' \
|
|
'*: :_files' \
|
|
&& ret=0
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
return ret
|
|
}
|
|
_antidote "$@"
|
|
|
|
# vim: ft=zsh sw=2 ts=2 et
|