attempting a simple completion file

This commit is contained in:
Dave Eddy 2015-08-26 18:10:15 -04:00
parent 16c3747605
commit f1e46a7b21

99
etc/new.triton.completion Normal file
View File

@ -0,0 +1,99 @@
#!/usr/bin/env bash
_triton_default_words() {
# main command
local words=(
-h --help
--version
-v --verbose
help ?
account whoami
info
keys
create-instance create
instances insts
instance inst
instance-audit
start-instance start
stop-instance stop
reboot-instance reboot
delete-instance delete
wait-instance wait
ssh
images imgs
image img
packages pkgs
package pkg
networks
network
)
echo "${words[*]}"
}
_triton_words() {
local cmd=$1
local curword=${COMP_WORDS[COMP_CWORD]}
if [[ $cmd == $curword ]]; then
COMPREPLY=($(compgen -W "$(_triton_default_words)" -- "$curword"))
return
fi
# assume everything supports this
local words=(-j --json -h --help)
case "$cmd" in
account|whoami) ;;
info) ;;
keys) ;;
create|create-instance)
words+=(-n --name --dry-run -w --wait -q --quiet)
;;
start|start-instance|stop|stop-instance|reboot|reboot-instance|delete|delete-instance)
words=(-h --help -w --wait)
;;
wait|wait-instance)
words+=(-q --quiet)
;;
insts|instances)
words+=(-H -o -s)
;;
inst|instance) ;;
images|imgs)
words+=(-a --all -H -o -s -l --long)
;;
image|img) ;;
packages|pkgs)
words+=(-H -o -s -l --long)
;;
package|pkg) ;;
networks)
words+=(-H -o -s -l --long)
;;
network) ;;
ssh)
words+=()
;;
*)
words=($(_triton_default_words))
;;
esac
COMPREPLY=($(compgen -W "${words[*]}" -- "$curword"))
}
_triton() {
local cur=$COMP_CWORD
local i word
for ((i = 1; i <= COMP_CWORD; i++)); do
word=${COMP_WORDS[i]}
if ((i < COMP_CWORD)) && [[ ${word:0:1} == '-' ]]; then
continue
fi
_triton_words "$word"
break
done
}
complete -F _triton triton