summaryrefslogtreecommitdiff
path: root/guix/ui.scm
Commit message (Collapse)AuthorAge
* ui: Report key-and-arg exceptions correctly.Ludovic Courtès2020-08-05
| | | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/42601>. Reported by Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>. Regression introduced in efe037fc5cc3134bbc3ef4e36b49a3f788921b68 whereby errors like 'wrong-type-arg' would be improperly reported: guix environment: error: Wrong type argument in position ~A (expecting ~A): ~S See also commit a07d5e558b5403dad0a59776b950b6b02169c249. * guix/ui.scm (call-with-error-handling): Move 'message-condition?' clause after '&exception-with-kind-and-args' clause.
* ui: Add #:verbosity to 'show-what-to-build'.Ludovic Courtès2020-08-03
| | | | | | * guix/ui.scm (%default-verbosity): New variable. (show-what-to-build): Add #:verbosity and honor it. (build-notifier): Add #:verbosity and pass it to 'show-what-to-build'.
* processes: Allow 'less' to properly estimate line length.Ludovic Courtès2020-07-27
| | | | | | | | | | | Until now, the first few lines in the output of 'guix processes' could disappear in 'less'. * guix/ui.scm (call-with-paginated-output-port): Add #:less-options parameter and honor it. (with-paginated-output-port): Allow callers to pass #:less-options. * guix/scripts/processes.scm (guix-processes): Pass #:less-options to 'with-paginated-output-port'.
* Use 'formatted-message' instead of '&message' where appropriate.Ludovic Courtès2020-07-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * gnu.scm (%try-use-modules): Use 'formatted-message' instead of '&message'. * gnu/machine/digital-ocean.scm (maybe-raise-unsupported-configuration-error): Likewise. * gnu/machine/ssh.scm (machine-check-file-system-availability): Likewise. (machine-check-building-for-appropriate-system): Likewise. (deploy-managed-host): Likewise. (maybe-raise-unsupported-configuration-error): Likewise. * gnu/packages.scm (search-patch): Likewise. * gnu/services.scm (%service-with-default-value): Likewise. (files->etc-directory): Likewise. (fold-services): Likewise. * gnu/system.scm (locale-name->definition*): Likewise. * gnu/system/mapped-devices.scm (check-device-initrd-modules): Likewise. (check-luks-device): Likewise. * guix/channels.scm (latest-channel-instance): Likewise. * guix/cve.scm (json->cve-items): Likewise. * guix/git-authenticate.scm (commit-signing-key): Likewise. (commit-authorized-keys): Likewise. (authenticate-commit): Likewise. (verify-introductory-commit): Likewise. * guix/remote.scm (remote-pipe-for-gexp): Likewise. * guix/scripts/graph.scm (assert-package): Likewise. * guix/scripts/offload.scm (private-key-from-file*): Likewise. * guix/ssh.scm (authenticate-server*): Likewise. (open-ssh-session): Likewise. (remote-inferior): Likewise. * guix/ui.scm (matching-generations): Likewise. * guix/upstream.scm (package-update): Likewise. * tests/channels.scm ("latest-channel-instances, missing introduction for 'guix'"): Catch 'formatted-message?'. ("authenticate-channel, wrong first commit signer"): Likewise. * tests/lint.scm ("patches: not found"): Adjust message string. * tests/packages.scm ("patch not found yields a run-time error"): Catch 'formatted-message?'. * guix/lint.scm (check-patch-file-names): Handle 'formatted-message?'. (check-derivation): Ditto.
* diagnostics: Add '&formatted-message'.Ludovic Courtès2020-07-25
| | | | | | | | | | | | | | This allows 'gettext' to be called on the format string at the site where the exception is caught (rather than the site where it's thrown). It also allows for argument highlighting. * guix/diagnostics.scm (&formatted-message): New condition type. (check-format-string): New procedure. (formatted-message): New macro. * guix/ui.scm (report-load-error): Add clause for 'formatted-message?'. (warn-about-load-error): Likewise. (call-with-error-handling): Likewise. (read/eval): Likewise.
* ui: Factorize '&message' handling.Ludovic Courtès2020-07-25
| | | | | * guix/ui.scm (call-with-error-handling): Factorize the three 'message-condition?' clauses into one.
* ui: 'with-error-handling' does not unwind the stack.Ludovic Courtès2020-07-15
| | | | | | | | | | | | | | | | | | 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'.
* Revert "ui: Use package-description-string."Ludovic Courtès2020-07-02
| | | | | | | | | | 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.
* processes: Write to $PAGER.Ludovic Courtès2020-06-28
| | | | | | * guix/ui.scm (with-paginated-output-port): Export. * guix/scripts/processes.scm (guix-processes): Use it instead of writing directly to (current-output-port).
* ui: Use package-description-string.Arun Isaac2020-06-15
| | | | | * guix/ui.scm (package->recutils): Use package-description-string instead of package-description and P_.
* ui: Do not translate package synopsis a second time.Arun Isaac2020-06-15
| | | | | * guix/ui.scm (package->recutils): package-synopsis-string already returns a translated string. Do not attempt to translate it again.
* ui: Cut off search early if any regexp does not match.Arun Isaac2020-06-15
| | | | | * 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.
* ui: Set 'LESS' environment variable unconditionally.Ludovic Courtès2020-06-14
| | | | | | | | 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.
* ui: 'display-search-results' automatically invokes the pager.Ludovic Courtès2020-06-06
| | | | | | * 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.
* ui: Fix typos, 80-col & grammar in comments & docstrings.Vincent Legoll2020-04-17
| | | | | | | | | | | * 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>
* ui: Clarify "dependencies changed".Ludovic Courtès2020-04-02
| | | | | | | Suggested by Leo Famulari <leo@famulari.name>. * guix/ui.scm (show-manifest-transaction): Change to "dependencies or package changed".
* ui: 'show-manifest-transaction' tabulates package lists for install/remove.Ludovic Courtès2020-03-24
| | | | | | | 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.
* ui: 'show-manifest-transaction' tabulates upgraded package lists.Ludovic Courtès2020-03-24
| | | | | | | | | | 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.
* ui: Add 'indented-string'.Ludovic Courtès2020-03-23
| | | | | | | | | * 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.
* ui: 'build-notifier' invokes continuation when there's nothing to do.Ludovic Courtès2020-03-22
| | | | | * guix/ui.scm (build-notifier): Call CONTINUE when there's nothing to build or download, even when DRY-RUN? is true.
* ui: 'show-what-to-build' returns two values, for builds and downloads.Ludovic Courtès2020-03-22
| | | | * guix/ui.scm (show-what-to-build): Return two values.
* ui: 'show-what-to-build' returns true when there are grafts to build.Ludovic Courtès2020-03-22
| | | | | | * 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.
* ui: Add a notification build handler.Ludovic Courtès2020-03-22
| | | | * guix/ui.scm (build-notifier): New variable.
* ui: Restore line wrapping for 'package->recutils'.Ludovic Courtès2020-03-11
| | | | | | | | | | 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.
* Revert "ui: Only display link in capable terminals."Ludovic Courtès2020-02-28
| | | | | | | | | | | 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.
* ui: Don't truncate search output when inside Emacs.Pierre Neidhardt2020-02-24
| | | | | * guix/ui.scm (display-search-results): Loop over all results when INSIDE_EMACS is set.
* ui: Only display link in capable terminals.zimoun2020-02-24
| | | | | | | * 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.
* ui: (size->number "1.M") is correctly parsed.Ludovic Courtès2020-02-23
| | | | | | | 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.
* ui: Fix typo in comment.Ludovic Courtès2020-02-11
| | | | | | Reported by Vincent Legoll <vincent.legoll@gmail.com>. * guix/ui.scm (call-with-error-handling): Remove "come" in comment.
* ui: Do not display error messages with bare format strings.Ludovic Courtès2020-01-24
| | | | | | | | | | 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.
* ui: Ignore 'raise-exception' frames when reporting exceptions.Ludovic Courtès2020-01-17
| | | | | * guix/ui.scm (last-frame-with-source): Check whether FRAME corresponds to 'raise-exception' and skip it if it does.
* records: Improve reporting of "invalid field specifier" errors.Ludovic Courtès2020-01-16
| | | | | | | | | | | | | | | | | | | 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.
* Avoid warnings for the 'delete' binding of (guix build utils).Ludovic Courtès2020-01-15
| | | | | | | | | 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).
* ui: It's 2020 now!Ludovic Courtès2020-01-02
| | | | * guix/ui.scm (show-version-and-exit): Change year to 2020.
* ui: 'with-profile-lock' keeps going upon ENOLCK.Ludovic Courtès2019-11-29
| | | | | | * 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.
* ui: Factorize 'with-profile-lock'.Ludovic Courtès2019-11-29
| | | | | | | | | * 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.
* pull, describe: Emit hyperlinks for commit identifiers.Ludovic Courtès2019-11-28
| | | | | | | | | | * 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.
* ui: 'display-generation' emits a hyperlink for the generation.Ludovic Courtès2019-11-28
| | | | | | * guix/ui.scm (supports-hyperlinks?): Make 'port' optional. (display-generation): Use 'file-hyperlink' for the heading when 'supports-hyperlinks?' returns true.
* ui: Add 'file-hyperlink'.Ludovic Courtès2019-11-28
| | | | | * guix/ui.scm (file-hyperlink): New procedure. (location->hyperlink): Use it.
* ui: Adjust SRFI-34 exception handling to Guile 2.9.5.Ludovic Courtès2019-11-27
| | | | | | * 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.
* ui: Emit hyperlinks for 'license' in package search results.Ludovic Courtès2019-11-09
| | | | | * guix/ui.scm (package->recutils): When HYPERLINKS is true, call 'hyperlink' for the 'license' field.
* ui: Produce hyperlinks for the 'location' field of search results.Ludovic Courtès2019-11-09
| | | | | | | | | | | | 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.
* ui: 'show-what-to-build' colorizes store file names.Ludovic Courtès2019-10-01
| | | | | | * guix/ui.scm (colorize-store-file-name): New procedure. (show-what-to-build)[colorize-store-item]: New variable. Use it throughout.
* ui: Add 'current-message-language'.Ludovic Courtès2019-09-23
| | | | | * guix/ui.scm (%default-message-language): New variable. (current-message-language): New procedure.
* ui: 'relevance' connects regexps with a logical and.zimoun2019-09-19
| | | | | | | | | | | | | 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>
* ui: 'warn-about-load-error' provides hints for unbound variables.Ludovic Courtès2019-07-20
| | | | | * guix/ui.scm (warn-about-load-error): Add 'unbound-variable' clause. * tests/guix-build.sh: Add test.
* ui: 'warn-about-load-error' warns about file/module name mismatches.Ludovic Courtès2019-07-20
| | | | | | | | | | * 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.
* guix gc: Correctly handle '--delete-generations' with no arguments.Ludovic Courtès2019-07-11
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* derivations: Simplify 'substitution-oracle'.Ludovic Courtès2019-07-05
| | | | | | | | | * 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.
* derivations: 'derivation-build-plan' recurses on substituables.Ludovic Courtès2019-07-05
| | | | | | | | | | | | | | | | | | | | | | | | | | 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.