diff options
author | Simon Tournier <zimon.toutoune@gmail.com> | 2023-05-15 19:45:45 +0200 |
---|---|---|
committer | Josselin Poiret <dev@jpoiret.xyz> | 2023-05-17 22:22:22 +0200 |
commit | d81701a85aa8aa96f4a853f06fe28693fa8bee12 (patch) | |
tree | e385085fb9a1642581df5ff48fe2361edc18098a | |
parent | b89ab866bc176cfc9fdddb4d5a1505611d119dd0 (diff) | |
download | guix-d81701a85aa8aa96f4a853f06fe28693fa8bee12.tar.gz guix-d81701a85aa8aa96f4a853f06fe28693fa8bee12.zip |
scripts: import: elpa: Return consistent error code.
Fixes <https://bug.gnu.org/58308>.
Reported by Ricardo Wurmus.
* guix/scripts/import/elpa.scm (guix-import-elpa): Return consistent error
code independently of the 'recursive' option.
Signed-off-by: Josselin Poiret <dev@jpoiret.xyz>
-rw-r--r-- | guix/scripts/import/elpa.scm | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/guix/scripts/import/elpa.scm b/guix/scripts/import/elpa.scm index a71478d3c8..f587eeb243 100644 --- a/guix/scripts/import/elpa.scm +++ b/guix/scripts/import/elpa.scm @@ -97,20 +97,21 @@ Import the latest package named PACKAGE-NAME from an ELPA repository.\n")) (package-name->name+version spec)) (when version (warning (G_ "this importer does not consider the version~%"))) - (if (assoc-ref opts 'recursive) - (with-error-handling - (map (match-lambda - ((and ('package ('name name) . rest) pkg) - `(define-public ,(string->symbol name) - ,pkg)) - (_ #f)) + (match (if (assoc-ref opts 'recursive) (elpa-recursive-import package-name - (or (assoc-ref opts 'repo) 'gnu)))) - (let ((sexp (elpa->guix-package package-name - #:repo (assoc-ref opts 'repo)))) - (unless sexp - (leave (G_ "failed to download package '~a'~%") package-name)) - sexp))) + (or (assoc-ref opts 'repo) 'gnu)) + (elpa->guix-package package-name + #:repo (assoc-ref opts 'repo))) + ((or #f '()) + (leave (G_ "failed to download meta-data for package '~a'~%") package-name)) + (('package etc ...) `(package ,etc)) + ((? list? sexps) (map + (match-lambda + ((and ('package ('name name) . rest) pkg) + `(define-public ,(string->symbol name) + ,pkg)) + (_ #f)) + sexps)))) (() (leave (G_ "too few arguments~%"))) ((many ...) |