diff options
author | Ludovic Courtès <ludo@gnu.org> | 2021-11-23 16:55:42 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2021-11-23 16:55:42 +0100 |
commit | 19dc16ce4b9c5fa885b4641a174afb0e1e653a9f (patch) | |
tree | fd40e5f8e8b23592659fba85663193c564940bca | |
parent | 0677443c45c89c64ee3a62849b76d8e8a6ddfb17 (diff) |
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'.
-rw-r--r-- | doc/guix.texi | 4 | ||||
-rw-r--r-- | guix/scripts/style.scm | 27 |
2 files changed, 28 insertions, 3 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index a503ed5ee0..1bb139e9b0 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 8957c1d507..86a46f693c 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 |