mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 21:38:07 -05:00
ui: Add hint for command typo.
* guix/ui.scm (command-hint): New variable (run-guix-command): Use it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
0df4d5aa04
commit
f0a1a55c66
1 changed files with 15 additions and 3 deletions
18
guix/ui.scm
18
guix/ui.scm
|
@ -2123,6 +2123,14 @@ (define (category-predicate category)
|
|||
(define (run-guix-command command . args)
|
||||
"Run COMMAND with the given ARGS. Report an error when COMMAND is not
|
||||
found."
|
||||
(define (command-hint guess commands)
|
||||
(define command-names
|
||||
(map (lambda (command)
|
||||
(match (command-name command)
|
||||
((head tail ...) head)))
|
||||
commands))
|
||||
(string-closest (symbol->string guess) command-names #:threshold 3))
|
||||
|
||||
(define module
|
||||
;; Check if there is a matching extension.
|
||||
(match (search-path (extension-directories)
|
||||
|
@ -2132,9 +2140,13 @@ (define module
|
|||
(lambda ()
|
||||
(resolve-interface `(guix scripts ,command)))
|
||||
(lambda _
|
||||
(format (current-error-port)
|
||||
(G_ "guix: ~a: command not found~%") command)
|
||||
(show-guix-usage))))
|
||||
(let ((hint (command-hint command (commands))))
|
||||
(format (current-error-port)
|
||||
(G_ "guix: ~a: command not found~%") command)
|
||||
(when hint
|
||||
(display-hint (format #f (G_ "Did you mean @code{~a}?")
|
||||
hint)))
|
||||
(show-guix-usage)))))
|
||||
(file
|
||||
(load file)
|
||||
(resolve-interface `(guix extensions ,command)))))
|
||||
|
|
Loading…
Reference in a new issue