summaryrefslogtreecommitdiff
path: root/guix/ui.scm
AgeCommit message (Collapse)Author
2020-07-25ui: Factorize '&message' handling.Ludovic Courtès
* guix/ui.scm (call-with-error-handling): Factorize the three 'message-condition?' clauses into one.
2020-07-15ui: 'with-error-handling' does not unwind the stack.Ludovic Courtès
Since a07d5e558b5403dad0a59776b950b6b02169c249, we've been getting useless backtraces upon unhandled errors, like this: Backtrace: 1 (primitive-load "/home/…/bin/guix") In guix/ui.scm: 1953:12 0 (run-guix-command _ . _) guix/ui.scm:1953:12: In procedure run-guix-command: In procedure struct-vtable: Wrong type argument in position 1 (expecting struct): #f This change finally gives us real backtraces back. * guix/ui.scm (guard*): New macro. (call-with-error-handling): Use it instead of 'guard'.
2020-07-02Revert "ui: Use package-description-string."Ludovic Courtès
This reverts commit bd03e99f66be1a038e3a8aeb502f5153fd05cc67. Reported by Ekaitz Zarraga <ekaitz@elenq.tech> at <https://lists.gnu.org/archive/html/guix-devel/2020-06/msg00338.html>. That commit broke would prevent "description: " from being taken into account by the 'texi->plain-text' paragraph filling code.
2020-06-28processes: Write to $PAGER.Ludovic Courtès
* guix/ui.scm (with-paginated-output-port): Export. * guix/scripts/processes.scm (guix-processes): Use it instead of writing directly to (current-output-port).
2020-06-15ui: Use package-description-string.Arun Isaac
* guix/ui.scm (package->recutils): Use package-description-string instead of package-description and P_.
2020-06-15ui: Do not translate package synopsis a second time.Arun Isaac
* guix/ui.scm (package->recutils): package-synopsis-string already returns a translated string. Do not attempt to translate it again.
2020-06-15ui: Cut off search early if any regexp does not match.Arun Isaac
* guix/ui.scm (relevance): When one of the regexps does not match, cut off early and return 0. Do not try to match the remaining regexps.
2020-06-14ui: Set 'LESS' environment variable unconditionally.Ludovic Courtès
Fixes <https://bugs.gnu.org/41811>. Reported by Lars-Dominik Braun <lars@6xq.net>. * guix/ui.scm (call-with-paginated-output-port): Remove (getenv "LESS") call.
2020-06-06ui: 'display-search-results' automatically invokes the pager.Ludovic Courtès
* guix/ui.scm (call-with-paginated-output-port): New procedure. (with-paginated-output-port): New macro. (display-search-results): Use it instead of displaying a hint.
2020-04-17ui: Fix typos, 80-col & grammar in comments & docstrings.Vincent Legoll
* guix/ui.scm (load*): Fix comment line length. (leave-on-EPIPE): Fix typo in docstring. (substitutable-info): Fix typo in comment. (indented-string): Fix typo in docstring. (%package-metrics): Fix typo in comment. (run-guix): Fix grammar in docstring. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-04-02ui: Clarify "dependencies changed".Ludovic Courtès
Suggested by Leo Famulari <leo@famulari.name>. * guix/ui.scm (show-manifest-transaction): Change to "dependencies or package changed".
2020-03-24ui: 'show-manifest-transaction' tabulates package lists for install/remove.Ludovic Courtès
It also removes the store file name from the output. * guix/ui.scm (show-manifest-transaction)[package-strings]: Rewrite to use 'tabulate'. Remove 'item' parameter and adjust callers.
2020-03-24ui: 'show-manifest-transaction' tabulates upgraded package lists.Ludovic Courtès
This also changes "1.0.0 → 1.0.0" to "(dependencies changed)", which is probably less confusing. * guix/ui.scm (tabulate): New procedure. (show-manifest-transaction)[upgrade-string]: Rewrite to take lists of names, versions, and outputs instead of single elements. Use 'tabulate'. Adjust callers accordingly.
2020-03-23ui: Add 'indented-string'.Ludovic Courtès
* guix/scripts/pull.scm (display-news-entry): Remove extra space in format string for 'indented-string'. (indented-string): Remove. (display-new/upgraded-packages)[pretty]: Pass #:initial-indent? to 'indented-string'. * guix/ui.scm (indented-string): New procedure.
2020-03-22ui: 'build-notifier' invokes continuation when there's nothing to do.Ludovic Courtès
* guix/ui.scm (build-notifier): Call CONTINUE when there's nothing to build or download, even when DRY-RUN? is true.
2020-03-22ui: 'show-what-to-build' returns two values, for builds and downloads.Ludovic Courtès
* guix/ui.scm (show-what-to-build): Return two values.
2020-03-22ui: 'show-what-to-build' returns true when there are grafts to build.Ludovic Courtès
* guix/ui.scm (show-what-to-build): Distinguish between 'build/full' and 'build'. Return true whe 'build/full' is non-empty, thus taking grafts into account.
2020-03-22ui: Add a notification build handler.Ludovic Courtès
* guix/ui.scm (build-notifier): New variable.
2020-03-11ui: Restore line wrapping for 'package->recutils'.Ludovic Courtès
Fixes a regression introduced when switching to Guile 3.0.0 whereby monkey-patching 'wrap*' wouldn't have any effects due to inlining. * guix/ui.scm (%text-width): Define in terms of the '*line-width*' fluid when it's defined. <top level>: Set (@@ (texinfo plain-text) wrap*) only when '*line-width*' is undefined.
2020-02-28Revert "ui: Only display link in capable terminals."Ludovic Courtès
This reverts commit d7545a6b538813e88195d084f75a3e87065c999e. The commit led to a test failure in 'tests/guix-package-net.sh'. It also led to disagreements discussed here: https://lists.gnu.org/archive/html/guix-devel/2020-02/msg00353.html Reverting until these are addressed.
2020-02-24ui: Don't truncate search output when inside Emacs.Pierre Neidhardt
* guix/ui.scm (display-search-results): Loop over all results when INSIDE_EMACS is set.
2020-02-24ui: Only display link in capable terminals.zimoun
* guix/ui.scm (display-generation): Display generation path on new line. * guix/scripts/describe.scm (channel-commit-hyperlink): Add TRANSFORMER argument. (display-profile-content): Use TRANSFORMER argument to display URL explicitly when terminal does not support hyperlinks.
2020-02-23ui: (size->number "1.M") is correctly parsed.Ludovic Courtès
Reported by Pierre Neidhardt <mail@ambrevar.xyz>. * guix/ui.scm (size->number)[unit-pos]: Add #\. to CHAR-SET:DIGIT. * tests/ui.scm ("size->number, 1.M"): New test.
2020-02-11ui: Fix typo in comment.Ludovic Courtès
Reported by Vincent Legoll <vincent.legoll@gmail.com>. * guix/ui.scm (call-with-error-handling): Remove "come" in comment.
2020-01-24ui: Do not display error messages with bare format strings.Ludovic Courtès
On Guile 3, with, say, an error in ~/.guile, we'd get: $ guix repl guix repl: error: Unbound variable: ~S * guix/ui.scm (call-with-error-handling): Add '&exception-with-kind-and-args' case.
2020-01-17ui: Ignore 'raise-exception' frames when reporting exceptions.Ludovic Courtès
* guix/ui.scm (last-frame-with-source): Check whether FRAME corresponds to 'raise-exception' and skip it if it does.
2020-01-16records: Improve reporting of "invalid field specifier" errors.Ludovic Courtès
Previously users would just see: error: invalid field specifier without source location or hints. * guix/records.scm (expand): Add optional 'parent-form' parameter and pass it to 'syntax-violation' when it is true. (make-syntactic-constructor): Pass S as a third argument to 'report-invalid-field-specifier'. * guix/ui.scm (report-load-error): For 'syntax-error', show SUBFORM or FORM in the message. * tests/records.scm ("define-record-type* & wrong field specifier"): Add a 'subform' parameter and adjust test accordingly. ("define-record-type* & wrong field specifier, identifier"): New test. * tests/guix-system.sh: Add test.
2020-01-15Avoid warnings for the 'delete' binding of (guix build utils).Ludovic Courtès
On Guile 3, importing (guix build utils) leads to warnings such as: WARNING: (gnu packages embedded): imported module (guix build utils) overrides core binding `delete' * gnu/packages/embedded.scm: Select 'alist-replace' from (guix build utils). * guix/ui.scm: Hide 'delete' from (guix build utils).
2020-01-02ui: It's 2020 now!Ludovic Courtès
* guix/ui.scm (show-version-and-exit): Change year to 2020.
2019-11-29ui: 'with-profile-lock' keeps going upon ENOLCK.Ludovic Courtès
* guix/build/syscalls.scm (call-with-file-lock/no-wait): Really pass ARGS to HANDLER. Return #f when HANDLER is called. * guix/ui.scm (profile-lock-handler): Emit a mere warning upon ENOLCK.
2019-11-29ui: Factorize 'with-profile-lock'.Ludovic Courtès
* guix/ui.scm (profile-lock-handler, profile-lock-file): New procedures. (with-profile-lock): New macro. * guix/scripts/package.scm (process-actions): Use 'with-profile-lock' instead of 'with-file-lock/no-wait'. * guix/scripts/pull.scm (guix-pull): Likewise.
2019-11-28pull, describe: Emit hyperlinks for commit identifiers.Ludovic Courtès
* guix/scripts/pull.scm (%vcs-web-views): New variable. (channel-commit-hyperlink): New procedure. (display-news-entry): Add 'channel' parameter. When 'supports-hyperlinks?' returns true, call 'channel-commit-hyperlink'. (display-profile-content): Likewise, and define CHANNEL. (display-channel-specific-news): Pass CHANNEL to 'display-news-entry'. * guix/ui.scm (hyperlink): Make public.
2019-11-28ui: 'display-generation' emits a hyperlink for the generation.Ludovic Courtès
* guix/ui.scm (supports-hyperlinks?): Make 'port' optional. (display-generation): Use 'file-hyperlink' for the heading when 'supports-hyperlinks?' returns true.
2019-11-28ui: Add 'file-hyperlink'.Ludovic Courtès
* guix/ui.scm (file-hyperlink): New procedure. (location->hyperlink): Use it.
2019-11-27ui: Adjust SRFI-34 exception handling to Guile 2.9.5.Ludovic Courtès
* guix/ui.scm (report-load-error, warn-about-load-error) (read/eval): Match (or 'srfi-34 '%exception) instead of just 'srfi-34 to match what Guile 2.9.5 does.
2019-11-09ui: Emit hyperlinks for 'license' in package search results.Ludovic Courtès
* guix/ui.scm (package->recutils): When HYPERLINKS is true, call 'hyperlink' for the 'license' field.
2019-11-09ui: Produce hyperlinks for the 'location' field of search results.Ludovic Courtès
This affects the output of 'guix show', 'guix search', and 'guix system search'. * guix/ui.scm (hyperlink, supports-hyperlinks?, location->hyperlink): New procedures. (package->recutils): Add #:hyperlinks? and honor it. (display-search-results): Pass #:hyperlinks? to PRINT. * guix/scripts/system/search.scm (service-type->recutils): Add #:hyperlinks? and honor it.
2019-10-01ui: 'show-what-to-build' colorizes store file names.Ludovic Courtès
* guix/ui.scm (colorize-store-file-name): New procedure. (show-what-to-build)[colorize-store-item]: New variable. Use it throughout.
2019-09-23ui: Add 'current-message-language'.Ludovic Courtès
* guix/ui.scm (%default-message-language): New variable. (current-message-language): New procedure.
2019-09-19ui: 'relevance' connects regexps with a logical and.zimoun
Fixes <https://bugs.gnu.org/36763>. Previously, the logical and connecting the regexps did not output the expected results (introduced in 8874faaaac665100a095ef25e39c9a389f5a397f). * guix/ui.scm (relevance) [score]: Change its arguments. [regexp->score]: New procedure. * tests/ui.scm ("package-relevance"): Add test. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2019-07-20ui: 'warn-about-load-error' provides hints for unbound variables.Ludovic Courtès
* guix/ui.scm (warn-about-load-error): Add 'unbound-variable' clause. * tests/guix-build.sh: Add test.
2019-07-20ui: 'warn-about-load-error' warns about file/module name mismatches.Ludovic Courtès
* guix/discovery.scm (scheme-modules): Rename the inner 'file' to 'relative'. Pass FILE as an addition argument to WARN. * guix/ui.scm (warn-about-load-error): Add 'module' argument (actually, what was called 'file' really contained a module name.) Call 'check-module-matches-file' in the catch-all error case. (check-module-matches-file): New procedure. * tests/guix-build.sh: Test it.
2019-07-11guix gc: Correctly handle '--delete-generations' with no arguments.Ludovic Courtès
Previously, 'guix gc --delete-generations' would crash: the "" pattern would be passed to 'matching-generations', which would return #f instead of returning a list. Reported by Raghav Gururajan <rvgn@disroot.org> in <https://bugs.gnu.org/36466>. * guix/ui.scm (matching-generations): Raise an error when passed an invalid pattern. * guix/scripts/gc.scm (delete-old-generations): Check if PATTERN is true. (%options): Leave ARG as-is for 'delete-generations'. (guix-gc): Use 'assq' instead of 'assoc-ref' for 'delete-generations'. * guix/scripts/package.scm (delete-matching-generations): Replace (string-null? pattern) with (not pattern). Remove 'else' clause. (%options): Leave ARG as-is for 'delete-generations'. * guix/scripts/pull.scm (%options): Leave ARG as-is for 'list-generations'. (process-query): Replace (string-null? pattern) with (not pattern). * guix/scripts/system.scm (list-generations): Likewise, and remove 'else' clause. (process-command): Use #f instead of "" when no pattern is given.
2019-07-05derivations: Simplify 'substitution-oracle'.Ludovic Courtès
* guix/derivations.scm (substitution-oracle)[valid?, dependencies]: Remove. [closure]: New procedure. Rename parameter from 'drv' to 'inputs-or-drv' and adjust accordingly. (derivation-build-plan): Pass INPUTS directly to 'substitution-oracle'. * guix/ui.scm (show-what-to-build)[substitutable-info]: Likewise.
2019-07-05derivations: 'derivation-build-plan' recurses on substituables.Ludovic Courtès
This fixes a bug whereby "guix build texlive -n" would report: 0.0 MB would be downloaded: /gnu/store/…-texlive-20180414 instead of: The following derivation would be built: /gnu/store/…-texlive-texmf-20180414.drv 2,595.2 MB would be downloaded: /gnu/store/…-texlive-20180414-texmf.tar.xz /gnu/store/…-texlive-20180414 where 'texlive-texmf' is a non-substitutable dependency of 'texlive'. * guix/derivations.scm (dependencies-of-substitutables): New procedure. (derivation-build-plan): When 'input-substitutable-info' returns true, append the subset of DEPS that corresponds to SUBSTITUABLES to the first argument of 'loop'. * guix/ui.scm (show-what-to-build): Remove half-baked traversal of DOWNLOAD. * tests/derivations.scm ("derivation-build-plan and substitutes, non-substitutable dep"): New test.
2019-06-27ui: 'show-derivation-outputs' accepts <derivation-input> records.Ludovic Courtès
* guix/ui.scm (show-derivation-outputs): Handle <derivation-input> records.
2019-06-27ui: 'show-what-to-build' accepts derivation inputs.Ludovic Courtès
This is a followup to f8a9f99cd602ce1dc5307cb0c21ae718ad8796bb. * guix/ui.scm (show-what-to-build)[inputs]: New variables. [substitutable-info]: Build the derivation list from INPUTS. Pass INPUTS to 'derivation-build-plan'.
2019-06-27ui: 'show-what-to-build' uses 'derivation-build-plan'.Ludovic Courtès
* guix/ui.scm (show-what-to-build)[build-or-substitutable?]: Remove. Use 'derivation-build-plan' instead of 'derivation-prerequisites-to-build', passing it all of DRV at once, and remove 'fold2' shenanigans and postprocessing of BUILD.
2019-06-27ui: Add 'display-search-results' and use it.Ludovic Courtès
* guix/ui.scm (display-search-results): New procedure. * guix/scripts/package.scm (find-packages-by-description): Remove 'unzip2' call and return a list of pairs. (process-query): Change to use 'display-search-results'. * guix/scripts/system/search.scm (find-service-types): Remove 'unzip2' call and return a list of pairs. (guix-system-search): Use 'display-search-results'.
2019-06-27ui: 'relevance' considers regexps connected with a logical and.Ludovic Courtès
* guix/ui.scm (relevance)[score]: Change to return 0 when one of REGEXPS doesn't match. * tests/ui.scm ("package-relevance"): New test.