Message ID | 20201202092106.22770-1-leo.prikler@student.tugraz.at |
---|---|
State | New |
Headers | show |
Series | [bug#45004,shepherd] herd: Suggest alternatives when action and service are likely swapped. | expand |
Context | Check | Description |
---|---|---|
cbaines/applying patch | fail | View Laminar job |
cbaines/issue | success | View issue |
On 02.12.20 10:21, Leo Prikler wrote: > * modules/shepherd/script/herd.scm (run-command)[reply error]: Report a more > descriptive error if service could reasonably have been an action. I didn't test it, but it sounds like a good idea :) It reminds me that I should maybe write bash completions files for shepherd as it annoys me pretty hard ^^
Jonathan Brielmaier <jonathan.brielmaier@web.de> writes: […] > It reminds me that I should maybe write bash completions files for > shepherd as it annoys me pretty hard ^^ You could take my, which probably should be improved before merging to Shepherd IMHO, e.g. avoid 'awk'. ~/.local/share/bash-completion/completions/herd _herd_complete_service(){ local command="${COMP_WORDS[1]}" local services="$(sudo herd status | awk '/*/ || /^ +/ || /^ -/ { print $NF }' | sort -u)" COMPREPLY=($(compgen -W "$services" -- "${COMP_WORDS[$COMP_CWORD]}")) } _herd_is_command () { local word local result="false" for word in ${COMP_WORDS[*]}t do if [ "$word" = "$1" ] then result=true break fi done $result } _herd_complete() { local word_count=${#COMP_WORDS[*]} local word_at_point="${COMP_WORDS[$COMP_CWORD]}" case $COMP_CWORD in 1) if [ -z "$_herd_subcommands" ] then # Cache the list of subcommands to speed things up. _herd_subcommands="enable disable start status stop" fi COMPREPLY=($(compgen -W "$_herd_subcommands" -- "${COMP_WORDS[$COMP_CWORD]}")) ;; *) case $COMP_CWORD in 2) _herd_complete_service;; esac ;; esac } complete -F _herd_complete herd
Hi Oleg, Oleg Pykhalov <go.wigust@gmail.com> skribis: > You could take my, which probably should be improved before merging to > Shepherd IMHO, e.g. avoid 'awk'. > > ~/.local/share/bash-completion/completions/herd > > _herd_complete_service(){ > local command="${COMP_WORDS[1]}" > local services="$(sudo herd status | awk '/*/ || /^ +/ || /^ -/ { print $NF }' | sort -u)" > COMPREPLY=($(compgen -W "$services" -- "${COMP_WORDS[$COMP_CWORD]}")) > } > > _herd_is_command () > { > local word > local result="false" > for word in ${COMP_WORDS[*]}t > do > if [ "$word" = "$1" ] > then > result=true > break > fi > done > $result > } > > _herd_complete() > { > local word_count=${#COMP_WORDS[*]} > local word_at_point="${COMP_WORDS[$COMP_CWORD]}" > case $COMP_CWORD in > 1) > if [ -z "$_herd_subcommands" ] > then > # Cache the list of subcommands to speed things up. > _herd_subcommands="enable disable start status stop" > fi > COMPREPLY=($(compgen -W "$_herd_subcommands" -- "${COMP_WORDS[$COMP_CWORD]}")) > ;; > *) > case $COMP_CWORD in > 2) _herd_complete_service;; > esac > ;; > esac > } > > complete -F _herd_complete herd Would you mind polishing a bit (as you see fit; perhaps use grep/sed rather than Awk?) and submitting a patch for this? I’d be happy to apply it! Thanks, Ludo’.
Hey Liliana, > * modules/shepherd/script/herd.scm (run-command)[reply error]: Report a more > descriptive error if service could reasonably have been an action. I found this old patch of yours, which I find very useful. So… finally applied as Shepherd commit b9b15db9e5bda27287706b6727c462df686e7621! Thanks, Ludo’.
Hi Ludovic, Ludovic Courtès <ludo@gnu.org> writes: […] > Would you mind polishing a bit (as you see fit; perhaps use grep/sed > rather than Awk?) and submitting a patch for this? I’d be happy to > apply it! Done. Please check the 63860 issue. Regards, Oleg.
diff --git a/modules/shepherd/scripts/herd.scm b/modules/shepherd/scripts/herd.scm index 106de1e..a178f51 100644 --- a/modules/shepherd/scripts/herd.scm +++ b/modules/shepherd/scripts/herd.scm @@ -179,6 +179,15 @@ the daemon via SOCKET-FILE." ('messages messages)) (for-each display-line messages) (report-command-error error) + (match (list action service) + ((_ (or 'start 'stop 'status 'doc)) + (report-error (l10n "did you mean 'herd ~a ~a'?") + service action)) + ((root (or 'help 'halt 'power-off 'load 'eval 'unload 'reload + 'daemonize 'persistency 'no-persistency 'cd 'restart)) + (report-error (l10n "did you mean 'herd ~a ~a'?") + service action)) + ((_ _) *unspecified*)) (exit 1)) ((? eof-object?) ;; When stopping shepherd, we may get an EOF in lieu of a real reply,