aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Baines <mail@cbaines.net>2020-10-24 11:06:03 +0100
committerChristopher Baines <mail@cbaines.net>2020-10-24 11:06:03 +0100
commit247ef80ac194f1824c5021dc248b99331dd6ce31 (patch)
tree24f04105b58fbc5585500849dacf6887a54a19d2
parentad7e4624fd89972af0bcc23cd0f5ff481d8974c7 (diff)
downloadbuild-coordinator-247ef80ac194f1824c5021dc248b99331dd6ce31.tar
build-coordinator-247ef80ac194f1824c5021dc248b99331dd6ce31.tar.gz
Add some validation for hooks
-rw-r--r--guix-build-coordinator/coordinator.scm33
1 files changed, 33 insertions, 0 deletions
diff --git a/guix-build-coordinator/coordinator.scm b/guix-build-coordinator/coordinator.scm
index 6983763..62d181b 100644
--- a/guix-build-coordinator/coordinator.scm
+++ b/guix-build-coordinator/coordinator.scm
@@ -79,12 +79,45 @@
(allocator-thread build-coordinator-allocator-thread
set-build-coordinator-allocator-thread!))
+(define %known-hooks
+ '(build-submitted
+ build-started
+ build-success
+ build-failure
+ build-missing-inputs))
+
(define* (make-build-coordinator #:key datastore hooks
(metrics-registry (make-metrics-registry
#:namespace
"guixbuildcoordinator"))
(allocation-strategy
basic-build-allocation-strategy))
+ (and (or (list? hooks)
+ (begin
+ (simple-format
+ #t "warning: guix-build-coordinator: hooks should be a list\n")
+ #f))
+ (for-each
+ (match-lambda
+ ((hook-name . hook)
+ (unless (member hook-name %known-hooks)
+ (simple-format
+ #t "warning: guix-build-coordinator: hook name ~A not recognised
+ it should be one of: ~A\n"
+ hook-name
+ (string-join (map symbol->string %known-hooks) ", ")))
+
+ (unless (procedure? hook)
+ (simple-format
+ #t "warning: guix-build-coordinator: hook ~A value is not a procedure ~A\n"
+ hook-name
+ hook)))
+ (unknown
+ (simple-format
+ #t "warning: guix-build-coordinator: hooks entry is not a pair: ~A\n"
+ unknown)))
+ hooks))
+
(let ((build-coordinator
(make-build-coordinator-record datastore
hooks