[bug#74979,v2,2/4] scripts: style: Sort more kinds of package definitions.

Message ID 71ca4b6a08f7610dfcb7df41b73b16a0171fb252.1737495587.git.herman@rimm.ee
State New
Headers
Series [bug#74979,v2,1/4] scripts: style: Refactor order-packages. |

Commit Message

Herman Rimm Jan. 21, 2025, 9:43 p.m. UTC
  * guix/scripts/style.scm (order-packages): Match comments before package
S-exp. and its fields.  Match in let.  Match package/inherit.
* tests/guix-style.sh: Add pkg-baz variable and package/inherit to test.

Change-Id: I48a5976930501c20415b5413966b5294958bc23b
---
 guix/scripts/style.scm | 13 +++++++------
 tests/guix-style.sh    | 10 ++++++++--
 2 files changed, 15 insertions(+), 8 deletions(-)
  

Patch

diff --git a/guix/scripts/style.scm b/guix/scripts/style.scm
index 4b704ddfb7e..6f07f6c3b9e 100644
--- a/guix/scripts/style.scm
+++ b/guix/scripts/style.scm
@@ -503,13 +503,14 @@  (define (order-packages lst)
 share a name are placed with versions in descending order."
   (define (package-fields pkg)
     (match pkg
-      ((('define-public _ expr) _ ...)
+      ((('define-public pkg _ ... (or ('let _ expr) expr)) _ ...)
        (match expr
-         ((or ('package _ ('name name) ('version version) _ ...)
-              ('package ('name name) ('version version) _ ...))
-          (values name version))
-         (_ (values #f #f))))
-      (_ (values #f #f))))
+         (((or 'package 'package/inherit) fields ...)
+          (let ((name (and=> (assoc-ref fields 'name) first))
+                (version (and=> (assoc-ref fields 'version) first)))
+            (values name version)))
+         (_ (and (values #f #f)))))
+      (_ (and (values #f #f)))))
 
   (define (package>? lst1 lst2)
     (let-values (((name1 version1) (package-fields lst1))
diff --git a/tests/guix-style.sh b/tests/guix-style.sh
index 93331394353..703e148b699 100644
--- a/tests/guix-style.sh
+++ b/tests/guix-style.sh
@@ -65,10 +65,16 @@  cat > "$tmpfile" <<EOF
     (name "bar")
     (version "2")))
 
+(define-public pkg-baz
+  (let ()
+    (package
+      (name "baz")
+      (version "2"))))
+
 ;; The comment below belongs to the foo package.
 (define-public pkg
-  (package
-    (name "bar")
+  (package/inherit pkg-baz
+    (name "baz")
     (version "1")))
 ;; Incomplete package definitions in alphabetical order.