lint: Use 'with-error-handling'.

This improves the error message when unable to access ~/.cache as
reported by Jonathan Brielmaier <jonathan.brielmaier@web.de> in
<https://bugs.gnu.org/42859>.

* guix/scripts/lint.scm (guix-lint): Wrap body in 'with-error-handling'.
This commit is contained in:
Ludovic Courtès 2020-08-25 14:49:34 +02:00
parent e45d7f3198
commit 4c5edee1ef
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2015 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org> ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
@ -174,23 +174,24 @@ run the checkers on all packages.\n"))
(when (assoc-ref opts 'list?) (when (assoc-ref opts 'list?)
(list-checkers-and-exit checkers)) (list-checkers-and-exit checkers))
(let ((any-lint-checker-requires-store? (with-error-handling
(any lint-checker-requires-store? checkers))) (let ((any-lint-checker-requires-store?
(any lint-checker-requires-store? checkers)))
(define (call-maybe-with-store proc) (define (call-maybe-with-store proc)
(if any-lint-checker-requires-store? (if any-lint-checker-requires-store?
(with-store store (with-store store
(proc store)) (proc store))
(proc #f))) (proc #f)))
(call-maybe-with-store (call-maybe-with-store
(lambda (store) (lambda (store)
(cond (cond
((null? args) ((null? args)
(fold-packages (lambda (p r) (run-checkers p checkers (fold-packages (lambda (p r) (run-checkers p checkers
#:store store)) '())) #:store store)) '()))
(else (else
(for-each (lambda (spec) (for-each (lambda (spec)
(run-checkers (specification->package spec) checkers (run-checkers (specification->package spec) checkers
#:store store)) #:store store))
args)))))))) args)))))))))