From f84c48ec350bc16e285fd388a239b333ff153aeb Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 30 Jan 2019 09:12:36 -0300 Subject: [PATCH] Bug 18562: Tab completion in bash This patch adds the fancy tab completion in bash. To test: - Run: $ source debian/koha-common.bash-completion $ sudo koha-sip - Play with all the options => SUCCESS: The combinations make sense (e.g. only SIP-enabled instances are completed for --start, --stop, --restart, -v and --verbose are not offered if the other one is already in there, --enable only applies to SIP-disabled instances, etc). - Sign off :-D Signed-off-by: Kyle M Hall Signed-off-by: Martin Renvoize --- debian/koha-common.bash-completion | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/debian/koha-common.bash-completion b/debian/koha-common.bash-completion index 276cba07c9..56b428d447 100644 --- a/debian/koha-common.bash-completion +++ b/debian/koha-common.bash-completion @@ -303,6 +303,44 @@ _koha-zebra() } complete -F _koha-zebra koha-zebra +_koha-sip() +{ + local cur opts substract + + COMPREPLY=() + _get_comp_words_by_ref cur + opts="--start --stop --restart --status --enable --verbose -v --help -h" + + # Build a list of the already used option switches + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == -* ]]; then + case ${COMP_WORDS[i]} in + --start) _koha_sip_enabled_instances ; return 0 ;; + --stop) _koha_sip_enabled_instances ; return 0 ;; + --restart) _koha_sip_enabled_instances ; return 0 ;; + --status) _koha_sip_enabled_instances ; return 0 ;; + --enable) _koha_sip_disabled ; return 0 ;; + --help) COMPREPLY=() ; return 0 ;; # no more completions + -h) COMPREPLY=() ; return 0 ;; # no more completions + --verbose) # filter the other quiet switches and go on + substract="$substract -e -q"; ;; + -v) # filter the other quiet switches and go on + substract="$substract -e --verbose"; ;; + esac + substract="$substract -e ${COMP_WORDS[i]}" + fi + done + + if [[ "$substract" != "" ]]; then + opts=$( echo $opts | sed -e 's/ /\n/g' | grep -v -x $substract ) + fi + + COMPREPLY=( $(compgen -W "$opts" -- $cur ) ) + + return 0 +} +complete -F _koha-sip koha-sip + # Local variables: # mode: shell-script # sh-basic-offset: 4 -- 2.20.1