diff mbox series

[bug#73518] services: configuration: Document multiple configurations per field.

Message ID 66078ca304218cd3cb1f5cf9cd27861e54a404ee.1727462231.git.herman@rimm.ee
State New
Headers show
Series [bug#73518] services: configuration: Document multiple configurations per field. | expand

Commit Message

Herman Rimm Sept. 27, 2024, 6:39 p.m. UTC
* gnu/serives/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
---
 doc/guix.texi                  | 4 +++-
 gnu/services/configuration.scm | 9 +++++++--
 2 files changed, 10 insertions(+), 3 deletions(-)


base-commit: 9a141b5bd633227ea31776b9ce7ca40928de2442
diff mbox series

Patch

diff --git a/doc/guix.texi b/doc/guix.texi
index 52e36e4354..877221239b 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -44685,7 +44685,9 @@  Complex Configurations
 @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 <andrew@trop.in>
 ;;; Copyright © 2022 Maxime Devos <maximedevos@telenet.be>
 ;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
+;;; Copyright © 2024 Herman Rimm <herman@rimm.ee>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -460,8 +461,12 @@  (define (generate-documentation documentation documentation-name)
                            (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))))