Bugzilla – Attachment 26179 Details for
Bug 10003
koha-* scripts (packages) should provide tab-completion in bash
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 10003: bash-completion for koha-list and some other script
Bug-10003-bash-completion-for-koha-list-and-some-o.patch (text/plain), 7.60 KB, created by
Dobrica Pavlinusic
on 2014-03-12 13:47:36 UTC
(
hide
)
Description:
Bug 10003: bash-completion for koha-list and some other script
Filename:
MIME Type:
Creator:
Dobrica Pavlinusic
Created:
2014-03-12 13:47:36 UTC
Size:
7.60 KB
patch
obsolete
>From 031e55c38538794cab51c20c7b9706da235f4aea Mon Sep 17 00:00:00 2001 >From: Tomas Cohen Arazi <tomascohen@gmail.com> >Date: Thu, 29 Aug 2013 16:03:11 -0300 >Subject: [PATCH] Bug 10003: bash-completion for koha-list and some other script > >This is an initial commit submitted for peer review. It implements bash-completion for the following commands: > > - koha-list > - koha-enable > - koha-disable > - koha-email-enable > - koha-email-disable > - koha-enable-sip > - koha-start-sip > - koha-restart-sip > - koha-stop-sip > - koha-start-zebra > - koha-stop-zebra > - koha-restart-zebra > >It is implemented in a way that it removes already used or mutually exclusive parameters (instance names, option switches). >I already have written completion for other (more complex) commands, But I belive a simpler patch is better to start with. > >IMPORTANT: this patch relies on having the koha-list command available in the path. Also 10622 is needed for the SIP-related option switches. > >To test: > - Make sure you have bash-completion installed and enabled (IRC might help us if you encounter problems). > - Apply the patch. >Option 1: > - Pick the debian/koha-common.bash-completion file and do > $ cp debian/koha-common.bash-completion /etc/bash_completion.d/koha-common > - Open a new bash shell (I do it opening a new terminal on my Ubuntu box). > - Type one of the listed commands... > And repeatedly press <TAB>. > - Enjoy, and signoff if you belive it is usable. Otherwise report back. >Option 2: > - run: > $ . debian/koha-common.bash-completion > - Type one of the listed commands... > And repeatedly press <TAB>. > - Enjoy, and signoff if you belive it is usable. Otherwise report back. > >Tests: >- Some koha-list option switches are mutually exclusive, -h should be available in any context >- koha-enable should only autocomplete disabled instances >- koha-disable should only autocomplete enabled instances >- koha-email-enable should only autocomplete email-disabled instances >- koha-email-disable should only autocomplete email-enabled instances >- koha-*-zebra scripts should only autocomplete enabled instances. >- koha-*-sip scripts should only autocomplete sip-enabled instances. > >Regards >To+ > >Note: writing bash-completion routines is a bit hacky, I tried to make it the simplest way I could. Your comments are welcome. > >Sponsored-by: Universidad Nacional de Cordoba >Signed-off-by: Dobrica Pavlinusic <dpavlin@rot13.org> >--- > debian/koha-common.bash-completion | 171 ++++++++++++++++++++++++++++++++++++ > debian/rules | 2 +- > 2 files changed, 172 insertions(+), 1 deletions(-) > create mode 100644 debian/koha-common.bash-completion > >diff --git a/debian/koha-common.bash-completion b/debian/koha-common.bash-completion >new file mode 100644 >index 0000000..934e279 >--- /dev/null >+++ b/debian/koha-common.bash-completion >@@ -0,0 +1,171 @@ >+#!/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_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 $filer ) >+ fi >+ >+ COMPREPLY=( $(compgen -W "$instancelist" -- $cur ) ) >+} >+ >+_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 autocomplete with sip-enabled instances >+complete -F _koha_sip_enabled_instances koha-start-sip >+complete -F _koha_sip_enabled_instances koha-restart-sip >+complete -F _koha_sip_enabled_instances koha-stop-sip >+ >+_koha_sip_disabled() >+{ >+ _koha_list_cmd "--nosip" >+ return 0 >+} >+ >+# koha-enable-sip autocompletes with sip-disabled instances >+complete -F _koha_sip_disabled koha-enable-sip >+ >+_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-*-zebra autocomplete with enabled instances >+complete -F _koha_enabled_instances koha-start-zebra >+complete -F _koha_enabled_instances koha-restart-zebra >+complete -F _koha_enabled_instances koha-stop-zebra >+ >+_koha_list() >+{ >+ local cur opts substract >+ >+ COMPREPLY=() >+ _get_comp_words_by_ref cur >+ opts="--enabled --disabled --email --noemail --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"; ;; >+ --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 >+ >+# 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 >diff --git a/debian/rules b/debian/rules >index 2073ad2..b00b9b8 100755 >--- a/debian/rules >+++ b/debian/rules >@@ -6,7 +6,7 @@ TMP = $(CURDIR)/debian/tmp > export PERL_MM_USE_DEFAULT=1 > > %: >- dh $@ --fail-missing >+ dh $@ --fail-missing --with bash-completion > > override_dh_gencontrol: > debian/bd-to-depends >> debian/koha-common.substvars >-- >1.7.2.5
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 10003
:
20743
|
22609
|
23701
|
26179
|
26180
|
26476
|
26477