diff options
-rw-r--r-- | debian/changelog | 1 | ||||
-rw-r--r-- | debian/java-common.install | 1 | ||||
-rw-r--r-- | scripts/completion/update-java-alternatives | 60 |
3 files changed, 62 insertions, 0 deletions
diff --git a/debian/changelog b/debian/changelog index 0ba299e..0ca4f03 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ java-common (0.54) UNRELEASED; urgency=medium * Team upload. * Use OpenJDK 8 on mips, mipsel and mips64el. + * update-java-alternatives now supports bash completion (Closes: #777550) * Removed the unused classpath-from-jars-1 example * Removed the old dummy control files * Removed the README about the old default-jdk-builddep transition diff --git a/debian/java-common.install b/debian/java-common.install new file mode 100644 index 0000000..de8c434 --- /dev/null +++ b/debian/java-common.install @@ -0,0 +1 @@ +scripts/completion/update-java-alternatives usr/share/bash-completion/completions diff --git a/scripts/completion/update-java-alternatives b/scripts/completion/update-java-alternatives new file mode 100644 index 0000000..7e5444a --- /dev/null +++ b/scripts/completion/update-java-alternatives @@ -0,0 +1,60 @@ +# +# update-java-alternatives(8) completion +# + +shopt -s dotglob + +# +# List the available alternatives +# +_update-java-alternatives_list() +{ + prog=$(basename $0) + top=/usr/lib/jvm + for i in ${jinfo:-$top/*.jinfo}; do + alias=$(basename ${i%.jinfo}) + alias=${alias#.} + echo $alias + done +} + +_update-java-alternatives() +{ + local cur prev options + + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + options=() + + # suggest an action if none was specified yet + if [[ ! " ${COMP_WORDS[@]} " =~ " --set " ]] && [[ ! " ${COMP_WORDS[@]} " =~ " -s " ]] && [[ + ! " ${COMP_WORDS[@]} " =~ " --list " ]] && [[ ! " ${COMP_WORDS[@]} " =~ " -l " ]] && [[ + ! " ${COMP_WORDS[@]} " =~ " --auto " ]] && [[ ! " ${COMP_WORDS[@]} " =~ " -a " ]] && [[ + ! " ${COMP_WORDS[@]} " =~ " --help " ]] && [[ ! " ${COMP_WORDS[@]} " =~ " -h " ]]; then + options+=( --help --list --auto --set ) + fi + + # add the --set sub options + if [[ " ${COMP_WORDS[@]} " =~ " --set " ]] || [[ " ${COMP_WORDS[@]} " =~ " -s " ]] ; then + if [[ ! " ${COMP_WORDS[@]} " =~ " --verbose " ]] && [[ ! " ${COMP_WORDS[@]} " =~ " -v " ]]; then options+=("--verbose"); fi + if [[ ! " ${COMP_WORDS[@]} " =~ " --jre " ]]; then options+=("--jre"); fi + if [[ ! " ${COMP_WORDS[@]} " =~ " --jre-headless " ]]; then options+=("--jre-headless"); fi + if [[ ! " ${COMP_WORDS[@]} " =~ " --plugin " ]]; then options+=("--plugin"); fi + fi + + case "$prev" in + -s|--set|-l|--list) + COMPREPLY=( $( compgen -W '$(_update-java-alternatives_list)' -- $cur ) ) + ;; + -h|--help) + COMPREPLY=( ) + ;; + *) + COMPREPLY=( $( compgen -W '${options[@]}' -- $cur ) ) + ;; + esac + + return 0 +} && +complete -F _update-java-alternatives update-java-alternatives |