diff options
Diffstat (limited to 'contrib/cfengine')
-rw-r--r-- | contrib/cfengine | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/contrib/cfengine b/contrib/cfengine new file mode 100644 index 00000000..0f40e0cd --- /dev/null +++ b/contrib/cfengine @@ -0,0 +1,93 @@ +# bash completion for cfengine + +have cfagent && { +_cfagent_options() +{ + COMPREPLY=( $( compgen -W '-a --sysadm -b --force-net-copy -c \ + --no-check-files -C --no-check-mounts -d --debug -D --define \ + -e --no-edits -E --enforce-links -f --file -h --help -H \ + --no-hard-classes -i --no-ifconfig -I --inform -k --no-copy \ + -K --no-lock -l --traverse-links -L --delete-stale-links -m \ + --no-mount -M --no-modules -n --recon --dry-run --just-print \ + -N --negate --undefine -p --parse-only -P --no-processes -q \ + --no-splay -s --no-commands -S --silent -t --no-tidy -u \ + --use-env -U --underscore-classes -v --verbose -V --version \ + -x --no-preconf -X --no-links -w --no-warn --quiet' -- "$cur" ) ) +} + +_cfagent() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -@(f|-file)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + _cfagent_options + fi +} +complete -F _cfagent cfagent + +_cfrun() +{ + local i section cfinputs + + COMPREPLY=() + cur=`_get_cword` + + section=1 + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -- ]]; then + section=$((section + 1)) + fi + done + + case $section in + 1) + prev=${COMP_WORDS[COMP_CWORD-1]} + case $prev in + -f) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-f -h -d -S -T -v' -- $cur ) ) + else + hostfile=${CFINPUTS:-/var/lib/cfengine/inputs}/cfrun.hosts + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -f ]]; then + hostfile=${COMP_WORDS[i+1]} + break + fi + done + [ ! -f $hostfile ] && return 0 + + COMPREPLY=( $(compgen -W "$( grep -v \ + -E '(=|^$|^#)' $hostfile )" -- "$cur" ) ) + fi + ;; + 2) + _cfagent_options + ;; + esac +} +complete -F _cfrun cfrun +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh |