services: configuration: Add a new helper to ease generating documentation.

The original (undocumented) procedure to generate the doc has a difficult to
grasp interface; add a simpler one on top of it.

* gnu/services/configuration.scm (configuration->documentation): New procedure.
This commit is contained in:
Maxim Cournoyer 2021-04-12 16:58:15 -04:00
parent d1caabbce7
commit bb716e8d9d
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -3,6 +3,7 @@
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -44,6 +45,7 @@ (define-module (gnu services configuration)
define-configuration
validate-configuration
generate-documentation
configuration->documentation
serialize-package))
;;; Commentary:
@ -214,3 +216,15 @@ (define (show-default? val)
(or (assq-ref sub-documentation field-name) '())))))
fields)))))
(stexi->texi `(*fragment* . ,(generate documentation-name))))
(define (configuration->documentation configuration-symbol)
"Take CONFIGURATION-SYMBOL, the symbol corresponding to the name used when
defining a configuration record with DEFINE-CONFIGURATION, and output the
Texinfo documentation of its fields."
;; This is helper for a simple, straight-forward application of
;; GENERATE-DOCUMENTATION.
(let ((fields-getter (module-ref (current-module)
(symbol-append configuration-symbol
'-fields))))
(format #t (generate-documentation `((,configuration-symbol ,fields-getter))
configuration-symbol))))