# 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 "$( command 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