summaryrefslogtreecommitdiff
path: root/completions/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'completions/puppet')
-rw-r--r--completions/puppet310
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