diff options
Diffstat (limited to 'completions/jarsigner')
-rw-r--r-- | completions/jarsigner | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/completions/jarsigner b/completions/jarsigner index 1f26c9c..ebc6cf8 100644 --- a/completions/jarsigner +++ b/completions/jarsigner @@ -1,14 +1,14 @@ # jarsigner(1) completion -*- shell-script -*- -_jarsigner() +_comp_cmd_jarsigner() { - local cur prev words cword - _init_completion || return + local cur prev words cword comp_args + _comp_initialize -- "$@" || return case $prev in -keystore) - COMPREPLY=($(compgen -W 'NONE' -- "$cur")) - _filedir '@(jks|ks|p12|pfx)' + _comp_compgen -- -W 'NONE' + _comp_compgen -a filedir '@(jks|ks|p12|pfx)' return ;; -storepass | -keypass | -sigfile | -digestalg | -sigalg | -tsacert | -tsapolicyid | \ @@ -17,41 +17,40 @@ _jarsigner() return ;; -certchain | -tsa) - _filedir + _comp_compgen_filedir return ;; -storetype) - COMPREPLY=($(compgen -W 'JKS PKCS11 PKCS12' -- "$cur")) + _comp_compgen -- -W 'JKS PKCS11 PKCS12' return ;; -signedjar) - _filedir '@(jar|apk)' + _comp_compgen_filedir '@(jar|apk)' return ;; esac # Check if a jar was already given. - local i jar=false - for ((i = 1; i < ${#words[@]} - 1; i++)); do - if [[ ${words[i]} == *.@(jar|apk) && \ + local i jar="" + for ((i = 1; i < cword; i++)); do + if [[ ${words[i]} == *.@(jar|apk) && ${words[i - 1]} != -signedjar ]]; then - jar=true + jar=set break fi done - if ! $jar; then + if [[ ! $jar ]]; then if [[ $cur == -* ]]; then # Documented as "should not be used": -internalsf, -sectionsonly - COMPREPLY=($(compgen -W '-keystore -storepass -storetype - -keypass -sigfile -signedjar -digestalg -sigalg -verify - -verbose -certs -tsa -tsacert -altsigner -altsignerpath - -protected -providerName -providerClass -providerArg' \ - -- "$cur")) + _comp_compgen -- -W '-keystore -storepass -storetype -keypass + -sigfile -signedjar -digestalg -sigalg -verify -verbose -certs + -tsa -tsacert -altsigner -altsignerpath -protected + -providerName -providerClass -providerArg' fi - _filedir '@(jar|apk)' + _comp_compgen -a filedir '@(jar|apk)' fi } && - complete -F _jarsigner jarsigner + complete -F _comp_cmd_jarsigner jarsigner # ex: filetype=sh |