# bash completion for secret-tool(1) -*- shell-script -*- _secret_tool() { local cur prev words cword split _init_completion -s || return $split && return local -i i local mode word for i in ${!words[*]}; do if [[ $i -gt 0 && ${words[i]} != -* ]]; then ((i != cword)) && mode=${words[i]} break fi done if [[ ! -v mode ]]; then local -a modes modes=($("$1" nonexistent-mode 2>&1 | while read -r first second third rest; do if [[ $first == "${1##*/}" ]]; then printf "%s\n" "$second" elif [[ $first == usage: && $second == "${1##*/}" ]]; then printf "%s\n" "$third" fi done)) COMPREPLY=($(compgen -W '${modes[@]}' -- "$cur")) return fi case $mode in store) if [[ ${words[*]} != *\ --label[\ =]* ]]; then COMPREPLY=($(compgen -W "--label=" -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace fi ;; search) local -A opts=([--all]="" [--unlock]="") for word in "${words[@]:2}"; do [[ $word ]] && unset opts["$word"] done COMPREPLY=($(compgen -W '${opts[@]}' -- "$cur")) ;; esac } && complete -F _secret_tool secret-tool # ex: filetype=sh