diff options
Diffstat (limited to 'completions/vpnc')
-rw-r--r-- | completions/vpnc | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/completions/vpnc b/completions/vpnc new file mode 100644 index 0000000..bbdb8ee --- /dev/null +++ b/completions/vpnc @@ -0,0 +1,82 @@ +# 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/<name>.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 |