diff options
Diffstat (limited to 'contrib/mcrypt')
-rw-r--r-- | contrib/mcrypt | 151 |
1 files changed, 78 insertions, 73 deletions
diff --git a/contrib/mcrypt b/contrib/mcrypt index 81f5d8b3..3ee8c41e 100644 --- a/contrib/mcrypt +++ b/contrib/mcrypt @@ -1,80 +1,85 @@ -# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- -# ex: ts=8 sw=8 noet filetype=sh -# # mcrypt(1) completion by Ariel Fermani <the_end@bbs.frc.utn.edu.ar> +have mcrypt || have mdecrypt && _mcrypt() { - local cur prev i decrypt + local cur prev i decrypt - COMPREPLY=() - cur=`_get_cword` - prev=${COMP_WORDS[COMP_CWORD-1]} + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} - case "$prev" in - -@(g|-openpgp-z)) - COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' \ - -- $cur ) ) - return 0 - ;; - -@(o|-keymode)) - COMPREPLY=( $( mcrypt --list-keymodes 2> /dev/null | - grep "^$cur" ) ) - return 0 - ;; - -@(m|-mode)) - COMPREPLY=( $( mcrypt --list 2> /dev/null | - sed -e 's/.*: //' -e 's/ $//' | sort | - uniq | tr " " "\n" | grep "^$cur" ) ) - return 0 - ;; - -@(a|-algorithm)) - COMPREPLY=( $( mcrypt --list 2> /dev/null | - awk '{print $1}' | grep "^$cur" ) ) - return 0 - ;; - -@(h|-hash)) - COMPREPLY=( $( mcrypt --list-hash 2> /dev/null | - sed 1d | grep "^$cur" ) ) - return 0 - ;; - -@(k|s|-@(key?(size)))) - return 0 - ;; - -@(f|c|-@(keyfile|config))) - _filedir - return 0 - ;; - --@(algorithm|mode)s-directory) - _filedir -d - return 0 - ;; - esac + case "$prev" in + -@(g|-openpgp-z)) + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$cur" ) ) + return 0 + ;; + -@(o|-keymode)) + COMPREPLY=( $( compgen -W '$( mcrypt --list-keymodes \ + 2>/dev/null )' -- "$cur" ) ) + return 0 + ;; + -@(m|-mode)) + COMPREPLY=( $( compgen -W "$( mcrypt --list \ + 2>/dev/null | sed -e 's/.*: //' -e 's/ $//' | \ + sort | uniq )" -- "$cur" ) ) + return 0 + ;; + -@(a|-algorithm)) + COMPREPLY=( $( compgen -W "$( mcrypt --list 2>/dev/null | \ + awk '{print $1}' )" -- "$cur" ) ) + return 0 + ;; + -@(h|-hash)) + COMPREPLY=( $( compgen -W '$( mcrypt --list-hash 2>/dev/null | \ + sed -e 1d )' -- "$cur" ) ) + return 0 + ;; + -@(k|s|-@(key?(size)))) + return 0 + ;; + -@(f|c|-@(keyfile|config))) + _filedir + return 0 + ;; + --@(algorithm|mode)s-directory) + _filedir -d + return 0 + ;; + esac - if [[ "$cur" == -* ]]; then - COMPREPLY=( $( compgen -W '-g --openpgp --openpgp-z -d \ - --decrypt -s --keysize -o --keymode -f --keyfile \ - -c --config -a --algorithm --algorithms-directory \ - -m --mode --modes-directory -h --hash -k --key \ - --noiv -b --bare -z --gzip -p --bzip2 --flush -l \ - --doublecheck -u --unlink --nodelete -t --time -F \ - --force --echo -r --random --list --list-keymodes \ - --list-hash -V --verbose -q --quiet --help -v \ - --version -L --license' -- $cur ) ) - elif [[ ${COMP_WORDS[0]} == mdecrypt ]]; then - _filedir '@(nc)' - else - decrypt=0 - for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do - if [[ ${COMP_WORDS[i]} == -@(d|-decrypt) ]]; then - _filedir '@(nc)' - decrypt=1 - break - fi - done - if [[ $decrypt -eq 0 ]]; then - _filedir - fi - fi -} -complete -o filenames -F _mcrypt mcrypt mdecrypt + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-g --openpgp --openpgp-z -d \ + --decrypt -s --keysize -o --keymode -f --keyfile \ + -c --config -a --algorithm --algorithms-directory \ + -m --mode --modes-directory -h --hash -k --key \ + --noiv -b --bare -z --gzip -p --bzip2 --flush -l \ + --doublecheck -u --unlink --nodelete -t --time -F \ + --force --echo -r --random --list --list-keymodes \ + --list-hash -V --verbose -q --quiet --help -v \ + --version -L --license' -- "$cur" ) ) + elif [[ ${COMP_WORDS[0]} == mdecrypt ]]; then + _filedir '@(nc)' + else + decrypt=0 + for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == -@(d|-decrypt) ]]; then + _filedir '@(nc)' + decrypt=1 + break + fi + done + if [[ $decrypt -eq 0 ]]; then + _filedir + fi + fi +} && +complete $filenames -F _mcrypt mcrypt mdecrypt + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh |