From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp1 ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id yCyCKdU3CGHwRAEAgWs5BA (envelope-from ) for ; Mon, 02 Aug 2021 20:22:13 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp1 with LMTPS id WMIVJdU3CGGLLgAAbx9fmQ (envelope-from ) for ; Mon, 02 Aug 2021 18:22:13 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id CD86F8249 for ; Mon, 2 Aug 2021 20:22:12 +0200 (CEST) Received: from localhost ([::1]:36838 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mAcZn-0008MV-Tf for larch@yhetil.org; Mon, 02 Aug 2021 14:22:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:48758) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mAcZe-0008M3-Hy for guix-patches@gnu.org; Mon, 02 Aug 2021 14:22:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:55950) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mAcZe-0003nn-5u for guix-patches@gnu.org; Mon, 02 Aug 2021 14:22:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1mAcZd-0000PJ-Vw for guix-patches@gnu.org; Mon, 02 Aug 2021 14:22:01 -0400 Subject: bug#48934: [PATCH 0/2] Some improvements to (gnu services configuration) Resent-From: Maxim Cournoyer Original-Sender: "Debbugs-submit" Resent-To: guix-patches@gnu.org Resent-Date: Mon, 02 Aug 2021 18:22:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: cc-closed 48934 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Xinglu Chen Cc: 48934-done@debbugs.gnu.org Mail-Followup-To: 48934@debbugs.gnu.org, maxim.cournoyer@gmail.com, public@yoctocell.xyz Received: via spool by 48934-done@debbugs.gnu.org id=D48934.16279284761507 (code D ref 48934); Mon, 02 Aug 2021 18:22:01 +0000 Received: (at 48934-done) by debbugs.gnu.org; 2 Aug 2021 18:21:16 +0000 Received: from localhost ([127.0.0.1]:39261 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mAcYt-0000OF-Om for submit@debbugs.gnu.org; Mon, 02 Aug 2021 14:21:16 -0400 Received: from mail-qv1-f50.google.com ([209.85.219.50]:39730) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1mAcYs-0000O2-Dw for 48934-done@debbugs.gnu.org; Mon, 02 Aug 2021 14:21:14 -0400 Received: by mail-qv1-f50.google.com with SMTP id d3so9308049qvq.6 for <48934-done@debbugs.gnu.org>; Mon, 02 Aug 2021 11:21:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=zttM+573gmGyXOR+RUh7J4jouSqeCGTDKZVa597vpQA=; b=hYE0Jfg3U8ON5uM/HxMbLV/EBxbfMQDG63OWbnATRBrGAhpL14xQUeYsYPj79JIPtt ot+4mAgWwOZU1ATPvTRP/DapHYnxt759vAhMJWXJjUmH77aGduy3/mRFs9avViHPuv63 dMVgQIb3UOAaU0bRDz37UK6qbzjS0CQh2wDSM6bCh39oybMIeffYxSHTXTm5K5A4Kg/0 TFvPG/h3mELodSJlmmzmJPECRGMMwGlRQSL5sbEDPG5xnVi5bRYNpXDhMMQcbe4B5oJO QK+kAO+5ukFuNtyMCzit+HX+93Abpyr4PbSjHObKtdaD9KUCxV+EvxuYW/JYxMbyuY6A d5zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=zttM+573gmGyXOR+RUh7J4jouSqeCGTDKZVa597vpQA=; b=OMqXVcM155gh3/Wm1VGfK+8ze1M62SNe8yIlFL+ofaG/sIf2WObN9Ye4gvafd9Cq0f GKljoGVKH5AUPfKianm8m6ndGCLRk5vtGvvIt7NSiK2V6p1lt71FkU37hhyb8nA/poWU 5gt31lneq0r5BBOEO3iLrj4+mKhC/dQ7/fN/JSpuKPHfhLEAN7kum/txufsfaRnpkX5b cExWVj8R8Uf0uZjR6gleQThAWXrqVTOR4su+YMKO3F2HPP5KPzbtJvAsHngp69949/k9 cYd1z/O6muT2lT5IViqHATgCW8ZMwD12iuE+mpdYyXWBCdFyG1K3AxQYORWlGmPQERzD TiJQ== X-Gm-Message-State: AOAM531q0qmegJe1Efzt02SA1eODdlPYPDLDJy4Ucf7UOuB2cZC84n9x 6opfdc6wTcohZA+IqRXcIwzCnC7er23znw== X-Google-Smtp-Source: ABdhPJwBgMdubbtofwwkjwIGFK0am3LtvtbJ7nemhvspc4fzXZmPiAXYJ/rTkVflgvcqLoZ9/neylQ== X-Received: by 2002:ad4:4e0e:: with SMTP id dl14mr17633616qvb.37.1627928468893; Mon, 02 Aug 2021 11:21:08 -0700 (PDT) Received: from hurd ([207.35.94.204]) by smtp.gmail.com with ESMTPSA id b21sm4899055qtb.58.2021.08.02.11.21.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Aug 2021 11:21:08 -0700 (PDT) From: Maxim Cournoyer References: <9de0174c0818edd7c3f1f58a264a6ea3c5c3be50.1623243063.git.public@yoctocell.xyz> Date: Mon, 02 Aug 2021 14:21:07 -0400 In-Reply-To: <9de0174c0818edd7c3f1f58a264a6ea3c5c3be50.1623243063.git.public@yoctocell.xyz> (Xinglu Chen's message of "Wed, 09 Jun 2021 15:06:27 +0200") Message-ID: <87eebb908c.fsf_-_@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1627928533; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-to: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=zttM+573gmGyXOR+RUh7J4jouSqeCGTDKZVa597vpQA=; b=IcDB+wf3D5wfoZYdgGpYdXrOnNHaQ6Y8EsBeNhOlE0xH63FRqZ4v7MTkMuRXE0IJjUYA/9 Z4zbO8i5Rj5wv0/PGdlp4erE6e7Fi/uKtehvLQwbp7VhMSft2a/wjliLpxcnMkwmkHgMXO fx1jBoiEAPRj01acNcoX7Uu2ANXLsHcw3fQ0RsV5Jm8JQRWH2NDLWgW9F8NhXqtYfRl9C5 ibelr94JAFjKnBlEzqQD0BE0Z7RJpfN0xSuvYtjHh/hfeVnbD/gcCkB4iWUXRIc3M9LMTe HmqzrKqWdg+zAAKTOPoESxhKt3Z4CizwWYYRI/P5xoQ1xloOpOJPfV0FOQ1lNw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1627928533; a=rsa-sha256; cv=none; b=B0xeG2cZJwkI25u/pHCtyyJG4z5hveT6ps/8NBlP5+itT9Cp2ELhrtfFd7q+Se3Dxz/4No Kp5z58QT5UWWFi/nyzr2dz1Y7lN2twjD1DAAXyiLmrHrKf1U0iGH+qiHIEwsbdlzlU21qo pkhl8lXM5Tw3RTyfoJ1sDHRk1jiRPMfh6iI23PGJNF9HB6nnMwgcryCYODi7VEewqFddZL JbFWxUlTK8Herncq/Q/R6/SELhz/1GAveEes9inJqePd8DYcHndUdcSc6inZ5zxh1voXBl mokiErbj6Z1SlBwTHtjJAM6D7LyJ8FenKGaV61YWgh7GR7CJws0xDQ8CKLZQZg== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20161025 header.b=hYE0Jfg3; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Spam-Score: -1.32 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=gmail.com header.s=20161025 header.b=hYE0Jfg3; dmarc=fail reason="SPF not aligned (relaxed)" header.from=gmail.com (policy=none); spf=pass (aspmx1.migadu.com: domain of guix-patches-bounces@gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=guix-patches-bounces@gnu.org X-Migadu-Queue-Id: CD86F8249 X-Spam-Score: -1.32 X-Migadu-Scanner: scn1.migadu.com X-TUID: lZtz/AA2esn8 Hello again, Xinglu Chen writes: > * gnu/services/configuration.scm (generate-documentation): If the default > value of a field is a package, show the value of the =E2=80=98name=E2= =80=99 field of the > package. This might not be the correct name in some cases though. Here also, I've edited the commit message like so: services: configuration: Derive the default value from the package variab= le. If the type of a configuration field is a package, show the name of its package *variable* as the default value. * gnu/services/configuration.scm (generate-documentation){show-default} {package->symbol}: New nested procedures. Use them to format the field entries. > --- > gnu/services/configuration.scm | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/gnu/services/configuration.scm b/gnu/services/configuration.= scm > index abcbc70520..99687d065a 100644 > --- a/gnu/services/configuration.scm > +++ b/gnu/services/configuration.scm > @@ -252,12 +252,20 @@ does not have a default value" field kind))) > (configuration-field-default-val= ue-thunk f) > (lambda _ '%invalid)))) > (define (show-default? val) > - (or (string? val) (number? val) (boolean? val) > + (or (string? val) (number? val) (boolean? val= ) (package? val) > (and (symbol? val) (not (eq? val '%invali= d))) > (and (list? val) (and-map show-default? v= al)))) > + > + (define (show-default val) > + (cond > + ((package? val) > + ;; Maybe not always correct. > + (package-name val)) > + (else (str val)))) > + > `(entry (% (heading (code ,(str field-name)) > ,@(if (show-default? defaul= t) > - `(" (default: " (code= ,(str default)) ")") > + `(" (default: " (code= ,(show-default default)) ")") > '()) > " (type: " > ,(str field-type) I've found a (rather hacky?) way to derive a package's symbol name instead of using its name, which eliminates the risk of a mismatch, using such procedure: --8<---------------cut here---------------start------------->8--- @@ -252,6 +254,21 @@ does not have a default value" field kind))) ;; A little helper to make it easier to document all those fields. (define (generate-documentation documentation documentation-name) (define (str x) (object->string x)) + + (define (package->symbol package) + "Return the first symbol name of a package that matches PACKAGE, else = #f." + (let* ((module (file-name->module-name + (location-file (package-location package)))) + (symbols (filter-map + identity + (module-map (lambda (symbol var) + (and (equal? package (variable-ref var)) + symbol)) + (resolve-module module))))) + (if (null? symbols) + #f + (first symbols)))) + (define (generate configuration-name) (match (assq-ref documentation configuration-name) ((fields . sub-documentation) @@ -270,14 +287,21 @@ does not have a default value" field kind))) (lambda _ '%invalid)))) (define (show-default? val) (or (string? val) (number? val) (boolean? val) + (package? val) (and (symbol? val) (not (eq? val '%invalid))) (and (list? val) (and-map show-default? val)))) =20 + (define (show-default val) + (cond + ((package? val) + (symbol->string (package->symbol val))) + (else (str val)))) + `(entry (% (heading (code ,(str field-name)) ,@(if (show-default? default) `(" (default: " --8<---------------cut here---------------end--------------->8--- Tested it to generate the new Jami service documentation, and pushed as commit 8e1f94421873777c6bb0b83daa4f81cbacc8b3ff. I think (guix services configuration) is starting to look good! Thanks to your efforts toward improving the module. Closing. Maxim