~ruther/guix-local

03640d3cf04e9540b59cc1806e50b07095ea393f — Ludovic Courtès 6 months ago 37f794a
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
1 files changed, 23 insertions(+), 3 deletions(-)

M gnu/services/cuirass.scm
M gnu/services/cuirass.scm => gnu/services/cuirass.scm +23 -3
@@ 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))