# bash completion for klask _klask() { local cur prev COMPREPLY=() #_get_comp_words_by_ref cur prev cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" case $prev in -f|--format) COMPREPLY=($(compgen -W "txt html dot" -- "$cur")) return 0 ;; -k|--kind) COMPREPLY=($(compgen -W "host mac" -- "$cur")) return 0 ;; -i|--vlan) COMPREPLY=($(compgen -W "$(grep vlan-id: /etc/klask/klask.conf|awk '{print $2}'|xargs echo -n)" -- "$cur")) return 0 ;; -s|--shift) COMPREPLY=($(compgen -W "1 2 3" -- "$cur")) return 0 ;; esac if [[ "$cur" == '-*' || $COMP_CWORD -gt 1 ]] then #COMPREPLY=($(compgen -W '-v --verbose -k --kind -f --format -d --day -i --vlan -m --modulo -s --shift' -- "$cur")) COMPREPLY=($(compgen -W "$(klask help|grep "^ klask ${COMP_WORDS[1]}" | sed -e 's/[\[]/\n/g;'|grep -- '^-'|cut -f 1 -d ']'|cut -f 1 -d ' '|sed -e 's/|/ /g;'|xargs echo -n)" -- "$cur")) else COMPREPLY=($(compgen -W "$($(which klask || echo /usr/sbin/klask) help|grep '^ klask'|awk '{print $2}'|xargs echo -n)" -- "$cur")) fi } && complete -F _klask klask