guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#48976: [PATCH] services: configuration: Allow specifying prefix for


From: Ludovic Courtès
Subject: bug#48976: [PATCH] services: configuration: Allow specifying prefix for serializer names.
Date: Tue, 29 Jun 2021 12:03:18 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)

Hi,

Xinglu Chen <public@yoctocell.xyz> skribis:

> Sometimes two configurations might have the same types for their field values,
> but the values might be serialized in two completely different
> ways (e.g. because the two programs have different configuration languages).
>
> An example of this would be the ‘serialize-boolean’ procedure in (gnu services
> mail) and (gnu services getmail).  They both serialize a boolean value, but
> because the Dovecot’s configuration language has a different syntax to the
> configuration language for Getmail, two different procedures have to be
> defined.
>
> One way to workaround this would be to specify custom serializers for many
> fields in order to separate the serialization of the values that have the same
> type but serialize in different ways.  This could get very tedious, especially
> if there are many configurations in the same module.
>
> Another way would be to move one of the configurations to its own module, like
> what was done with (gnu services getmail).  However, this would mean that
> there would be multiple modules containing configurations for related
> programs, e.g. we have (gnu services mail) and (gnu services getmail), it
> doesn’t make much sense to keep the Getmail configuration in its own module.
>
> This patch will allow one to write something like this:
>
>   (define-configuration foo-configuration
>     (bar
>       (string "bob")
>       "Option bar.")
>     (prefix bar-))
>
> and the value of the ‘bar’ field would be serialized using a procedure named
> ‘bar-serialize-string’ instead of just ‘serialize-string’.
>
> * gnu/services/configuration.scm (define-maybe-helper): Accept ‘prefix’
> argument for using serializer with custom prefix.
> (define-maybe): Pattern match on ‘prefix’ literal.
> (define-configuration-helper): Accept ‘prefix’ argument for using serializer
> with custom prefix.
> (define-configuration): Pattern match on ‘prefix’ literal.
> * tests/services/configuration.scm ("serialize-configuration with prefix"):
> New test.

Looks reasonable to me.  Applied, thanks!

Ludo’.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]