From unknown Tue Jun 24 17:25:57 2025 X-Loop: help-debbugs@gnu.org Subject: [bug#35485] [PATCH] guix package: Add 'guix search' alias. Resent-From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 29 Apr 2019 08:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 35485 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 35485@debbugs.gnu.org Cc: Ludovic =?UTF-8?Q?Court=C3=A8s?= X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.15565277577704 (code B ref -1); Mon, 29 Apr 2019 08:50:02 +0000 Received: (at submit) by debbugs.gnu.org; 29 Apr 2019 08:49:17 +0000 Received: from localhost ([127.0.0.1]:38386 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hL1yK-000205-A6 for submit@debbugs.gnu.org; Mon, 29 Apr 2019 04:49:16 -0400 Received: from eggs.gnu.org ([209.51.188.92]:43924) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hL1yH-0001zn-Ft for submit@debbugs.gnu.org; Mon, 29 Apr 2019 04:49:11 -0400 Received: from lists.gnu.org ([209.51.188.17]:46347) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hL1yC-00034W-Al for submit@debbugs.gnu.org; Mon, 29 Apr 2019 04:49:04 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58305) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hL1yA-0006S0-HV for guix-patches@gnu.org; Mon, 29 Apr 2019 04:49:04 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_40, URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:470:142:3::e]:49380) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hL1yA-000344-DJ; Mon, 29 Apr 2019 04:49:02 -0400 Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=48546 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1hL1y9-0007oX-S5; Mon, 29 Apr 2019 04:49:02 -0400 From: Ludovic =?UTF-8?Q?Court=C3=A8s?= Date: Mon, 29 Apr 2019 10:48:47 +0200 Message-Id: <20190429084847.21578-1-ludo@gnu.org> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * guix/scripts/search.scm: New file. * Makefile.am (MODULES): Add it. * po/guix/POTFILES.in: Add it. * tests/guix-package-aliases.sh: Add test. * doc/guix.texi (Invoking guix package): Document it and use it in a couple of examples. --- This is a followup to . Given our tight schedule, I’ll apply it real soon if there are no objections (apologies for not working on it before!). Ludo’. Makefile.am | 1 + doc/guix.texi | 13 ++++--- guix/scripts/search.scm | 67 +++++++++++++++++++++++++++++++++++ po/guix/POTFILES.in | 1 + tests/guix-package-aliases.sh | 2 ++ 5 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 guix/scripts/search.scm diff --git a/Makefile.am b/Makefile.am index 076f1c7a71..36f3bc5c27 100644 --- a/Makefile.am +++ b/Makefile.am @@ -227,6 +227,7 @@ MODULES = \ guix/scripts/install.scm \ guix/scripts/remove.scm \ guix/scripts/upgrade.scm \ + guix/scripts/search.scm \ guix/scripts/gc.scm \ guix/scripts/hash.scm \ guix/scripts/pack.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 6c3dc7d208..21a0321375 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2629,6 +2629,8 @@ For your convenience, we also provide the following aliases: @itemize @item +@command{guix search} is an alias for @command{guix package -s}, +@item @command{guix install} is an alias for @command{guix package -i}, @item @command{guix remove} is an alias for @command{guix package -r}, @@ -2952,12 +2954,13 @@ name: gmp @dots{} @end example -It is also possible to refine search results using several @code{-s} -flags. For example, the following command returns a list of board -games: +It is also possible to refine search results using several @code{-s} flags to +@command{guix package}, or several arguments to @command{guix search}. For +example, the following command returns a list of board games (this time using +the @command{guix search} alias): @example -$ guix package -s '\' -s game | recsel -p name +$ guix search '\' game | recsel -p name name: gnubg @dots{} @end example @@ -2972,7 +2975,7 @@ for cryptographic libraries, filters out Haskell, Perl, Python, and Ruby libraries, and prints the name and synopsis of the matching packages: @example -$ guix package -s crypto -s library | \ +$ guix search crypto library | \ recsel -e '! (name ~ "^(ghc|perl|python|ruby)")' -p name,synopsis @end example diff --git a/guix/scripts/search.scm b/guix/scripts/search.scm new file mode 100644 index 0000000000..8fceb83668 --- /dev/null +++ b/guix/scripts/search.scm @@ -0,0 +1,67 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix 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 Guix 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 Guix. If not, see . + +(define-module (guix scripts search) + #:use-module (guix ui) + #:use-module (guix scripts package) + #:use-module (guix scripts) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (srfi srfi-37) + #:export (guix-search)) + +(define (show-help) + (display (G_ "Usage: guix search [OPTION] REGEXPS... +Search for packages matching REGEXPS.")) + (display (G_" +This is an alias for 'guix package -s'.\n")) + (newline) + (display (G_ " + -h, --help display this help and exit")) + (display (G_ " + -V, --version display version information and exit")) + (newline) + (show-bug-report-information)) + +(define %options + ;; Specification of the command-line options. + (list (option '(#\h "help") #f #f + (lambda args + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix search"))))) + +(define (guix-search . args) + (define (handle-argument arg result) + ;; Treat all non-option arguments as regexps. + (cons `(query search ,(or arg "")) + result)) + + (define opts + (args-fold* args %options + (lambda (opt name arg . rest) + (leave (G_ "~A: unrecognized option~%") name)) + handle-argument + '())) + + (unless (assoc-ref opts 'query) + (leave (G_ "missing arguments: no regular expressions to search for~%"))) + + (guix-package* opts)) diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 91de60efc7..ceee589b2e 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -44,6 +44,7 @@ guix/scripts/package.scm guix/scripts/install.scm guix/scripts/remove.scm guix/scripts/upgrade.scm +guix/scripts/search.scm guix/scripts/gc.scm guix/scripts/hash.scm guix/scripts/import.scm diff --git a/tests/guix-package-aliases.sh b/tests/guix-package-aliases.sh index 64ed2fbb67..5c68664093 100644 --- a/tests/guix-package-aliases.sh +++ b/tests/guix-package-aliases.sh @@ -56,3 +56,5 @@ then false; else true; fi if guix remove -i guile-bootstrap -p "$profile" --bootstrap then false; else true; fi + +guix search '\' game | grep '^name: gnubg' -- 2.21.0 From unknown Tue Jun 24 17:25:57 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Ludovic =?UTF-8?Q?Court=C3=A8s?= Subject: bug#35485: closed (Re: [bug#35485] [PATCH] guix package: Add 'guix search' alias.) Message-ID: References: <87k1fdglhn.fsf@gnu.org> <20190429084847.21578-1-ludo@gnu.org> X-Gnu-PR-Message: they-closed 35485 X-Gnu-PR-Package: guix-patches X-Gnu-PR-Keywords: patch Reply-To: 35485@debbugs.gnu.org Date: Mon, 29 Apr 2019 10:22:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1556533322-16353-1" This is a multi-part message in MIME format... ------------=_1556533322-16353-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #35485: [PATCH] guix package: Add 'guix search' alias. which was filed against the guix-patches package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 35485@debbugs.gnu.org. --=20 35485: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D35485 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1556533322-16353-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 35485-done) by debbugs.gnu.org; 29 Apr 2019 10:21:51 +0000 Received: from localhost ([127.0.0.1]:38455 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hL3Py-0004FM-Vn for submit@debbugs.gnu.org; Mon, 29 Apr 2019 06:21:51 -0400 Received: from eggs.gnu.org ([209.51.188.92]:33737) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hL3Pw-0004F4-Pt for 35485-done@debbugs.gnu.org; Mon, 29 Apr 2019 06:21:49 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:50262) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hL3Pq-0000Ts-FI for 35485-done@debbugs.gnu.org; Mon, 29 Apr 2019 06:21:42 -0400 Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=48782 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1hL3Pq-0004NU-3q for 35485-done@debbugs.gnu.org; Mon, 29 Apr 2019 06:21:42 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: 35485-done@debbugs.gnu.org Subject: Re: [bug#35485] [PATCH] guix package: Add 'guix search' alias. References: <20190429084847.21578-1-ludo@gnu.org> Date: Mon, 29 Apr 2019 12:21:40 +0200 In-Reply-To: <20190429084847.21578-1-ludo@gnu.org> ("Ludovic \=\?utf-8\?Q\?Cou\?\= \=\?utf-8\?Q\?rt\=C3\=A8s\=22's\?\= message of "Mon, 29 Apr 2019 10:48:47 +0200") Message-ID: <87k1fdglhn.fsf@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 35485-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Pushed as da56f10971e0b6f32969b10e38ed043b2c99bb82. ------------=_1556533322-16353-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 29 Apr 2019 08:49:17 +0000 Received: from localhost ([127.0.0.1]:38386 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hL1yK-000205-A6 for submit@debbugs.gnu.org; Mon, 29 Apr 2019 04:49:16 -0400 Received: from eggs.gnu.org ([209.51.188.92]:43924) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hL1yH-0001zn-Ft for submit@debbugs.gnu.org; Mon, 29 Apr 2019 04:49:11 -0400 Received: from lists.gnu.org ([209.51.188.17]:46347) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hL1yC-00034W-Al for submit@debbugs.gnu.org; Mon, 29 Apr 2019 04:49:04 -0400 Received: from eggs.gnu.org ([209.51.188.92]:58305) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hL1yA-0006S0-HV for guix-patches@gnu.org; Mon, 29 Apr 2019 04:49:04 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,BAYES_40, URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:470:142:3::e]:49380) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hL1yA-000344-DJ; Mon, 29 Apr 2019 04:49:02 -0400 Received: from [2001:660:6102:320:e120:2c8f:8909:cdfe] (port=48546 helo=gnu.org) by fencepost.gnu.org with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1hL1y9-0007oX-S5; Mon, 29 Apr 2019 04:49:02 -0400 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= To: guix-patches@gnu.org Subject: [PATCH] guix package: Add 'guix search' alias. Date: Mon, 29 Apr 2019 10:48:47 +0200 Message-Id: <20190429084847.21578-1-ludo@gnu.org> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: submit Cc: =?UTF-8?q?Ludovic=20Court=C3=A8s?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) * guix/scripts/search.scm: New file. * Makefile.am (MODULES): Add it. * po/guix/POTFILES.in: Add it. * tests/guix-package-aliases.sh: Add test. * doc/guix.texi (Invoking guix package): Document it and use it in a couple of examples. --- This is a followup to . Given our tight schedule, I’ll apply it real soon if there are no objections (apologies for not working on it before!). Ludo’. Makefile.am | 1 + doc/guix.texi | 13 ++++--- guix/scripts/search.scm | 67 +++++++++++++++++++++++++++++++++++ po/guix/POTFILES.in | 1 + tests/guix-package-aliases.sh | 2 ++ 5 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 guix/scripts/search.scm diff --git a/Makefile.am b/Makefile.am index 076f1c7a71..36f3bc5c27 100644 --- a/Makefile.am +++ b/Makefile.am @@ -227,6 +227,7 @@ MODULES = \ guix/scripts/install.scm \ guix/scripts/remove.scm \ guix/scripts/upgrade.scm \ + guix/scripts/search.scm \ guix/scripts/gc.scm \ guix/scripts/hash.scm \ guix/scripts/pack.scm \ diff --git a/doc/guix.texi b/doc/guix.texi index 6c3dc7d208..21a0321375 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2629,6 +2629,8 @@ For your convenience, we also provide the following aliases: @itemize @item +@command{guix search} is an alias for @command{guix package -s}, +@item @command{guix install} is an alias for @command{guix package -i}, @item @command{guix remove} is an alias for @command{guix package -r}, @@ -2952,12 +2954,13 @@ name: gmp @dots{} @end example -It is also possible to refine search results using several @code{-s} -flags. For example, the following command returns a list of board -games: +It is also possible to refine search results using several @code{-s} flags to +@command{guix package}, or several arguments to @command{guix search}. For +example, the following command returns a list of board games (this time using +the @command{guix search} alias): @example -$ guix package -s '\' -s game | recsel -p name +$ guix search '\' game | recsel -p name name: gnubg @dots{} @end example @@ -2972,7 +2975,7 @@ for cryptographic libraries, filters out Haskell, Perl, Python, and Ruby libraries, and prints the name and synopsis of the matching packages: @example -$ guix package -s crypto -s library | \ +$ guix search crypto library | \ recsel -e '! (name ~ "^(ghc|perl|python|ruby)")' -p name,synopsis @end example diff --git a/guix/scripts/search.scm b/guix/scripts/search.scm new file mode 100644 index 0000000000..8fceb83668 --- /dev/null +++ b/guix/scripts/search.scm @@ -0,0 +1,67 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Ludovic Courtès +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix 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 Guix 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 Guix. If not, see . + +(define-module (guix scripts search) + #:use-module (guix ui) + #:use-module (guix scripts package) + #:use-module (guix scripts) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) + #:use-module (srfi srfi-37) + #:export (guix-search)) + +(define (show-help) + (display (G_ "Usage: guix search [OPTION] REGEXPS... +Search for packages matching REGEXPS.")) + (display (G_" +This is an alias for 'guix package -s'.\n")) + (newline) + (display (G_ " + -h, --help display this help and exit")) + (display (G_ " + -V, --version display version information and exit")) + (newline) + (show-bug-report-information)) + +(define %options + ;; Specification of the command-line options. + (list (option '(#\h "help") #f #f + (lambda args + (show-help) + (exit 0))) + (option '(#\V "version") #f #f + (lambda args + (show-version-and-exit "guix search"))))) + +(define (guix-search . args) + (define (handle-argument arg result) + ;; Treat all non-option arguments as regexps. + (cons `(query search ,(or arg "")) + result)) + + (define opts + (args-fold* args %options + (lambda (opt name arg . rest) + (leave (G_ "~A: unrecognized option~%") name)) + handle-argument + '())) + + (unless (assoc-ref opts 'query) + (leave (G_ "missing arguments: no regular expressions to search for~%"))) + + (guix-package* opts)) diff --git a/po/guix/POTFILES.in b/po/guix/POTFILES.in index 91de60efc7..ceee589b2e 100644 --- a/po/guix/POTFILES.in +++ b/po/guix/POTFILES.in @@ -44,6 +44,7 @@ guix/scripts/package.scm guix/scripts/install.scm guix/scripts/remove.scm guix/scripts/upgrade.scm +guix/scripts/search.scm guix/scripts/gc.scm guix/scripts/hash.scm guix/scripts/import.scm diff --git a/tests/guix-package-aliases.sh b/tests/guix-package-aliases.sh index 64ed2fbb67..5c68664093 100644 --- a/tests/guix-package-aliases.sh +++ b/tests/guix-package-aliases.sh @@ -56,3 +56,5 @@ then false; else true; fi if guix remove -i guile-bootstrap -p "$profile" --bootstrap then false; else true; fi + +guix search '\' game | grep '^name: gnubg' -- 2.21.0 ------------=_1556533322-16353-1--