Subject: [bug#33286] Add 'list-formats' to 'guix pack'

From: [email-masked] (Ludovic Courtès)
Date: Tue, 06 Nov 2018 16:31:59 +0100

Hello,

Efraim Flashner <[email-masked]> skribis:

> From af9a132a662f1d703df1c32278a45d2adca146ed Mon Sep 17 00:00:00 2001
> From: Efraim Flashner <[email-masked]>
> Date: Tue, 6 Nov 2018 11:50:48 +0200
> Subject: [PATCH] pack: List the available formats.
>
> * guix/scripts/pack.scm (show-formats): New variable.
> (%options, show-help): Add 'list-formats' option.

[...]

> @@ -551,6 +552,18 @@ please email '~a'~%")
>      (squashfs . ,squashfs-image)
>      (docker  . ,docker-image)))
>  
> +(define (show-formats)
> +  ;; Print the supported pack formats.
> +  (display (G_ "The supported formats for 'guix pack' are:"))
> +  (newline)
> +  (display (G_ "
> +  tarball       A self-contained tarball, ready to run on another machine."))
> +  (display (G_ "
> +  squashfs      A squashfs image, ready for 'cluster engines' and the like."))

I’d write “Squashfs image suitable for Singularity” and remove “A” from
each.

Also, since we have the ‘%formats’ alist right above, what about
adjusting it so that it contains each format description, and then
‘show-formats’ would just traverse it?

You could do:

  (define-record-type <image-format>
    (image-format proc description)
    image-format?
    (proc        image-format-procedure)
    (description image-format-description))

  (define %formats
    (let-syntax ((description (syntax-rules () ((_ str) str))))
      `((tarball . ,(image-format self-contained-tarball
                                  (description "foo bar")))
        …)))

The dummy ‘description’ macro is here to allow ‘xgettext’ to catch the
translatable strings without actually translating them right away;
‘show-formats’ will have to call ‘G_’ for that.

WDYT?

Ludo’.