guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Add helper for .desktop file creation?


From: Nicolas Goaziou
Subject: Re: Add helper for .desktop file creation?
Date: Mon, 27 May 2019 18:15:54 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2 (gnu/linux)

Hello,

Pierre Neidhardt <address@hidden> writes:

> I came up with the following function, it seems to work well (need to
> test a little more though).
>
> Before I could submit a patch, I was wondering where I should place it:
> it seems that placing it in guix/utils.scm triggers a whole world
> rebuild.
>
> Is there a way around it or should I send this patch to core-updates?

Not what you're asking for, but I had a few comments about the
implementation:

> --8<---------------cut here---------------start------------->8---
> (define* (make-desktop-entry-file destination #:key
>                                   (type "Application") ; One of 
> "Application", "Link" or "Directory".
>                                   (version "1.1")
>                                   name
>                                   (generic-name name)
>                                   (no-display #f)

What about only providing default values only for mandatory keys, i.e.,
only "type" (name is also mandatory, but it has no default value).
I think the function currently adds entries that are not necessary.

>   (define* (parse key value #:optional locale)
>     (set! value (match value
>                   (#t "true")
>                   (#f "false")
>                   ((?  number? n) n)
>                   ((?  string? s) (escape-semicolon s))
>                   ((?  list? value)
>                    (catch 'wrong-type-arg
>                      (lambda () (string-join (map escape-semicolon value) 
> ";"))
>                      (lambda args (error "List arguments can only contain 
> strings: ~a" args))))
>                   (_ (error "Value must be a boolean, number, string or list 
> of strings"))))
>     (format #t "~a=~a~%"
>             (if locale
>                 (format #f "~a[~a]" key locale)
>                 key)
>             value))

I wonder if it wouldn't be better to stick to the specification. For
example :comment expects a string, or an alist: shouldn't the function
return an error if its value is something else?

It requires us to hard-code the allow value types in the function, but
Not every packager knows these specifications, and it could help them
a bit. Also, we can limit keys to allowed ones, for increased typo
checking.

>            (set! key
>                  (string-join (map string-titlecase
>                                    (string-split (symbol->string
>                                                   (keyword->symbol key))
>                                                  #\-))
>                               ""))

The docstring may explain that, e.g., compound :mime-type key becomes
MimeType.

In any case, it looks nice and useful.

Regards,

-- 
Nicolas Goaziou



reply via email to

[Prev in Thread] Current Thread [Next in Thread]