guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/02: style: Add '--dry-run'.


From: guix-commits
Subject: 02/02: style: Add '--dry-run'.
Date: Tue, 23 Nov 2021 10:57:00 -0500 (EST)

civodul pushed a commit to branch core-updates-frozen
in repository guix.

commit 19dc16ce4b9c5fa885b4641a174afb0e1e653a9f
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Tue Nov 23 16:55:42 2021 +0100

    style: Add '--dry-run'.
    
    * guix/scripts/style.scm (edit-expression/dry-run): New procedure.
    (simplify-package-inputs): Add #:edit-expression parameter.
    (%options, show-help): Add '--dry-run'.
    (guix-style): Honor '--dry-run'.
---
 doc/guix.texi          |  4 ++++
 guix/scripts/style.scm | 27 ++++++++++++++++++++++++---
 2 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index a503ed5..1bb139e 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -12725,6 +12725,10 @@ comments and bailing out if it cannot make sense of 
the code that
 appears in an inputs field.  The available options are listed below.
 
 @table @code
+@item --dry-run
+@itemx -n
+Show source file locations that would be edited but do not modify them.
+
 @item --load-path=@var{directory}
 @itemx -L @var{directory}
 Add @var{directory} to the front of the package module search path
diff --git a/guix/scripts/style.scm b/guix/scripts/style.scm
index 8957c1d..86a46f6 100644
--- a/guix/scripts/style.scm
+++ b/guix/scripts/style.scm
@@ -382,13 +382,25 @@ bailing out~%")
               package)
      str)))
 
+(define (edit-expression/dry-run properties rewrite-string)
+  "Like 'edit-expression' but display what would be edited without actually
+doing it."
+  (edit-expression properties
+                   (lambda (str)
+                     (unless (string=? (rewrite-string str) str)
+                       (info (source-properties->location properties)
+                             (G_ "would be edited~%")))
+                     str)))
+
 (define* (simplify-package-inputs package
-                                  #:key (policy 'silent))
+                                  #:key (policy 'silent)
+                                  (edit-expression edit-expression))
   "Edit the source code of PACKAGE to simplify its inputs field if needed.
 POLICY is a symbol that defines whether to simplify inputs; it can one of
 'silent (change only if the resulting derivation is the same), 'safe (change
 only if semantics are known to be unaffected), and 'always (fearlessly
-simplify inputs!)."
+simplify inputs!).  Call EDIT-EXPRESSION to actually edit the source of
+PACKAGE."
   (for-each (lambda (field-name field)
               (match (field package)
                 (()
@@ -449,6 +461,9 @@ simplify inputs!)."
                 (member "load-path" (option-names option)))
               %standard-build-options)
 
+        (option '(#\n "dry-run") #f #f
+                (lambda (opt name arg result)
+                  (alist-cons 'dry-run? #t result)))
         (option '(#\e "expression") #t #f
                 (lambda (opt name arg result)
                   (alist-cons 'expression arg result)))
@@ -473,6 +488,8 @@ simplify inputs!)."
   (display (G_ "Usage: guix style [OPTION]... [PACKAGE]...
 Update package definitions to the latest style.\n"))
   (display (G_ "
+  -n, --dry-run          display files that would be edited but do nothing"))
+  (display (G_ "
   -L, --load-path=DIR    prepend DIR to the package module search path"))
   (display (G_ "
   -e, --expression=EXPR  consider the package EXPR evaluates to"))
@@ -514,9 +531,13 @@ Update package definitions to the latest style.\n"))
                                   (read/eval str))
                                  (_ #f))
                                opts))
+         (edit     (if (assoc-ref opts 'dry-run?)
+                       edit-expression/dry-run
+                       edit-expression))
          (policy   (assoc-ref opts 'input-simplification-policy)))
     (for-each (lambda (package)
-                (simplify-package-inputs package #:policy policy))
+                (simplify-package-inputs package #:policy policy
+                                         #:edit-expression edit))
               ;; Sort package by source code location so that we start editing
               ;; files from the bottom and going upward.  That way, the
               ;; 'location' field of <package> records is not invalidated as



reply via email to

[Prev in Thread] Current Thread [Next in Thread]