diff options
Diffstat (limited to 'completions/mcrypt')
-rw-r--r-- | completions/mcrypt | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/completions/mcrypt b/completions/mcrypt new file mode 100644 index 0000000..0c3ab5e --- /dev/null +++ b/completions/mcrypt @@ -0,0 +1,67 @@ +# mcrypt(1) completion -*- shell-script -*- +# by Ariel Fermani <the_end@bbs.frc.utn.edu.ar> + +_mcrypt() +{ + local cur prev words cword + _init_completion || return + + case $prev in + -g | --openpgp-z) + COMPREPLY=($(compgen -W '{0..9}' -- "$cur")) + return + ;; + -o | --keymode) + COMPREPLY=($(compgen -W '$($1 --list-keymodes 2>/dev/null )' \ + -- "$cur")) + return + ;; + -m | --mode) + COMPREPLY=($(compgen -W "$($1 --list 2>/dev/null | cut -d: -f2-)" \ + -- "$cur")) + return + ;; + -a | --algorithm) + COMPREPLY=($(compgen -W "$($1 --list 2>/dev/null | + awk '{print $1}')" -- "$cur")) + return + ;; + -h | --hash) + COMPREPLY=($(compgen -W '$($1 --list-hash 2>/dev/null | \ + command sed -e 1d)' -- "$cur")) + return + ;; + -k | -s | --key | --keysize) + return + ;; + -f | -c | --keyfile | --config) + _filedir + return + ;; + --algorithms-directory | --modes-directory) + _filedir -d + return + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) + elif [[ ${words[0]} == mdecrypt ]]; then + _filedir nc + else + local i decrypt=0 + for ((i = 1; i < ${#words[@]} - 1; i++)); do + if [[ ${words[i]} == -@(d|-decrypt) ]]; then + _filedir nc + decrypt=1 + break + fi + done + if ((decrypt == 0)); then + _filedir + fi + fi +} && + complete -F _mcrypt mcrypt mdecrypt + +# ex: filetype=sh |