--- Begin Message ---
Subject: |
[PATCH] guix: lint: Add checker to check if inputs are sorted. |
Date: |
Sun, 2 Dec 2018 13:12:10 +0530 |
* guix/scripts/lint.scm (check-inputs-should-be-sorted): New procedure.
(%checkers): Add it.
---
guix/scripts/lint.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/guix/scripts/lint.scm b/guix/scripts/lint.scm
index 2314f3b28..37e8a1ec5 100644
--- a/guix/scripts/lint.scm
+++ b/guix/scripts/lint.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2017 Alex Kost <address@hidden>
;;; Copyright © 2017 Tobias Geerinckx-Rice <address@hidden>
;;; Copyright © 2017 Efraim Flashner <address@hidden>
+;;; Copyright © 2018 Arun Isaac <address@hidden>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -301,6 +302,22 @@ of a package, and INPUT-NAMES, a list of package
specifications such as
(package-input-intersection (package-direct-inputs package)
input-names))))
+(define (check-inputs-should-be-sorted package)
+ ;; Emit a warning if inputs, native inputs or propagated inputs of PACKAGE
+ ;; are not lexicographically ordered.
+ (define (check-inputs inputs-accessor input-type)
+ (unless (sorted? (map (match-lambda
+ ((name input) name))
+ (inputs-accessor package))
+ string<?)
+ (emit-warning
+ package
+ (format #f (G_ "~a should be in lexicographic order") input-type))))
+
+ (check-inputs package-inputs (G_ "inputs"))
+ (check-inputs package-native-inputs (G_ "native inputs"))
+ (check-inputs package-propagated-inputs (G_ "propagated inputs")))
+
(define (package-name-regexp package)
"Return a regexp that matches PACKAGE's name as a word at the beginning of a
line."
@@ -1032,6 +1049,10 @@ them for PACKAGE."
(name 'inputs-should-not-be-input)
(description "Identify inputs that shouldn't be inputs at all")
(check check-inputs-should-not-be-an-input-at-all))
+ (lint-checker
+ (name 'inputs-should-be-sorted)
+ (description "Verify that inputs are in lexicographic order")
+ (check check-inputs-should-be-sorted))
(lint-checker
(name 'patch-file-names)
(description "Validate file names and availability of patches")
--
2.19.1
--- End Message ---