summaryrefslogtreecommitdiff
path: root/guix/ui.scm
AgeCommit message (Collapse)Author
2023-10-17ui: Handle EPIPE errors when displaying Guix version.Simon Tournier
Fixes <https://issues.guix.gnu.org/66254>. Reported by Clément Lassieur <clement@lassieur.org>. * guix/ui.scm (show-version-and-exit): Handle EPIPE errors when displaying version.
2023-08-17ui: 'load*' accepts /dev/fd/N files pointing to a pipe.Ludovic Courtès
This allows users to write Bash commands like: guix time-machine -C <(echo %default-channels) -- ... or: guix build -m <(echo '(specifications->manifest (list "guile"))') Previously, on GNU/Linux, they would fail with: error: failed to load '/dev/fd/63': No such file or directory * guix/ui.scm (try-canonicalize-path): New procedure. (load*): Use it. * tests/guix-build.sh: Test 'guix build -m' with a /dev/fd/N file.
2023-06-14packages: 'package-transitive-supported-systems' detects cycles.Ludovic Courtès
With this change, commands such as 'guix build' or 'guix package' report obvious package-level cycles upfront. Derivation-level cycles are not detected. * guix/packages.scm (&package-cyclic-dependency-error): New condition type. (package-transitive-supported-systems): Define 'visited', check it, and parameterize it. * guix/ui.scm (call-with-error-handling): Handle '&package-cyclic-dependency-error'. * tests/packages.scm ("package-transitive-supported-systems detects cycles"): Add test.
2023-03-17ui: format 'display-hint' output when no arguments are passed.Antero Mejr
When display-hint is given format specifiers such as "~%" but no arguments, it does not format the output, causing the specifiers to be visible in the displayed text. * guix/ui.scm (display-hint): Format output when no arguments are passed. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-02-27ui: 'display-hint' quotes extra arguments for Texinfo.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/61201>. Previously, common practice was to splice arbitrary strings (user names, file names, etc.) into Texinfo snippets passed to 'display-hint'. This is unsafe in the general case because at signs and braces need to be escaped to produced valid Texinfo. This commit addresses that. * guix/ui.scm (texinfo-quote): New procedure. (display-hint): When ARGUMENTS is non-empty, pass it to 'texinfo-quote' and call 'format'. (report-unbound-variable-error, check-module-matches-file) (display-collision-resolution-hint, run-guix-command): Remove explicit 'format' call; pass 'format' arguments as extra arguments to 'display-hint'. * gnu/services/monitoring.scm (zabbix-front-end-config): Likewise. * guix/scripts.scm (warn-about-disk-space): Likewise. * guix/scripts/build.scm (%standard-cross-build-options) (%standard-native-build-options): Likewise. * guix/scripts/describe.scm (display-checkout-info): Likewise. * guix/scripts/environment.scm (suggest-command-name): Likewise. * guix/scripts/home.scm (process-command): Likewise. * guix/scripts/home/edit.scm (service-type-not-found): Likewise. * guix/scripts/import.scm (guix-import): Likewise. * guix/scripts/package.scm (display-search-path-hint): Likewise. * guix/scripts/pull.scm (build-and-install): Likewise. * guix/scripts/shell.scm (auto-detect-manifest): Likewise. * guix/scripts/system.scm (check-file-system-availability): Likewise. (guix-system): Likewise. * guix/scripts/system/edit.scm (service-type-not-found): Likewise. * guix/status.scm (print-build-event): Likewise.
2023-01-25ui: Add "error-reporting wrapper" for 'mkdir'.Ludovic Courtès
* guix/ui.scm <top level>: Change 'mkdir' to use an error-reporting wrapper.
2023-01-03ui: It's 2023 now!Ludovic Courtès
* guix/ui.scm (show-version-and-exit): Change year to 2023.
2022-12-13ui: Take package upstream name into account when searching.Lars-Dominik Braun
* guix/ui.scm (%package-metrics): Add PACKAGE-UPSTREAM-NAME*. * tests/ui.scm ("package-relevance and upstream name"): New test. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-11-05guix: ui: Add default synopsis for “doc” output.Liliana Marie Prikler
* guix/ui.scm (package->recutils)[%default-output-synopses]: Add “doc”.
2022-11-05guix: ui: Improve missing output descriptions.Liliana Marie Prikler
The current reference to Intel's Appendix H appears too obscure and confusing. * guix/ui.scm (package->recutils)[output->recutils]: Replace “see Appendix H” with “[description missing]”.
2022-11-05guix: ui: Handle single outputs.Liliana Marie Prikler
The current code says "out" contains "everything else", even if there's no other output to contain anything. * guix/ui.scm (package->recutils)[default-output-synopses]: New variable. [output->recutils]: Take default synopses as argument. ["outputs"]: Distinguish single and multiple outputs.
2022-08-16ui: Describe package outputs.Liliana Marie Prikler
* guix/ui.scm (package->recutils): Output outputs with their descriptions, one per line. * po/packages/Makevars (XGETTEXT_OPTIONS): Add ‘output-synopsis’ as keyword.
2022-06-16ui: Improve pager selection logic when less is not installed.Taiju HIGASHI
* guix/ui.scm (find-available-pager): New procedure. (call-with-paginated-output-port): Use it. * guix/utils.scm (call-with-environment-variables): Allow clearing of specified environment variables. * tests/ui.scm (make-empty-file, assert-equals-find-available-pager): New procedures. ("find-available-pager, GUIX_PAGER takes precedence") ("find-available-pager, PAGER takes precedence") ("find-available-pager, 'less' takes precedence") ("find-available-pager, 'more' takes precedence") ("find-available-pager, no pager"): New tests. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-04-19ui: Highlight package and service search results.Ludovic Courtès
* guix/ui.scm (package->recutils): Add #:highlighting parameter and use it. (display-search-results): Add #:regexps parameter; call 'colorize-full-matches' and pass #:highlighting. * guix/scripts/package.scm (process-query): Pass #:regexps to 'display-search-results'. * guix/scripts/home.scm (search): Likewise. * guix/scripts/system/search.scm (service-type->recutils): Add #:highlighting parameter and use it.
2022-04-19ui: Highlight important bits in recutils output.Ludovic Courtès
* guix/scripts/system/search.scm (service-type->recutils): Highlight the value of the 'name' field. * guix/ui.scm (package->recutils): Likewise for 'name' and 'version'.
2022-04-08ui: Move 'location->hyperlink' to (guix diagnostics).Ludovic Courtès
* guix/ui.scm (location->hyperlink): Move to... * guix/diagnostics.scm: ... here. * guix/scripts/system/search.scm: Adjust imports accordingly.
2022-04-08ui: Move hyperlink facilities to (guix colors).Ludovic Courtès
* guix/ui.scm (supports-hyperlinks?, file-hyperlink, hyperlink): Move to... * guix/colors.scm: ... here. * guix/scripts/home.scm, guix/scripts/system.scm, guix/scripts/system/search.scm: Adjust imports accordingly.
2022-03-18ui: 'show-what-to-build' highlights "would be downloaded" headings.Ludovic Courtès
* guix/ui.scm (show-what-to-build): Highlight "X MB would be downloaded".
2022-03-18ui: 'show-what-to-build' highlights "The following [...] will be built".Ludovic Courtès
* guix/colors.scm (highlight/warn): New procedure. * guix/ui.scm (show-what-to-build): Use 'highlight/warn' when displaying what would/will be built.
2022-02-14ui: 'display-generation' uses color when talking to a pager.Ludovic Courtès
This makes sure that, say, 'guix pull -l' benefits from colors when its output is piped to a pager, as long as the underlying terminal supports it. * guix/ui.scm (display-generation): Add second argument to 'highlight'.
2022-02-14ui: 'with-paginated-output-port' gives access to the wrapped port.Ludovic Courtès
* guix/ui.scm (pager-port-mapping): New variable. (pager-wrapped-port): New procedure. (call-with-paginated-output-port): Parameterize 'pager-port-mapping'.
2022-01-22guix: ui: Fix typo in docstring.jgart
* guix/ui.scm (colorize-store-file-name)[docstring]: Fix typo. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2022-01-11ui: 'package->recutils' can split the "system:" line.Ludovic Courtès
Previously, long system lines would not be split, which would confuse 'less', possibly leading it to hide the first line of the package recutils record (the "name:" line). * guix/ui.scm (package->recutils)[split-lines]: New procedure. [dependencies->recutils]: Use it. Use it for the "systems:" value.
2022-01-01ui: It's 2022!Leo Famulari
Happy new year! * guix/ui.scm (show-version-and-exit): Change the year to 2022.
2021-11-07ui: 'load*' correctly reports 'read-error' in all cases.Ludovic Courtès
Previously, 'read-error' exceptions other than "missing closing paren" would not be reported; instead, we'd directly call (exit 1) without printing anything. Fixes <https://issues.guix.gnu.org/51463>. Reported by Alice BRENON <alice.brenon@ens-lyon.fr>. * guix/ui.scm (report-load-error): Report the error without re-throwing upon 'read-error'. * tests/guix-build.sh: Add test.
2021-10-31ui: Use DISPLAY in SHOW-GUIX-HELP.Tobias Geerinckx-Rice
* guix/ui.scm (show-guix-help): Use DISPLAY where FORMAT isn't needed.
2021-10-31ui: Add top-level options to help text.Tobias Geerinckx-Rice
This also makes automated ‘guix --h<Tab>’ completion possible. * guix/ui.scm (show-guix-help): Document that an OPTION's an option, and all valid options.
2021-10-28ui: Gracefully handle invalid Texinfo markup in package blurbs.Ludovic Courtès
Previously 'guix search' & co. would crash when encountering invalid Texinfo. * guix/ui.scm (texi->plain-text*): New procedure. (package-field-string, package->recutils): Use it.
2021-07-15ui: Improve output appearance when listing generations.Steve Sprang
* guix/ui.scm (display-profile-content-diff): Use pretty-print-table to format output. (display-profile-content): Likewise. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-06-29ui: Have 'guix help' stat less.Ludovic Courtès
This reduces the number of syscalls for: env -i $(type -P strace) -c $(type -P guix) help from 4.3K to 2.2K, thereby reducing startup time. Reported by Julien Lepiller. * guix/ui.scm (run-guix-command): Move %FILE-PORT-NAME-CANONICALIZATION to... (run-guix): ... here.
2021-06-01ui, lint: Simplify exception handling in Guile 3 style.Ludovic Courtès
* guix/lint.scm (check-derivation)[try]: Remove "catch #t" wrapping. * guix/ui.scm (call-with-error-handling): Remove "catch 'system-error" and move 'system-error handling to the &exception-with-kind-and-args clause.
2021-06-01maint: Require Guile 3.0.Ludovic Courtès
* configure.ac: Require Guile 3.0. * doc/guix.texi (Requirements): Adjust accordingly. * gnu/packages/package-management.scm (guile2.2-guix): Remove. * guix/lint.scm (exception-with-kind-and-args?): Remove 'cond-expand'. * guix/scripts/deploy.scm (deploy-machine*): Likewise. * guix/store.scm (call-with-store): Likewise. * guix/swh.scm (http-get*, http-post*): Likewise. * guix/ui.scm (without-compiler-optimizations, guard*) (call-with-error-handling): Likewise.
2021-05-17ui: 'load*' compiles with '-O1'.Ludovic Courtès
With this change, the wall-clock time of: guix system build --no-grafts -d gnu/system/install.scm goes from 5.0s to 2.3s on Guile 3.0.5. * guix/ui.scm (without-compiler-optimizations): New macro. (load*): Use it.
2021-05-17ui: Remove Guile 2.2.3 workaround.Ludovic Courtès
This became dead code with commit 4f621a2b003e85d480999e4d0630e9dc3de85bc3. * guix/ui.scm (load*): Remove Guile 2.2.3 workaround.
2021-05-05ui: Suggest installing glibc-locales, not glibc-utf8-locales.Maxim Cournoyer
Users (both old and new) struggling with locale warnings is a recurrent theme; part of it may be due to the glibc-utf8-locales package being misleading, as it only includes a subset of the UTF-8 locales. To prevent confusion, suggest installing the glibc-locales package instead. * guix/ui.scm (install-locale): Do not mention glibc-utf8-locales in the hint message. Use glibc-locales instead of glibc-utf8-locales in the provided example.
2021-04-29diagnostics, ui: Adjust to 'read-error' and 'syntax-error' in Guile 3.0.6.Ludovic Courtès
* guix/diagnostics.scm (source-properties->location): Add clause for vectors. * guix/ui.scm (report-load-error): Tweak 'read-error' handling for 3.0.6. * tests/guix-package.sh: Relax regexp for the "unbound variable" diagnostic check. * tests/guix-system.sh: Adjust "missing closing paren" check for 3.0.6. * tests/records.scm (location-alist): New procedure. ("define-record-type* & wrong field specifier") ("define-record-type* & wrong field specifier, identifier") ("define-record-type* & duplicate initializers"): Use it.
2021-02-24ui: Bug-report URL in '--help' can be translated.Ludovic Courtès
* guix/ui.scm (show-bug-report-information): Add "/en" to the help URL and pass it to 'G_'.
2021-02-19ui: Fix typo in description.Brice Waegeneire
* guix/ui.scm (switch-to-generation*): Fix typo in description.
2021-02-03ui: Add hint for command typo.zimoun
* guix/ui.scm (command-hint): New variable (run-guix-command): Use it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-01-28ui: Look up extensions before built-in commands.zimoun
* guix/ui.scm (run-guix-command): Modify order so that extensions are allowed to override default commands. Co-authored-by: Ricardo Wurmus <rekado@elephly.net>
2021-01-07ui: Fix order of match clauses.Simon Tournier
Fixes <https://bugs.gnu.org/45709>. This is a follow-up to commit cf289d7cfa34315bf13b3114b9a5bf3d3c05ebea. * guix/ui.scm (run-guix-command): Match for #false first. Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
2021-01-05Discover extensions via GUIX_EXTENSIONS_PATH.Ricardo Wurmus
* guix/scripts.scm (%command-categories): Add extension category. * guix/ui.scm (source-file-command): Also parse extensions files. (command-files): Accept an optional directory argument. (extension-directories): New procedure. (commands): Use it. (show-guix-help): Hide empty categories. (run-guix-command): Try loading an extension if there is no matching Guix command.
2021-01-04ui: It's 2021 now!Ludovic Courtès
* guix/ui.scm (show-version-and-exit): Change year to 2021.
2020-12-05ui: Handle multiword and empty $PAGER values.Tobias Geerinckx-Rice
* guix/ui.scm (call-with-paginated-output-port): Empty PAGER values disable paging. Non-empty ones are split into command arguments. Reported by Daniel Brooks <db48x@db48x.net>.
2020-11-26deploy: Let key-and-args exceptions through.Ludovic Courtès
Fixes <https://bugs.gnu.org/44825>. Reported by Christopher Lemmer Webber <cwebber@dustycloud.org>. * guix/ui.scm (guard*): Export. * guix/scripts/deploy.scm (deploy-machine*): Use 'guard*' instead of 'guard'. Add '&exception-with-kind-and-args' case.
2020-11-10ui: Use the right accessor when reporting '&gexp-input-error'.Ludovic Courtès
* guix/ui.scm (call-with-error-handling): In the 'gexp-input-error?' case, use 'gexp-error-invalid-input' as the accessor.
2020-11-06ui: Add missing format argument in 'warn-about-load-error'.Ludovic Courtès
* guix/ui.scm (warn-about-load-error): Add missing argument to 'warning'.
2020-10-15ui: Only suggest modules that export the unbound variable identifier.Ludovic Courtès
Fixes <https://bugs.gnu.org/43498>. Reported by Tobias Geerinckx-Rice <me@tobias.gr>. * guix/ui.scm (known-variable-definition): Check for variables in the public interface of HEAD, not in HEAD itself. * tests/guix-build.sh: Add test.
2020-10-02ui: Use "guix install" in locale hint.Ludovic Courtès
* guix/ui.scm (install-locale): Change "guix package -i" to "guix install".
2020-10-01ui: "guix help" silently ignores EPIPE.Ludovic Courtès
This avoids a backtrace when running "guix help | head" or similar. * guix/ui.scm (run-guix): Wrap 'show-guix-help' calls in 'leave-on-EPIPE'.