aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2023-10-16 22:27:25 +0100
committerArun Isaac2023-10-16 22:41:19 +0100
commitd2e34b132a36978fc227ab9301c4407ea13212cb (patch)
tree32dd59154487d05d554a3bbfb293da0aa8971b67
parentbc6bc78ac3079822dcd5bc51e36983a7470fdc04 (diff)
downloadccwl-d2e34b132a36978fc227ab9301c4407ea13212cb.tar.gz
ccwl-d2e34b132a36978fc227ab9301c4407ea13212cb.tar.lz
ccwl-d2e34b132a36978fc227ab9301c4407ea13212cb.zip
ccwl: Support arbitrary expressions in #:other arguments.
Support arbitrary expressions, that are actually evaluated, in #:other arguments. This means, among other things, that users will have to quote them correctly. While this complicates matters for novice users who may not be familiar with scheme, it is the most general and most flexible solution. In this particular case, we value flexibility over ease of use since #:other is an escape hatch and if users have to use it, ease of use has already been lost. * ccwl/ccwl.scm (input, output, command): Make #:other an actually evaluated unary argument.
-rw-r--r--ccwl/ccwl.scm12
1 files changed, 6 insertions, 6 deletions
diff --git a/ccwl/ccwl.scm b/ccwl/ccwl.scm
index f9243aa..f193ea9 100644
--- a/ccwl/ccwl.scm
+++ b/ccwl/ccwl.scm
@@ -126,14 +126,14 @@
(()
(condition (ccwl-violation input-spec)
(formatted-message "Input has no identifier")))))))
- (apply (syntax-lambda** (id #:key (type #'File) label (default (make-unspecified-default)) #:key* other)
+ (apply (syntax-lambda** (id #:key (type #'File) label (default (make-unspecified-default)) (other #''()))
(let ((position #f)
(prefix #f))
#`(make-input '#,id '#,type #,label
#,(if (unspecified-default? default)
#'(make-unspecified-default)
default)
- #,position #,prefix '#,other)))
+ #,position #,prefix #,other)))
#'(id args ...))))
(id (identifier? #'id) (input #'(id)))
(_ (error "Invalid input:" (syntax->datum input-spec)))))
@@ -181,8 +181,8 @@
(()
(condition (ccwl-violation output-spec)
(formatted-message "Output has no identifier")))))))
- (apply (syntax-lambda** (id #:key (type #'File) binding source #:key* other)
- #`(make-output '#,id '#,type #,binding #,source '#,other))
+ (apply (syntax-lambda** (id #:key (type #'File) binding source (other #''()))
+ #`(make-output '#,id '#,type #,binding #,source #,other))
#'(id args ...))))
(id (identifier? #'id) (output #'(id)))
(_ (error "Invalid output:" (syntax->datum output-spec)))))
@@ -352,7 +352,7 @@ identifiers defined in the commands."
(condition (ccwl-violation extra)
(formatted-message "Unexpected extra positional argument ~a in command definition"
(syntax->datum extra))))))))
- (apply (syntax-lambda** (#:key stdin stderr stdout #:key* inputs outputs run other)
+ (apply (syntax-lambda** (#:key stdin stderr stdout (other #''()) #:key* inputs outputs run)
(when (null? run)
(raise-exception
(condition (ccwl-violation x)
@@ -381,7 +381,7 @@ identifiers defined in the commands."
(condition (ccwl-violation stdout)
(formatted-message "#:stdout parameter must be a string")))
stdout)
- (list #,@other)))
+ #,other))
#'(args ...)))))))
(define (cwl-workflow file)