Package: guix-patches;
Reported by: Oleg Pykhalov <go.wigust <at> gmail.com>
Date: Fri, 2 Jun 2023 22:20:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Liliana Marie Prikler <liliana.prikler <at> gmail.com> To: Oleg Pykhalov <go.wigust <at> gmail.com>, 63860 <at> debbugs.gnu.org Subject: [bug#63860] [PATCH v2] Add Bash completion file. Date: Sat, 03 Jun 2023 20:20:00 +0200
Am Samstag, dem 03.06.2023 um 12:37 +0300 schrieb Oleg Pykhalov: > * etc/completion/bash/herd: New file. > * Makefile.am (dist_bashcompletion_DATA): New variable. > * configure.ac: Add --with-bash-completion-dir. > --- > Makefile.am | 4 ++ > configure.ac | 9 ++++ > etc/completion/bash/herd | 103 > +++++++++++++++++++++++++++++++++++++++ > 3 files changed, 116 insertions(+) > create mode 100644 etc/completion/bash/herd > > diff --git a/Makefile.am b/Makefile.am > index d82e75c..d7b5d36 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -2,6 +2,7 @@ > # Copyright © 2002, 2003 Wolfgang Jährling <wolfgang <at> pro-linux.de> > # Copyright © 2013-2016, 2018-2020, 2022-2023 Ludovic Courtès > <ludo <at> gnu.org> > # Copyright © 2018 Carlo Zancanaro <carlo <at> zancanaro.id.au> > +# Copyright © 2023 Oleg Pykhalov <go.wigust <at> gmail.com> > # > # This file is part of the GNU Shepherd. > # > @@ -135,6 +136,9 @@ doc/%.8: modules/shepherd/scripts/%.scm > configure.ac > dist_man1_MANS = doc/shepherd.1 doc/herd.1 > dist_man8_MANS = doc/halt.8 doc/reboot.8 > > +# Bash completion file. > +dist_bashcompletion_DATA = etc/completion/bash/herd > + > # Things not automatically included in the distribution. > EXTRA_DIST += \ > build-aux/config.rpath \ > diff --git a/configure.ac b/configure.ac > index 18455a0..8aaea92 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -172,6 +172,15 @@ esac > AC_MSG_RESULT([$build_crash_handler]) > AM_CONDITIONAL([BUILD_CRASH_HANDLER], [test "x$build_crash_handler" > = "xyes"]) > > +dnl Bash completion file. > + > +AC_ARG_WITH([bash-completion-dir], > + AC_HELP_STRING([--with-bash-completion-dir=DIR], > + [name of the Bash completion directory]), > + [bashcompletiondir="$withval"], > + [bashcompletiondir='${sysconfdir}/bash_completion.d']) > +AC_SUBST([bashcompletiondir]) > + > dnl Manual pages. > AM_MISSING_PROG([HELP2MAN], [help2man]) > > diff --git a/etc/completion/bash/herd b/etc/completion/bash/herd > new file mode 100644 > index 0000000..06afaae > --- /dev/null > +++ b/etc/completion/bash/herd > @@ -0,0 +1,103 @@ > +# GNU Shepherd --- System service manager for GNU > +# Copyright © 2023 Oleg Pykhalov <go.wigust <at> gmail.com> > +# > +# This file is part of GNU Shepherd. > +# > +# GNU Shepherd 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. > +# > +# GNU Shepherd 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 GNU Shepherd. If not, see > <http://www.gnu.org/licenses/>. > + > +# Bash completion for Shepherd commands. > + > +_herd_complete_subcommand() > +{ > + local command="${COMP_WORDS[1]}" > + case "$command" in > + discover) > + complitions="guix-daemon" > + mapfile -t COMPREPLY < <(compgen -W "$complitions" -- > "${COMP_WORDS[$COMP_CWORD]}") > + ;; Is there a reason to call the variable "complitions" rather than "completions" or using an immediate value? > + schedule) > + complitions="mcron" > + mapfile -t COMPREPLY < <(compgen -W "$complitions" -- > "${COMP_WORDS[$COMP_CWORD]}") > + ;; > + set-http-proxy) > + complitions="guix-daemon" > + mapfile -t COMPREPLY < <(compgen -W "$complitions" -- > "${COMP_WORDS[$COMP_CWORD]}") > + ;; > + *) > + local services > + services="$(herd status | grep '^ +\|^ -\| \*' | cut -d > ' ' -f3)" > + mapfile -t COMPREPLY < <(compgen -W "$services" -- > "${COMP_WORDS[$COMP_CWORD]}") > + ;; > + esac > +} > + > +_herd_complete_3() > +{ > + local command="${COMP_WORDS[2]}" > + case "$command" in > + guix-daemon) > + complitions="on off" > + mapfile -t COMPREPLY < <(compgen -W "$complitions" -- > "${COMP_WORDS[$COMP_CWORD]}") > + ;; > + *) > + ;; > + esac > +} > + > +_herd_is_command () > +{ > + local word > + local result="false" > + for word in "${COMP_WORDS[@]}" > + do > + if [ "$word" = "$1" ] > + then > + result=true > + break > + fi > + done > + $result > +} > + > +_herd_complete() > +{ > + case $COMP_CWORD in > + 1) > + if [ -z "$_herd_subcommands" ] > + then > + # Cache the list of subcommands to speed things up. > + _herd_subcommands_list=( > + disable > + discover > + enable > + schedule > + set-http-proxy > + start > + status > + stop > + ) > + _herd_subcommands="${_herd_subcommands_list[*]}" > + fi > + mapfile -t COMPREPLY < <(compgen -W "$_herd_subcommands" > -- "${COMP_WORDS[$COMP_CWORD]}") > + ;; > + *) > + case $COMP_CWORD in > + 2) _herd_complete_subcommand;; > + 3) _herd_complete_3;; > + esac > + ;; > + esac > +} > + > +complete -F _herd_complete herd Cheers
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.