summaryrefslogtreecommitdiff
path: root/src/cuirass/utils.scm
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2018-01-23 17:37:08 +0100
committerLudovic Courtès <ludo@gnu.org>2018-01-23 17:37:08 +0100
commitb0f1a438ff1230ca98f06eda32443740c7bc8776 (patch)
tree20c730d44b2f1a2ac1460d94413bd79f62e436fd /src/cuirass/utils.scm
parent6822b4735ffd3b1c9f1b93d9b3dd45d85ed15380 (diff)
downloadcuirass-b0f1a438ff1230ca98f06eda32443740c7bc8776.tar
cuirass-b0f1a438ff1230ca98f06eda32443740c7bc8776.tar.gz
Add a 'build-status' enumeration.
* src/cuirass/utils.scm (define-enumeration): New macro. * src/cuirass/database.scm (build-status): New macro. * src/cuirass/base.scm (build-packages)[hydra-build-status]: Remove. Use the 'build-status' macro instead.
Diffstat (limited to 'src/cuirass/utils.scm')
-rw-r--r--src/cuirass/utils.scm14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/cuirass/utils.scm b/src/cuirass/utils.scm
index a932674..9f432a6 100644
--- a/src/cuirass/utils.scm
+++ b/src/cuirass/utils.scm
@@ -1,5 +1,5 @@
;;; utils.scm -- helper procedures
-;;; Copyright © 2012, 2013, 2016 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2016, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
;;;
@@ -24,7 +24,8 @@
#:use-module (json)
#:export (alist?
object->json-scm
- object->json-string))
+ object->json-string
+ define-enumeration))
(define (alist? obj)
"Return #t if OBJ is an alist."
@@ -47,3 +48,12 @@
(define* (object->json-string object #:key pretty)
"Return OBJECT as a JSON object."
(scm->json-string (object->json-scm object) #:pretty pretty))
+
+(define-syntax-rule (define-enumeration name (symbol value) ...)
+ "Define an 'enum' type with the given SYMBOL/VALUE pairs. NAME is defined a
+macro that accepts one of these symbols and expands to the corresponding
+value."
+ (define-syntax name
+ (syntax-rules (symbol ...)
+ ((_ symbol) value)
+ ...)))