diff options
author | Arun Isaac | 2025-06-26 19:02:18 +0100 |
---|---|---|
committer | Arun Isaac | 2025-06-26 19:02:18 +0100 |
commit | 3cd7ea8e2545cf46c2c5715462924e03a80e89ee (patch) | |
tree | d834b40e2e89b2c0fff30b6b6f1f9766ce46a8b2 | |
parent | e6c1b526ad0104923586a3f6801a231baef11a4a (diff) | |
download | ravanan-3cd7ea8e2545cf46c2c5715462924e03a80e89ee.tar.gz ravanan-3cd7ea8e2545cf46c2c5715462924e03a80e89ee.tar.lz ravanan-3cd7ea8e2545cf46c2c5715462924e03a80e89ee.zip |
command-line-tool: Wrap vectors and alists when embedding in G-exps.
*
ravanan/command-line-tool.scm (build-command-line-tool-script)[vector->gexp,
alist->gexp]: New functions.
[run-command-gexp]: Use vector->gexp and alist->gexp.
-rw-r--r-- | ravanan/command-line-tool.scm | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/ravanan/command-line-tool.scm b/ravanan/command-line-tool.scm index 948b61a..c4ba42c 100644 --- a/ravanan/command-line-tool.scm +++ b/ravanan/command-line-tool.scm @@ -596,14 +596,28 @@ named @var{name} using tools from Guix manifest in @var{manifest-file} and on (cons "valueFrom" (coerce-expression (assoc-ref* argument "valueFrom"))))) + (define (vector->gexp vec) + ;; FIXME: G-expressions in vectors are not properly substituted. Fix this in + ;; Guix. + #~(vector #$@(vector->list vec))) + + (define (alist->gexp alist) + ;; FIXME: G-expressions as values in dotted alists are not properly + ;; substituted. Fix this in Guix. + #~(list #$@(map (match-lambda + ((key . value) + #~(cons #$key #$value))) + alist))) + (define run-command-gexp #~(run-command (append-map (lambda (arg) (if (command-line-binding? arg) (command-line-binding->args arg) (list arg))) (build-command #$(assoc-ref cwl "baseCommand") - #$(vector-map coerce-argument - (assoc-ref cwl "arguments")) + #$(vector->gexp + (vector-map (compose alist->gexp coerce-argument) + (assoc-ref cwl "arguments"))) #$(assoc-ref cwl "inputs") inputs)) #$(coerce-expression (assoc-ref cwl "stdin")) |