Hi, Xinglu Chen <pub...@yoctocell.xyz> writes:
[...] > From 90d63a46a29a8080b7f95eabcec115c5c2c6481e Mon Sep 17 00:00:00 2001 > Message-Id: > <90d63a46a29a8080b7f95eabcec115c5c2c6481e.1619869705.git.pub...@yoctocell.xyz> > In-Reply-To: <cover.1619869705.git.pub...@yoctocell.xyz> > References: <cover.1619869705.git.pub...@yoctocell.xyz> > From: Xinglu Chen <pub...@yoctocell.xyz> > Date: Sat, 1 May 2021 13:31:27 +0200 > Subject: [PATCH 2/2] services: configuration: Add ability to use custom > serializer. > MIME-Version: 1.0 > Content-Type: text/plain; charset=UTF-8 > Content-Transfer-Encoding: 8bit > > Some configuration values should not be serialized to a configuration file, > e.g. command line options for a daemon. > > * gnu/services/configuration.scm (define-configuration): Add option to use a > custom serializer. > (empty-serializer): New procedure. > (serialize-package): Alias to ‘empty-serializer’. > --- > gnu/services/configuration.scm | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm > index 85e1ac78cb..7024b13136 100644 > --- a/gnu/services/configuration.scm > +++ b/gnu/services/configuration.scm > @@ -44,6 +44,7 @@ > define-configuration > validate-configuration > generate-documentation > + empty-serializer > serialize-package)) > > ;;; Commentary: > @@ -116,7 +117,7 @@ > (define-syntax define-configuration > (lambda (stx) > (syntax-case stx () > - ((_ stem (field (field-type properties ...) doc) ...) > + ((_ stem (field (field-type properties ...) doc custom-serializer ...) > ...) > (with-syntax (((field-getter ...) > (map (lambda (field) > (id #'stem #'stem #'- field)) > @@ -133,9 +134,12 @@ > (_ (syntax 'disabled))) > #'((field-type properties ...) ...))) > ((field-serializer ...) > - (map (lambda (type) > - (id #'stem #'serialize- type)) > - #'(field-type ...)))) > + (map (lambda (type serializer) > + (match serializer > + (((serializer)) serializer) > + (_ (id #'stem #'serialize- type)))) > + #'(field-type ...) > + #'((custom-serializer ...) ...)))) > #`(begin > (define-record-type* #,(id #'stem #'< #'stem #'>) > #,(id #'stem #'% #'stem) > @@ -176,8 +180,8 @@ > #,(id #'stem #'stem #'-fields)) > conf)))))))) > > -(define (serialize-package field-name val) > - "") > +(define (empty-serializer field-name val) "") > +(define serialize-package empty-serializer) > > ;; A little helper to make it easier to document all those fields. > (define (generate-documentation documentation documentation-name) Rebased on a change that allows to globally (at the configuration level) disable serialization and pushed as b3e99d3399. Thank you! :-) Maxim