all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Antero Mejr via Guix-patches via <guix-patches@gnu.org>
To: 61970@debbugs.gnu.org
Cc: Antero Mejr <antero@mailbox.org>, ludo@gnu.org
Subject: [bug#61970] [PATCH] lint: Return exit code 1 if there are warnings.
Date: Sat,  4 Mar 2023 23:16:01 +0000	[thread overview]
Message-ID: <20230304231601.13352-1-antero@mailbox.org> (raw)

* guix/scripts/lint.scm (guix-lint, run-checkers): Modify procedure.
---
Exiting 1 makes it a lot easier to include a "guix lint" step in external
CI pipelines.

 guix/scripts/lint.scm | 60 ++++++++++++++++++++++++++-----------------
 1 file changed, 36 insertions(+), 24 deletions(-)

diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index 9920c3ee62..a4bec357c7 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -61,21 +61,25 @@ (define (emit-warnings warnings)
 
 (define* (run-checkers package checkers #:key store)
   "Run the given CHECKERS on PACKAGE."
-  (let ((tty? (isatty? (current-error-port))))
-    (for-each (lambda (checker)
-                (when tty?
-                  (format (current-error-port) "checking ~a@~a [~a]...\x1b[K\r"
-                          (package-name package) (package-version package)
-                          (lint-checker-name checker))
-                  (force-output (current-error-port)))
-                (emit-warnings
-                 (if (lint-checker-requires-store? checker)
-                     ((lint-checker-check checker) package #:store store)
-                     ((lint-checker-check checker) package))))
-              checkers)
+  (let* ((tty? (isatty? (current-error-port)))
+         (results
+          (map (lambda (checker)
+                 (when tty?
+                   (format (current-error-port) "checking ~a@~a [~a]...\x1b[K\r"
+                           (package-name package) (package-version package)
+                           (lint-checker-name checker))
+                   (force-output (current-error-port)))
+                 (let ((results (if (lint-checker-requires-store? checker)
+                                    ((lint-checker-check checker) package
+                                     #:store store)
+                                    ((lint-checker-check checker) package))))
+                   (emit-warnings results)
+                   results))
+               checkers)))
     (when tty?
       (format (current-error-port) "\x1b[K")
-      (force-output (current-error-port)))))
+      (force-output (current-error-port)))
+    results))
 
 (define (list-checkers-and-exit checkers)
   ;; Print information about all available checkers and exit.
@@ -218,14 +222,22 @@ (define (call-maybe-with-store proc)
                 (proc store))
               (proc #f)))
 
-        (call-maybe-with-store
-         (lambda (store)
-           (cond
-            ((null? args)
-             (fold-packages (lambda (p r) (run-checkers p checkers
-                                                        #:store store)) '()))
-            (else
-             (for-each (lambda (package)
-                         (run-checkers package checkers
-                                       #:store store))
-                       args)))))))))
+        (define (null?-rec lst)
+          (if (list? lst)
+              (not (member #f (map null?-rec lst)))
+              #f))
+
+        (if (null?-rec
+             (call-maybe-with-store
+              (lambda (store)
+                (cond
+                 ((null? args)
+                  (fold-packages (lambda (p r)
+                                   (cons (run-checkers p checkers
+                                                       #:store store) r)) '()))
+                 (else
+                  (map (lambda (package)
+                         (run-checkers package checkers #:store store))
+                       args))))))
+            (exit 0)
+            (exit 1))))))
-- 
2.38.1





             reply	other threads:[~2023-03-04 23:18 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-04 23:16 Antero Mejr via Guix-patches via [this message]
2023-03-06 15:59 ` [bug#61970] [PATCH] lint: Return exit code 1 if there are warnings Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230304231601.13352-1-antero@mailbox.org \
    --to=guix-patches@gnu.org \
    --cc=61970@debbugs.gnu.org \
    --cc=antero@mailbox.org \
    --cc=ludo@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.