forked from ungleich-public/cdist
Implement bash and zsh completions.
This commit is contained in:
parent
ab74da9c29
commit
e4fe8e8f37
2 changed files with 107 additions and 0 deletions
59
completions/bash/cdist-completion.bash
Normal file
59
completions/bash/cdist-completion.bash
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
_cdist()
|
||||||
|
{
|
||||||
|
local cur prev prevprev opts cmds projects
|
||||||
|
COMPREPLY=()
|
||||||
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||||
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
||||||
|
prevprev="${COMP_WORDS[COMP_CWORD-2]}"
|
||||||
|
opts="-h --help -d --debug -v --verbose -V --version"
|
||||||
|
cmds="banner shell config"
|
||||||
|
|
||||||
|
case "${prevprev}" in
|
||||||
|
shell)
|
||||||
|
case "${prev}" in
|
||||||
|
-s|--shell)
|
||||||
|
shells=$(grep -v '^#' /etc/shells)
|
||||||
|
COMPREPLY=( $(compgen -W "${shells}" -- ${cur}) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "${prev}" in
|
||||||
|
-*)
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
banner)
|
||||||
|
opts="-h --help -d --debug -v --verbose"
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
shell)
|
||||||
|
opts="-h --help -d --debug -v --verbose -s --shell"
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
config)
|
||||||
|
opts="-h --help -d --debug -v --verbose \
|
||||||
|
-c --conf-dir -f --file -i --initial-manifest -n --dry-run \
|
||||||
|
-o --out-dir -p --parallel -s --sequential --remote-copy \
|
||||||
|
--remote-exec"
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [[ ${cur} == -* ]]; then
|
||||||
|
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
COMPREPLY=( $(compgen -W "${cmds}" -- ${cur}) )
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
complete -F _cdist cdist
|
48
completions/zsh/_cdist
Normal file
48
completions/zsh/_cdist
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
#compdef cdist
|
||||||
|
|
||||||
|
_cdist()
|
||||||
|
{
|
||||||
|
local curcontext="$curcontext" state line
|
||||||
|
typeset -A opt_args
|
||||||
|
|
||||||
|
_arguments \
|
||||||
|
'1: :->opts_cmds'\
|
||||||
|
'*: :->opts'
|
||||||
|
|
||||||
|
case $state in
|
||||||
|
opts_cmds)
|
||||||
|
_arguments '1:Options and commands:(banner config shell -h --help -d --debug -v --verbose -V --version)'
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
case $words[2] in
|
||||||
|
-*)
|
||||||
|
opts=(-h --help -d --debug -v --verbose -V --version)
|
||||||
|
compadd "$@" -- $opts
|
||||||
|
;;
|
||||||
|
banner)
|
||||||
|
opts=(-h --help -d --debug -v --verbose)
|
||||||
|
compadd "$@" -- $opts
|
||||||
|
;;
|
||||||
|
shell)
|
||||||
|
case $words[3] in
|
||||||
|
-s|--shell)
|
||||||
|
shells=($(grep -v '^#' /etc/shells))
|
||||||
|
compadd "$@" -- $shells
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
opts=(-h --help -d --debug -v --verbose -s --shell)
|
||||||
|
compadd "$@" -- $opts
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
config)
|
||||||
|
opts=(-h --help -d --debug -v --verbose -c --conf-dir -f --file -i --initial-manifest -n --dry-run -o --out-dir -p --parallel -s --sequential --remote-copy --remote-exec)
|
||||||
|
compadd "$@" -- $opts
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_cdist "$@"
|
Loading…
Reference in a new issue