From 766ad072ad90d4ffc161cb83e29910b7bb3a9d54 Mon Sep 17 00:00:00 2001 From: Herman Rimm Date: Fri, 27 Sep 2024 20:39:19 +0200 Subject: services: configuration: Document multiple configurations per field. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/services/configuration.scm (generate-documentation): Filter for all configurations associated with each field-name. * doc/guix.texi (Complex Configurations): Describe use case for multiple field-names. Change-Id: I6d1e7b8858231aa05fda884b31a9bd0a48f07293 Signed-off-by: Ludovic Courtès --- doc/guix.texi | 4 +++- gnu/services/configuration.scm | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 35e5883308..07dd00a7c2 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -44702,7 +44702,9 @@ available for the configuration record. @var{sub-documentation} is a @code{(@var{field-name} @var{configuration-name})} tuple. @var{field-name} is the name of the field which takes another configuration record as its value, and -@var{configuration-name} is the name of that configuration record. +@var{configuration-name} is the name of that configuration record. The +same value may be used for multiple @var{field-name}s, in case a field +accepts different types of configurations. @var{sub-documentation} is only needed if there are nested configuration records. For example, the @code{getmail-configuration} record diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.scm index d2b1687496..e76ad5e8cb 100644 --- a/gnu/services/configuration.scm +++ b/gnu/services/configuration.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2021 Andrew Tropin ;;; Copyright © 2022 Maxime Devos ;;; Copyright © 2023 Bruno Victal +;;; Copyright © 2024 Herman Rimm ;;; ;;; This file is part of GNU Guix. ;;; @@ -460,8 +461,12 @@ (define (show-default val) (para ,@field-docs) ,@(append-map generate - (or (assq-ref sub-documentation field-name) - '()))))) + (filter-map + (match-lambda + ((name config) + (and (eq? name field-name) + config))) + sub-documentation))))) fields))))))) (stexi->texi `(*fragment* . ,(generate documentation-name)))) -- cgit v1.2.3