# bash completion for vpnc -*- shell-script -*- _vpnc() { local cur prev words cword _init_completion || return case $prev in --help | --long-help | --version | --id | --username | --domain | --ifname | \ --application-version | --local-addr | --local-port | --udp-port | --dpd-idle | \ --target-network | --ifmtu) return ;; --gateway) _known_hosts_real -- "$cur" return ;; --vendor) COMPREPLY=($(compgen -W 'cisco netscreen' -- "$cur")) return ;; --natt-mode) COMPREPLY=($(compgen -W 'natt none force-natt cisco-udp' \ -- "$cur")) return ;; --script | --pid-file | --ca-file) _filedir return ;; --dh) COMPREPLY=($(compgen -W 'dh1 dh2 dh5' -- "$cur")) return ;; --pfs) COMPREPLY=($(compgen -W 'nopfs dh1 dh2 dh5 server' -- "$cur")) return ;; --ifmode) COMPREPLY=($(compgen -W 'tun tap' -- "$cur")) return ;; --debug) COMPREPLY=($(compgen -W '0 1 2 3 99' -- "$cur")) return ;; --auth-mode) COMPREPLY=($(compgen -W 'psk cert hybrid' -- "$cur")) return ;; --ca-dir) _filedir -d return ;; --password-helper) compopt -o filenames COMPREPLY=($(compgen -c -- "$cur")) return ;; esac if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1" --long-help)' -- "$cur")) elif [[ $cur == */* ]]; then # explicit filename _filedir conf else # config name, /etc/vpnc/.conf local IFS=$' \t\n' reset=$(shopt -p nullglob) shopt -s nullglob local -a configs=(/etc/vpnc/*.conf) configs=("${configs[@]##*/}") configs=("${configs[@]%.conf}") $reset IFS=$'\n' compopt -o filenames COMPREPLY=($(compgen -W '${configs[@]}' -- "$cur")) fi } && complete -F _vpnc vpnc # ex: filetype=sh