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 @@ Run COMMAND with ARGS.\n")) | |||
| (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 @@ found." | |||
|          (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))))) | ||||
|  |  | |||
		Reference in a new issue