Return non-zero exit status when Eshell's "which" fails to find a command
* lisp/eshell/esh-cmd.el (eshell/which): Set exit status to 1 if we couldn't find any of the commands (bug#74739).
This commit is contained in:
@@ -1381,19 +1381,22 @@ have been replaced by constants."
|
||||
|
||||
(defun eshell/which (command &rest names)
|
||||
"Identify the COMMAND, and where it is located."
|
||||
(dolist (name (cons command names))
|
||||
(condition-case error
|
||||
(eshell-printn
|
||||
(catch 'found
|
||||
(run-hook-wrapped
|
||||
'eshell-named-command-hook
|
||||
(lambda (hook)
|
||||
(when-let* (((symbolp hook))
|
||||
(which-func (get hook 'eshell-which-function))
|
||||
(result (funcall which-func command)))
|
||||
(throw 'found result))))
|
||||
(eshell-plain-command--which name)))
|
||||
(error (eshell-error (format "which: %s\n" (cadr error)))))))
|
||||
(let (not-found)
|
||||
(dolist (name (cons command names))
|
||||
(condition-case error
|
||||
(eshell-printn
|
||||
(catch 'found
|
||||
(run-hook-wrapped
|
||||
'eshell-named-command-hook
|
||||
(lambda (hook)
|
||||
(when-let* (((symbolp hook))
|
||||
(which-func (get hook 'eshell-which-function))
|
||||
(result (funcall which-func command)))
|
||||
(throw 'found result))))
|
||||
(eshell-plain-command--which name)))
|
||||
(error (eshell-error (format "which: %s\n" (cadr error)))
|
||||
(setq not-found t))))
|
||||
(when not-found (eshell-set-exit-info 1))))
|
||||
|
||||
(put 'eshell/which 'eshell-no-numeric-conversions t)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user