53 lines
828 B
Plaintext
53 lines
828 B
Plaintext
#compdef abra
|
|
|
|
_abra () {
|
|
local context state line curcontext="$curcontext" ret=1
|
|
_arguments -n : \
|
|
{-h,--help}'[Help message]' \
|
|
'1:commands:(app server)' \
|
|
'*::arguments:->arguments' \
|
|
&& ret=0
|
|
|
|
case $state in
|
|
(arguments)
|
|
curcontext="${curcontext%:*:*}:abra-arguments-$words[1]:"
|
|
case $words[1] in
|
|
(app)
|
|
_arguments \
|
|
'1: :_abra_apps' \
|
|
&& ret=0
|
|
;;
|
|
(server)
|
|
_arguments \
|
|
'1:servers:_abra_servers' \
|
|
&& ret=0
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
return ret
|
|
}
|
|
|
|
_abra_servers() {
|
|
_path_files -/W $HOME/.abra/servers
|
|
}
|
|
|
|
_abra_apps()
|
|
{
|
|
local newapps apps=($HOME/.abra/servers/*/*.env)
|
|
typeset -a apps
|
|
newapps=()
|
|
for app in $apps; do
|
|
newapps+=($(_abra_basename "${app}"))
|
|
done
|
|
_describe -t apps 'app' newapps
|
|
}
|
|
|
|
_abra_basename()
|
|
{
|
|
printf -- "${1##*/}"
|
|
}
|
|
|
|
_abra "$@"
|