GNU bug report logs - #30657
Add support for file-like objects to the Prosody configuration

Previous Next

Package: guix-patches;

Reported by: Clément Lassieur <clement <at> lassieur.org>

Date: Wed, 28 Feb 2018 22:27:02 UTC

Severity: normal

Done: Clément Lassieur <clement <at> lassieur.org>

Bug is archived. No further changes may be made.

Full log


Message #41 received at 30657 <at> debbugs.gnu.org (full text, mbox):

From: ludo <at> gnu.org (Ludovic Courtès)
To: Clément Lassieur <clement <at> lassieur.org>
Cc: 30657 <at> debbugs.gnu.org
Subject: Re: [PATCH] services: messaging: Prosody config supports file-like
 objects.
Date: Sat, 03 Mar 2018 15:37:49 +0100
Hello,

Clément Lassieur <clement <at> lassieur.org> skribis:

> * doc/guix.texi (Messaging Services): Update accordingly.
> * gnu/services/configuration.scm (serialize-configuration,
> serialize-maybe-stem, serialize-package): Return strings or string-valued
> gexps (these procedures were only used for their side-effects).
> (file-like?): New exported procedure.
> * gnu/services/messaging.scm (serialize-field, serialize-field-list,
> enclose-quotes, serialize-raw-content, serialize-ssl-configuration,
> serialize-virtualhost-configuration-list,
> serialize-int-component-configuration-list,
> serialize-ext-component-configuration-list,
> serialize-virtualhost-configuration, serialize-int-component-configuration,
> serialize-ext-component-configuration, serialize-prosody-configuration):
> Return strings or string-valued gexps and stop printing.
> (prosody-activation): Use SERIALIZE-PROSODY-CONFIGURATION's return value with
> MIXED-TEXT-FILE instead of using its output with PLAIN-FILE.
> (serialize-non-negative-integer, serialize-non-negative-integer-list): Convert
> numbers to strings.
> (file-object?, serialize-file-object, file-object-list?,
> serialize-file-object-list): New procedures.
> (ssl-configuration)[capath, cafile], (prosody-configuration)[plugin-paths,
> groups-file]: Replace FILE-NAME with FILE-OBJECT.

[...]

> +  #~(string-append
> +     #$@(map (lambda (field)
> +               ((configuration-field-serializer field)
> +                (configuration-field-name field)
> +                ((configuration-field-getter field) config)))
> +             fields)))

Awesome, I find it clearer.  :-)

> +(define (file-like? val)
> +  (and (struct? val) ((@@ (guix gexp) lookup-compiler) val)))

I’m not fond of the idea of using @@ in real code.  :-)

Could you move ‘file-like?’ to (guix gexp), with a docstring, and with
‘->bool’ to avoid exposing internal details:

  (define (file-like? value)
    (and (struct? value) (->bool (lookup-compiler value))))

?

> +(define (file-object? val)
> +  (or (file-like? val) (file-name? val)))

Do we need this predicate?  After all, all we can say is that a file
name is necessarily a string (or a string-valued gexp), but a string is
not necessarily a file name (IOW there’s no disjoint type for file
names.)

I suppose the configuration mechanism needs it though, right?  In that
context it’s probably OK.

Apart from this the patch LGTM, thank you!

Ludo’.




This bug report was last modified 7 years and 167 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.