diff options
Diffstat (limited to 'completions/puppet')
-rw-r--r-- | completions/puppet | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/completions/puppet b/completions/puppet new file mode 100644 index 00000000..776c8492 --- /dev/null +++ b/completions/puppet @@ -0,0 +1,310 @@ +# bash completion for puppet -*- shell-script -*- + +_puppet_logdest() +{ + if [ -z "$cur" ]; then + COMPREPLY=( $( compgen -W 'syslog console /' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'syslog console' -- "$cur" ) ) + _filedir + fi +} + +_puppet_digest() +{ + COMPREPLY=( $( compgen -W 'MD5 MD2 SHA1 SHA256' -- "$cur" ) ) +} + +_puppet_certs() +{ + local puppetca="puppet cert" + PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin type puppetca &>/dev/null \ + && puppetca=puppetca + + if [[ "$1" = '--all' ]]; then + cert_list=$( $puppetca --list --all | sed -e 's/^[+-]\?\s*\(\S\+\)\s\+.*$/\1/' ) + else + cert_list=$( $puppetca --list ) + fi + COMPREPLY+=( $( compgen -W "$cert_list" -- "$cur" ) ) +} + +_puppet_types() +{ + puppet_types=$( puppet describe --list | sed -e 's/^\(\S\+\).*$/\1/' ) + COMPREPLY+=( $( compgen -W "$puppet_types" -- "$cur" ) ) +} + +_puppet_references() +{ + local puppetdoc="puppet doc" + PATH=$PATH:/sbin:/usr/sbin:/usr/local/sbin type puppetdoc &>/dev/null \ + && puppetdoc=puppetdoc + + puppet_doc_list=$( $puppetdoc --list | sed -e 's/^\(\S\+\).*$/\1/' ) + COMPREPLY+=( $( compgen -W "$puppet_doc_list" -- "$cur" ) ) +} + +_puppet() +{ + local cur prev words cword + _init_completion || return + + local xspec helpopts command subcommand + + case $prev in + --help) + return 0 + ;; + esac + + case ${words[0]} in + puppetmasterd) + command=master + ;; + puppetd) + command=agent + ;; + puppetca) + command=cert + ;; + ralsh) + command=resource + ;; + puppetrun) + command=kick + ;; + puppetqd) + command=queue + ;; + filebucket) + command=filebucket + ;; + puppetdoc) + command=doc + ;; + pi) + command=describe + ;; + puppet) + case ${words[1]} in + agent|apply|cert|describe|doc|filebucket|kick|master|queue|resource) + command=${words[1]} + ;; + *.pp|*.rb|-*) + command=apply + ;; + *) + COMPREPLY=( $( compgen -W 'agent apply cert describe doc \ + filebucket kick master queue resource' -- "$cur" ) ) + return 0 + ;; + esac + esac + + case $command in + agent) + case $prev in + --fqdn) + return 0 + ;; + --logdest) + _puppet_logdest + return 0 + ;; + --serve) + # From /usr/lib/ruby/1.8/puppet/network/handler/ + COMPREPLY=( $( compgen -W 'ca filebucket fileserver master \ + report runner status' -- "$cur" ) ) + return 0 + ;; + --digest) + _puppet_digest + return 0 + ;; + --waitforcert) + COMPREPLY=( $( compgen -W '0 15 30 60 120' -- "$cur" ) ) + return 0 + ;; + *) + COMPREPLY=( $( compgen -W '--daemonize --no-daemonize \ + --debug --detailed-exitcodes --disable --enable \ + --help --fqdn --logdest --onetime --serve --test \ + --noop --digest --fingerprint --version --verbose \ + --waitforcert --no-client' -- "$cur" ) ) + return 0 + esac + ;; + apply) + case $prev in + --logdest) + _puppet_logdest + return 0 + ;; + *) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version --debug \ + --verbose --execute --detailed-exitcodes \ + --logdest' -- "$cur" ) ) + else + _filedir + fi + return 0 + esac + ;; + cert) + case $prev in + --digest) + _puppet_digest + return 0 + ;; + *) + subcommand=$prev + COMPREPLY=( $( compgen -W '--digest --debug --verbose' \ + -- "$cur" ) ) + case $subcommand in + --generate) + _known_hosts_real "$cur" + return 0 + ;; + --clean|--fingerprint|--revoke|--verify) + COMPREPLY+=( $( compgen -W '--all' -- "$cur" ) ) + _puppet_certs --all + return 0 + ;; + --sign) + COMPREPLY+=( $( compgen -W '--all' -- "$cur" ) ) + _puppet_certs + return 0 + ;; + --list|--print) + COMPREPLY+=( $( compgen -W '--all' -- "$cur" ) ) + return 0 + ;; + *) + COMPREPLY=( $( compgen -W '--clean --generate \ + --help --list --print --fingerprint --revoke \ + --sign --version --verify' -- "$cur" ) ) + return 0 + esac + esac + ;; + describe) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --short --providers --list \ + --meta' -- "$cur" ) ) + else + _puppet_types + fi + return 0 + ;; + doc) + case $prev in + --outputdir) + _filedir -d + return 0 + ;; + --mode) + COMPREPLY=( $( compgen -W 'text trac pdf rdoc' -- "$cur" ) ) + return 0 + ;; + --reference) + _puppet_references + return 0 + ;; + *) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all --help --outputdir \ + --mode --reference --charset --list' -- "$cur" ) ) + else + _filedir + fi + return 0 + esac + ;; + filebucket) + case $prev in + --server) + _known_hosts_real "$cur" + return 0 + ;; + --bucket) + _filedir -d + return 0 + ;; + *) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version --debug \ + --verbose --local --remote --server --bucket' \ + -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'backup get restore' \ + -- "$cur" ) ) + _filedir + fi + return 0 + esac + ;; + kick) + case $prev in + --class) + return 0 + ;; + --host) + _known_hosts_real "$cur" + return 0 + ;; + --tag) + return 0 + ;; + *) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all --class --debug \ + --foreground --help --host --no-fqdn \ + --ignoreschedules --tag --test --ping' -- "$cur" ) ) + else + _known_hosts_real "$cur" + fi + return 0 + esac + ;; + master) + case $prev in + --logdest) + _puppet_logdest + return 0 + ;; + *) + COMPREPLY=( $( compgen -W '--daemonize --no-daemonize \ + --debug --help --logdest --verbose --version' \ + -- "$cur" ) ) + return 0 + esac + ;; + queue) + case $prev in + --logdest) + _puppet_logdest + return 0 + ;; + *) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version --debug \ + --verbose --execute --detailed-exitcodes \ + --logdest' -- "$cur" ) ) + else + _filedir + fi + return 0 + esac + ;; + resource|*) + COMPREPLY=( $( compgen -W '--help --version --debug --verbose' \ + -- "$cur" ) ) + return 0 + ;; + esac +} && +complete -F _puppet puppetmasterd puppetd puppetca ralsh puppetrun puppetqd filebucket puppetdoc puppet + +# ex: ts=4 sw=4 et filetype=sh |