summaryrefslogtreecommitdiffstats
path: root/completions/jarsigner
diff options
context:
space:
mode:
Diffstat (limited to 'completions/jarsigner')
-rw-r--r--completions/jarsigner57
1 files changed, 57 insertions, 0 deletions
diff --git a/completions/jarsigner b/completions/jarsigner
new file mode 100644
index 0000000..1f26c9c
--- /dev/null
+++ b/completions/jarsigner
@@ -0,0 +1,57 @@
+# jarsigner(1) completion -*- shell-script -*-
+
+_jarsigner()
+{
+ local cur prev words cword
+ _init_completion || return
+
+ case $prev in
+ -keystore)
+ COMPREPLY=($(compgen -W 'NONE' -- "$cur"))
+ _filedir '@(jks|ks|p12|pfx)'
+ return
+ ;;
+ -storepass | -keypass | -sigfile | -digestalg | -sigalg | -tsacert | -tsapolicyid | \
+ -tsadigestalg | -altsigner | -altsignerpath | -providerName | -providerClass | \
+ -providerArg)
+ return
+ ;;
+ -certchain | -tsa)
+ _filedir
+ return
+ ;;
+ -storetype)
+ COMPREPLY=($(compgen -W 'JKS PKCS11 PKCS12' -- "$cur"))
+ return
+ ;;
+ -signedjar)
+ _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) && \
+ ${words[i - 1]} != -signedjar ]]; then
+ jar=true
+ break
+ fi
+ done
+
+ 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"))
+ fi
+ _filedir '@(jar|apk)'
+ fi
+} &&
+ complete -F _jarsigner jarsigner
+
+# ex: filetype=sh