Koha/debian/koha-common.bash-completion
Tomas Cohen Arazi 90291914f9 Bug 27839: Add tab-completion in bash for koha-worker
This patch simply adds tab-completion for this script.

To test:
1. Apply this patch
2. Run:
   $ cp debian/koha-common.bash-completion  /etc/bash_completion.d/koha-common
3. Open a new bash instance
4. Type 'koha-worker <tab>'
=> SUCCESS: All options are there
5. Play with Koha instances
=> SUCCESS: they show up, once chosen they are not offered anymore
6. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: David Nind <david@davidnind.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-04-12 15:27:50 +02:00

380 lines
11 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
#
# koha-common.bash-completion script for koha-* commands
#
# This file is part of Koha.
#
# Copyright 2013 Universidad Nacional de Cordoba
# Tomas Cohen Arazi
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with Koha; if not, see <http://www.gnu.org/licenses>.
_build_substract_switches()
{
local substract
for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
if [[ ${COMP_WORDS[i]} == -* ]]; then
substract="$substract -e ${COMP_WORDS[i]}"
fi
done
echo "$substract"
}
_build_substract_instances()
{
local substract
for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do
substract="$substract -e ${COMP_WORDS[i]}"
done
echo "$substract"
}
_koha_single_instance()
{
local filter=$1
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
if [ $COMP_CWORD -eq 1 ]; then
COMPREPLY=( $( compgen -W "$(koha-list $filter)" $cur ) )
else
COMPREPLY=()
fi
return 0
}
_koha_list_cmd()
{
local filter=$1
local cur substract instancelist
_get_comp_words_by_ref cur
# Build a list of the already used words
substract=`_build_substract_instances`
if [[ "$substract" != "" ]]; then
instancelist=$( koha-list $filter | grep -v -x $substract )
else
instancelist=$( koha-list $filter )
fi
COMPREPLY=( $(compgen -W "$instancelist" -- $cur ) )
return 0
}
_koha_email_disable()
{
_koha_list_cmd "--email"
return 0
}
complete -F _koha_email_disable koha-email-disable
_koha_email_enable()
{
_koha_list_cmd "--noemail"
return 0
}
complete -F _koha_email_enable koha-email-enable
_koha_sip_enabled_instances()
{
_koha_list_cmd "--sip"
return 0
}
_koha_sip_disabled()
{
_koha_list_cmd "--nosip"
return 0
}
_koha_disabled_instances()
{
_koha_list_cmd "--disabled"
return 0
}
_koha_enabled_instances()
{
_koha_list_cmd "--enabled"
return 0
}
# koha-enable autocompletes with disabled instances
complete -F _koha_disabled_instances koha-enable
# koha-disable autocompletes with enabled instances
complete -F _koha_enabled_instances koha-disable
# koha-mysql autocompletes with a single instance name
complete -F _koha_single_instance koha-mysql
_koha_list()
{
local cur opts substract
COMPREPLY=()
_get_comp_words_by_ref cur
opts="--enabled --disabled --email --noemail --plack --noplack --sip --nosip --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
--disabled)
substract="$substract -e --enabled"; ;;
--enabled)
substract="$substract -e --disabled"; ;;
--email)
substract="$substract -e --noemail"; ;;
--noemail)
substract="$substract -e --email"; ;;
--plack)
substract="$substract -e --noplack"; ;;
--noplack)
substract="$substract -e --plack"; ;;
--sip)
substract="$substract -e --nosip"; ;;
--nosip)
substract="$substract -e --sip"; ;;
--help)
substract="$substract -e -h"; ;;
-h)
substract="$substract -e --help"; ;;
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_list koha-list
_koha_plack_instances()
{
_koha_list_cmd "--plack"
return 0
}
_koha_noplack_instances()
{
_koha_list_cmd "--noplack"
return 0
}
_koha-plack()
{
local cur opts substract
COMPREPLY=()
_get_comp_words_by_ref cur
opts="--start --stop --restart --enable --disable --quiet -q --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_plack_instances ; return 0 ;;
--stop) _koha_plack_instances ; return 0 ;;
--restart) _koha_plack_instances ; return 0 ;;
--enable) _koha_noplack_instances ; return 0 ;;
--disable) _koha_plack_instances ; return 0 ;;
--help) COMPREPLY=() ; return 0 ;; # no more completions
-h) COMPREPLY=() ; return 0 ;; # no more completions
--quiet) # filter the other quiet switches and go on
substract="$substract -e -q"; ;;
-q) # filter the other quiet switches and go on
substract="$substract -e --quiet"; ;;
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-plack koha-plack
_koha-indexer()
{
local cur opts substract
COMPREPLY=()
_get_comp_words_by_ref cur
opts="--start --stop --restart --quiet -q --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_list_cmd ; return 0 ;;
--stop) _koha_list_cmd ; return 0 ;;
--restart) _koha_list_cmd ; return 0 ;;
--help) COMPREPLY=() ; return 0 ;; # no more completions
-h) COMPREPLY=() ; return 0 ;; # no more completions
--quiet) # filter the other quiet switches and go on
substract="$substract -e -q"; ;;
-q) # filter the other quiet switches and go on
substract="$substract -e --quiet"; ;;
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-indexer koha-indexer
_koha-zebra()
{
local cur opts substract
COMPREPLY=()
_get_comp_words_by_ref cur
opts="--start --stop --restart --status --quiet -q --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_list_cmd ; return 0 ;;
--stop) _koha_list_cmd ; return 0 ;;
--restart) _koha_list_cmd ; return 0 ;;
--status) _koha_list_cmd ; return 0 ;;
--help) COMPREPLY=() ; return 0 ;; # no more completions
-h) COMPREPLY=() ; return 0 ;; # no more completions
--quiet) # filter the other quiet switches and go on
substract="$substract -e -q"; ;;
-q) # filter the other quiet switches and go on
substract="$substract -e --quiet"; ;;
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-zebra koha-zebra
_koha-worker()
{
local cur opts substract
COMPREPLY=()
_get_comp_words_by_ref cur
opts="--start --stop --restart --status --quiet -q --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_list_cmd ; return 0 ;;
--stop) _koha_list_cmd ; return 0 ;;
--restart) _koha_list_cmd ; return 0 ;;
--status) _koha_list_cmd ; return 0 ;;
--help) COMPREPLY=() ; return 0 ;; # no more completions
-h) COMPREPLY=() ; return 0 ;; # no more completions
--quiet) # filter the other quiet switches and go on
substract="$substract -e -q"; ;;
-q) # filter the other quiet switches and go on
substract="$substract -e --quiet"; ;;
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-worker koha-worker
_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
# sh-indent-comment: t
# indent-tabs-mode: nil
# End:
# ex: ts=4 sw=4 et filetype=sh