unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Tomas Volf <~@wolfsden.cz>
To: Richard Sent <richard@freakingpenguin.com>
Cc: 71586@debbugs.gnu.org
Subject: [bug#71586] [PATCH] services: web: Improve nginx formatting for extra-content
Date: Wed, 19 Jun 2024 19:55:17 +0200	[thread overview]
Message-ID: <ZnMbhbFmkSpsgkWq@ws> (raw)
In-Reply-To: <9556afd9d860c28ea5abe15fd42d8e2989e5244c.1718510232.git.richard@freakingpenguin.com>

[-- Attachment #1: Type: text/plain, Size: 2364 bytes --]

Hello,

On 2024-06-15 23:57:12 -0400, Richard Sent wrote:
> * gnu/services/web (default-nginx-config): When extra-content is a list, add 4
> space indentation and a newline to every line. If it's a string, continue
> inserting it directly. This makes the list serialization behavior more
> consistent with other services.
>
> Change-Id: Iec8614ba3cfc37292a566197e8d39b352b04846a
> ---
>  gnu/services/web.scm | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/services/web.scm b/gnu/services/web.scm
> index 406117c457..094b1e4b45 100644
> --- a/gnu/services/web.scm
> +++ b/gnu/services/web.scm
> @@ -771,7 +771,12 @@ (define (default-nginx-config config)
>             "\n"
>             (map emit-nginx-upstream-config upstream-blocks)
>             (map emit-nginx-server-config server-blocks)
> -           extra-content
> +           (match extra-content
> +             ((? string? extra-content) extra-content)
> +             ((? list? extra-content)
> +              (map (lambda (line)
> +                     (simple-format #f "    ~A\n" line))

The format here sadly prevents producing `include' directives with link to the
store, since any file-like object will be just serialized as its representation:

  `("foo"
    "bar"
    ("aa" "bb")
    ,(plain-file "foo" "baz"))

Will end up as:

    foo
    bar
    (aa bb)
    #<<plain-file> name: "foo" content: "baz" references: ()>

Neither the list nor the plain-file are as expected.  What about doing just
this:

    (match extra-content
      ((? string? extra-content) extra-content)
      ((? list? extra-content)
       (map (lambda (line)
              `("    " ,line "\n"))
            extra-content)))

This produces the expected (in my opinion) output:

    foo
    bar
    aabb
    /gnu/store/7pz4iczjvgvn9ikpp1ip50bk6vi4sk7b-foo

Meaning you can now do things like

    (extra-content `(("include " ,%some-file.conf ";")))

And it will work as expected.  It already works like this for raw-content in the
nginx-server-configuration.

Thoughts?

> +                   extra-content)))
>             "\n}\n"))))
>
>  (define %nginx-accounts
>
> base-commit: 612e4dd98f7d1d015e405af9d029bede3fe3c280
> --
> 2.45.1
>
>

Have a nice day,
Tomas Volf

--
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2024-06-19 17:56 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-16  3:57 [bug#71586] [PATCH] services: web: Improve nginx formatting for extra-content Richard Sent
2024-06-19 17:55 ` Tomas Volf [this message]
2024-06-19 18:49 ` [bug#71586] [PATCH v2] " Richard Sent
2024-06-20 16:42 ` [bug#71586] [PATCH v3] " Richard Sent
2024-06-20 21:29   ` Tomas Volf
2024-06-27 10:33   ` bug#71586: " Christopher Baines

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZnMbhbFmkSpsgkWq@ws \
    --to=~@wolfsden.cz \
    --cc=71586@debbugs.gnu.org \
    --cc=richard@freakingpenguin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).