diff mbox series

[bug#45893,1/2] scripts: search, show: Replace 'args-fold*' by 'parse-command-line'.

Message ID 20210115163953.53721-1-zimon.toutoune@gmail.com
State Accepted
Headers show
Series DRAFT: Hint for options. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Simon Tournier Jan. 15, 2021, 4:39 p.m. UTC
* guix/scripts/search.scm (define-command): Replace 'args-fold*' by
'parse-command-line'.
* guix/scripts/show.scm (define-command): Replace 'args-fold*' by
'parse-command-line'.
---
 guix/scripts/search.scm | 7 ++-----
 guix/scripts/show.scm   | 8 ++------
 2 files changed, 4 insertions(+), 11 deletions(-)

Comments

Ludovic Courtès Jan. 19, 2021, 5:20 p.m. UTC | #1
Hi!

zimoun <zimon.toutoune@gmail.com> skribis:

> * guix/scripts/search.scm (define-command): Replace 'args-fold*' by
> 'parse-command-line'.
> * guix/scripts/show.scm (define-command): Replace 'args-fold*' by
> 'parse-command-line'.

[...]

> -    (args-fold* args %options
> -                (lambda (opt name arg . rest)
> -                  (leave (G_ "~A: unrecognized option~%") name))
> -                handle-argument
> -                '()))
> +    (parse-command-line args %options '()))

In these two cases, you need to pass #:build-options? #f.
Simon Tournier Jan. 19, 2021, 5:35 p.m. UTC | #2
Hi Ludo,

On Tue, 19 Jan 2021 at 18:20, Ludovic Courtès <ludo@gnu.org> wrote:
> zimoun <zimon.toutoune@gmail.com> skribis:
>
> > * guix/scripts/search.scm (define-command): Replace 'args-fold*' by
> > 'parse-command-line'.
> > * guix/scripts/show.scm (define-command): Replace 'args-fold*' by
> > 'parse-command-line'.
>
> [...]
>
> > -    (args-fold* args %options
> > -                (lambda (opt name arg . rest)
> > -                  (leave (G_ "~A: unrecognized option~%") name))
> > -                handle-argument
> > -                '()))
> > +    (parse-command-line args %options '()))
>
> In these two cases, you need to pass #:build-options? #f.

Ok.  One question is: do we replace all the 'args-fold*' by
'parse-command-line' (with the correct arguments)?  If yes, the
proposal works.  Otherwise, the computation of the hint should be
moved to elsewhere.  But where to avoid to duplicate code (replacing
args-fld* by parse-command-line in all guix/scripts/ fixes the issue).

Note that the "issue" is to handle the error.  For example, if one
moves "option-hint" to "args-fold*" then the hint would not work for
all the commands.

What is your suggestion?


All the best,
simon
diff mbox series

Patch

diff --git a/guix/scripts/search.scm b/guix/scripts/search.scm
index 0c9e6af07b..1ac8089e6b 100644
--- a/guix/scripts/search.scm
+++ b/guix/scripts/search.scm
@@ -1,5 +1,6 @@ 
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -66,11 +67,7 @@  This is an alias for 'guix package -s'.\n"))
           result))
 
   (define opts
-    (args-fold* args %options
-                (lambda (opt name arg . rest)
-                  (leave (G_ "~A: unrecognized option~%") name))
-                handle-argument
-                '()))
+    (parse-command-line args %options '()))
 
   (unless (assoc-ref opts 'query)
     (leave (G_ "missing arguments: no regular expressions to search for~%")))
diff --git a/guix/scripts/show.scm b/guix/scripts/show.scm
index 535d03c1a6..6dfc082be3 100644
--- a/guix/scripts/show.scm
+++ b/guix/scripts/show.scm
@@ -1,5 +1,5 @@ 
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2019 Simon Tournier <zimon.toutoune@gmail.com>
+;;; Copyright © 2019, 2021 Simon Tournier <zimon.toutoune@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -66,11 +66,7 @@  This is an alias for 'guix package --show='.\n"))
           result))
 
   (define opts
-    (args-fold* args %options
-                (lambda (opt name arg . rest)
-                  (leave (G_ "~A: unrecognized option~%") name))
-                handle-argument
-                '()))
+    (parse-command-line args %options '()))
 
   (unless (assoc-ref opts 'query)
     (leave (G_ "missing arguments: no package to show~%")))