summaryrefslogtreecommitdiff
path: root/nonguix
diff options
context:
space:
mode:
authorPierre Neidhardt <mail@ambrevar.xyz>2020-06-22 17:42:35 +0200
committerPierre Neidhardt <mail@ambrevar.xyz>2020-06-22 17:43:31 +0200
commit12210f2393a5c8f32dec557cc7cbc6f73c5f0a32 (patch)
tree01bf2da2cec6d6d24710374be8c232acc3537692 /nonguix
parent702ab8c308e57623728f101bd3d507a73b7e55f7 (diff)
utils: Remove 'make-desktop-entry-file' function now that it's upstream.
* nonguix/build/utils.scm (make-desktop-entry-file): Remove function.
Diffstat (limited to 'nonguix')
-rw-r--r--nonguix/build/utils.scm100
1 files changed, 0 insertions, 100 deletions
diff --git a/nonguix/build/utils.scm b/nonguix/build/utils.scm
index a5442ea..451f63b 100644
--- a/nonguix/build/utils.scm
+++ b/nonguix/build/utils.scm
@@ -23,7 +23,6 @@
#:use-module (guix build utils)
#:use-module (srfi srfi-26)
#:export (64-bit?
- make-desktop-entry-file
make-wrapper
concatenate-files))
@@ -36,105 +35,6 @@ See https://en.wikipedia.org/wiki/Executable_and_Linkable_Format#File_header."
(array-ref (get-bytevector-n (current-input-port) 5) 4)))
#:binary #t))
-(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)
- comment
- icon
- (hidden #f)
- only-show-in
- not-show-in
- (d-bus-activatable #f)
- try-exec
- exec
- path
- (terminal #f)
- actions
- mime-type
- (categories "Application")
- implements
- keywords
- (startup-notify #t)
- startup-w-m-class
- #:rest all-args)
- "Create a desktop entry file at DESTINATION.
-You must specify NAME.
-
-Values can be booleans, numbers, strings or list of strings.
-
-Additionally, locales can be specified with an alist where the key is the
-locale. The #f key specifies the default. Example:
-
- #:name '((#f \"I love Guix\") (\"fr\" \"J'aime Guix\"))
-
-produces
-
- Name=I love Guix
- Name[fr]=J'aime Guix
-
-For a complete description of the format, see the specifications at
-https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html."
- (define (escape-semicolon s)
- (string-join (string-split s #\;) "\\;"))
- (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))
-
- (define key-error-message "This procedure only takes key arguments beside DESTINATION")
-
- (unless name
- (error "Missing NAME key argument"))
- (unless (member #:type all-args)
- (set! all-args (append (list #:type type) all-args)))
- (mkdir-p (dirname destination))
-
- (with-output-to-file destination
- (lambda ()
- (format #t "[Desktop Entry]~%")
- (let loop ((args all-args))
- (match args
- (() #t)
- ((_) (error key-error-message))
- ((key value . ...)
- (unless (keyword? key)
- (error key-error-message))
- (set! key
- (string-join (map string-titlecase
- (string-split (symbol->string
- (keyword->symbol key))
- #\-))
- ""))
- (match value
- (((_ . _) . _)
- (for-each (lambda (locale-subvalue)
- (parse key
- (if (and (list? (cdr locale-subvalue))
- (= 1 (length (cdr locale-subvalue))))
- ;; Support both proper and improper lists for convenience.
- (cadr locale-subvalue)
- (cdr locale-subvalue))
- (car locale-subvalue)))
- value))
- (_
- (parse key value)))
- (loop (cddr args))))))))
-
(define* (make-wrapper wrapper real-file #:rest vars)
"Like `wrap-program' but create WRAPPER around REAL-FILE.
The wrapper automatically changes directory to that of REAL-FILE.