diff options
| author | Ludovic Courtès <ludo@gnu.org> | 2025-10-15 12:26:14 +0200 |
|---|---|---|
| committer | Ludovic Courtès <ludo@gnu.org> | 2025-10-16 15:14:36 +0200 |
| commit | 03640d3cf04e9540b59cc1806e50b07095ea393f (patch) | |
| tree | 42446af88c96b232fec6e2e42f620abce33f49d8 | |
| parent | 37f794ae22d42447c27e524d01d3ddafa24b8d8e (diff) | |
services: cuirass: Validate specifications at build time.
This ensures problems in the spec are caught before the system is
instantiated.
* gnu/services/cuirass.scm (cuirass-configuration->specification-file):
New procedure.
(cuirass-shepherd-service): Use it instead of ‘scheme-file’.
Change-Id: I90187ed4ed1a51958159741a55b6dc635c97312a
| -rw-r--r-- | gnu/services/cuirass.scm | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm index 27ff87ca56d..0cc504562a4 100644 --- a/gnu/services/cuirass.scm +++ b/gnu/services/cuirass.scm @@ -134,6 +134,28 @@ (web-extra-options cuirass-configuration-web-extra-options (default '()))) +(define (cuirass-configuration->specification-file config) + "Return a specification file built from CONFIG and validate it." + (define cuirass + (cuirass-configuration-cuirass config)) + + (define build + #~(begin + (use-modules (ice-9 pretty-print)) + + (call-with-output-file #$output + (lambda (port) + (pretty-print '#$(cuirass-configuration-specifications config) + port))) + + ;; Validate the spec file upfront. + (unless (zero? + (system* #$(file-append cuirass "/bin/cuirass") "register" + "--check" "-S" #$output)) + (exit 1)))) + + (computed-file "cuirass-specs.scm" build)) + (define (cuirass-shepherd-service config) "Return a <shepherd-service> for the Cuirass service with CONFIG." (define (endpoint name) @@ -162,9 +184,7 @@ (database (cuirass-configuration-database config)) (port (cuirass-configuration-port config)) (host (cuirass-configuration-host config)) - (config-file (scheme-file - "cuirass-specs.scm" - (cuirass-configuration-specifications config))) + (config-file (cuirass-configuration->specification-file config)) (one-shot? (cuirass-configuration-one-shot? config)) (fallback? (cuirass-configuration-fallback? config)) (extra-options (cuirass-configuration-extra-options config)) |
