summaryrefslogtreecommitdiff
path: root/guix/ui.scm
Commit message (Collapse)AuthorAge
* guix: ui: Fix typo in docstring.base-for-series-11087base-for-series-11086base-for-series-11085base-for-series-11084base-for-series-11083base-for-series-11082jgart2022-01-22
| | | | | | * guix/ui.scm (colorize-store-file-name)[docstring]: Fix typo. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
* ui: 'package->recutils' can split the "system:" line.Ludovic Courtès2022-01-11
| | | | | | | | | | 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.
* ui: It's 2022!Leo Famulari2022-01-01
| | | | | | Happy new year! * guix/ui.scm (show-version-and-exit): Change the year to 2022.
* ui: 'load*' correctly reports 'read-error' in all cases.Ludovic Courtès2021-11-07
| | | | | | | | | | | | | 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.
* ui: Use DISPLAY in SHOW-GUIX-HELP.Tobias Geerinckx-Rice2021-10-31
| | | | * guix/ui.scm (show-guix-help): Use DISPLAY where FORMAT isn't needed.
* ui: Add top-level options to help text.Tobias Geerinckx-Rice2021-10-31
| | | | | | | 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.
* ui: Gracefully handle invalid Texinfo markup in package blurbs.Ludovic Courtès2021-10-28
| | | | | | | | 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.
* ui: Improve output appearance when listing generations.Steve Sprang2021-07-15
| | | | | | | | * 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>
* ui: Have 'guix help' stat less.Ludovic Courtès2021-06-29
| | | | | | | | | | | | | | 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.
* ui, lint: Simplify exception handling in Guile 3 style.Ludovic Courtès2021-06-01
| | | | | | | * 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.
* maint: Require Guile 3.0.Ludovic Courtès2021-06-01
| | | | | | | | | | | | * 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.
* ui: 'load*' compiles with '-O1'.Ludovic Courtès2021-05-17
| | | | | | | | | | | 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.
* ui: Remove Guile 2.2.3 workaround.Ludovic Courtès2021-05-17
| | | | | | | This became dead code with commit 4f621a2b003e85d480999e4d0630e9dc3de85bc3. * guix/ui.scm (load*): Remove Guile 2.2.3 workaround.
* ui: Suggest installing glibc-locales, not glibc-utf8-locales.Maxim Cournoyer2021-05-05
| | | | | | | | | | | 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.
* diagnostics, ui: Adjust to 'read-error' and 'syntax-error' in Guile 3.0.6.Ludovic Courtès2021-04-29
| | | | | | | | | | | | | * 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.
* ui: Bug-report URL in '--help' can be translated.Ludovic Courtès2021-02-24
| | | | | * guix/ui.scm (show-bug-report-information): Add "/en" to the help URL and pass it to 'G_'.
* ui: Fix typo in description.Brice Waegeneire2021-02-19
| | | | * guix/ui.scm (switch-to-generation*): Fix typo in description.
* ui: Add hint for command typo.zimoun2021-02-03
| | | | | | | * guix/ui.scm (command-hint): New variable (run-guix-command): Use it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* ui: Look up extensions before built-in commands.zimoun2021-01-28
| | | | | | | * 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>
* ui: Fix order of match clauses.Simon Tournier2021-01-07
| | | | | | | | | | 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>
* Discover extensions via GUIX_EXTENSIONS_PATH.Ricardo Wurmus2021-01-05
| | | | | | | | | | | * 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.
* ui: It's 2021 now!Ludovic Courtès2021-01-04
| | | | * guix/ui.scm (show-version-and-exit): Change year to 2021.
* ui: Handle multiword and empty $PAGER values.Tobias Geerinckx-Rice2020-12-05
| | | | | | | * 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>.
* deploy: Let key-and-args exceptions through.Ludovic Courtès2020-11-26
| | | | | | | | | 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.
* ui: Use the right accessor when reporting '&gexp-input-error'.Ludovic Courtès2020-11-10
| | | | | * guix/ui.scm (call-with-error-handling): In the 'gexp-input-error?' case, use 'gexp-error-invalid-input' as the accessor.
* ui: Add missing format argument in 'warn-about-load-error'.Ludovic Courtès2020-11-06
| | | | * guix/ui.scm (warn-about-load-error): Add missing argument to 'warning'.
* ui: Only suggest modules that export the unbound variable identifier.Ludovic Courtès2020-10-15
| | | | | | | | | 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.
* ui: Use "guix install" in locale hint.Ludovic Courtès2020-10-02
| | | | * guix/ui.scm (install-locale): Change "guix package -i" to "guix install".
* ui: "guix help" silently ignores EPIPE.Ludovic Courtès2020-10-01
| | | | | | | 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'.
* ui: 'show-what-to-build' displays download estimate more prominently.Ludovic Courtès2020-09-14
| | | | | | * guix/ui.scm (show-what-to-build): When VERBOSITY is 1, add a newline before the "would/will be downloaded" line, and wrap that message in 'highlight'.
* ui: Lexicographically sort transaction entries based on their package name.Maxim Cournoyer2020-09-12
| | | | | * guix/ui.scm (show-manifest-transaction): Sort entries to be displayed in a tabulated view.
* ui: Refactor the package-strings helper in show-manifest-transaction.Maxim Cournoyer2020-09-12
| | | | | | | * guix/ui.scm (show-manifest-transaction)[package-strings]: Add an OLD-VERSIONS keyword parameter. Absorb the code path previously found in the upgrade-string. Remove upgrade-string. (show-manifest-transaction): Adjust to the above changes.
* scripts: Use 'define-command' and have 'guix help' use that.Ludovic Courtès2020-09-10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes 'guix help' to print a short synopsis for each command and to group commands by category. * guix/scripts.scm (synopsis, category): New variables. (define-command-categories, define-command): New macros. (%command-categories): New variable. * guix/ui.scm (<command>): New record type. (source-file-command): New procedure. (command-files): Return absolute file names. (commands): Return a list of <command> records. (show-guix-help)[display-commands, category-predicate]: New procedures. Display commands grouped in three categories. * guix/scripts/archive.scm (guix-archive): Use 'define-command'. * guix/scripts/authenticate.scm (guix-authenticate): Likewise. * guix/scripts/build.scm (guix-build): Likewise. * guix/scripts/challenge.scm (guix-challenge): Likewise. * guix/scripts/container.scm (guix-container): Likewise. * guix/scripts/copy.scm (guix-copy): Likewise. * guix/scripts/deploy.scm (guix-deploy): Likewise. * guix/scripts/describe.scm (guix-describe): Likewise. * guix/scripts/download.scm (guix-download): Likewise. * guix/scripts/edit.scm (guix-edit): Likewise. * guix/scripts/environment.scm (guix-environment): Likewise. * guix/scripts/gc.scm (guix-gc): Likewise. * guix/scripts/git.scm (guix-git): Likewise. * guix/scripts/graph.scm (guix-graph): Likewise. * guix/scripts/hash.scm (guix-hash): Likewise. * guix/scripts/import.scm (guix-import): Likewise. * guix/scripts/install.scm (guix-install): Likewise. * guix/scripts/lint.scm (guix-lint): Likewise. * guix/scripts/offload.scm (guix-offload): Likewise. * guix/scripts/pack.scm (guix-pack): Likewise. * guix/scripts/package.scm (guix-package): Likewise. * guix/scripts/perform-download.scm (guix-perform-download): Likewise. * guix/scripts/processes.scm (guix-processes): Likewise. * guix/scripts/publish.scm (guix-publish): Likewise. * guix/scripts/pull.scm (guix-pull): Likewise. * guix/scripts/refresh.scm (guix-refresh): Likewise. * guix/scripts/remove.scm (guix-remove): Likewise. * guix/scripts/repl.scm (guix-repl): Likewise. * guix/scripts/search.scm (guix-search): Likewise. * guix/scripts/show.scm (guix-show): Likewise. * guix/scripts/size.scm (guix-size): Likewise. * guix/scripts/substitute.scm (guix-substitute): Likewise. * guix/scripts/system.scm (guix-system): Likewise. * guix/scripts/time-machine.scm (guix-time-machine): Likewise. * guix/scripts/upgrade.scm (guix-upgrade): Likewise. * guix/scripts/weather.scm (guix-weather): Likewise.
* ui: '--help' output links to <https://guix.gnu.org/help/>.Ludovic Courtès2020-09-10
| | | | | | * guix/ui.scm (show-bug-report-information): Link to <https://guix.gnu.org/help/> instead of <https://www.gnu.org/gethelp/>. The former is much more useful and includes links to GNU manuals.
* ui: Attempt to fall back to "en_US.utf8" rather than "C".Ludovic Courtès2020-09-02
| | | | * guix/ui.scm (install-locale): Add call to 'setlocale' in 'catch' handler.
* 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>