Age | Commit message (Collapse) | Author |
|
* ccwl/ccwl.scm (collect-steps): Deduplicate global workflow input
keys across branches of tees.
* tests/ccwl.scm (key, collect-steps): New variables.
("rename should work even on the final output of a
workflow"): Update order of elements in expected list.
("tee must deduplicate global workflow input keys"): New test.
* ccwl/utils.scm (append-mapn): Delete function.
* tests/utils.scm ("append-mapn"): Delete test.
|
|
* tests/ccwl.scm ("rename should work even on the final output of a
workflow"): Put expected expression before actual expression.
|
|
* ccwl/ccwl.scm (<input>)[separator]: New field.
* ccwl/ccwl.scm (run-arg-position, run-args): Support array input
specifiers.
(run-arg-separator): New function.
(command): Set separator on input objects.
* ccwl/cwl.scm (input->cwl-scm): Serialize itemSeparator.
* tests/ccwl.scm ("commands with non-string #:separator parameters
must raise a &ccwl-violation condition"): New test.
* doc/ccwl.skb (Cookbook)[Array input item separators]: New section.
* doc/array-input-item-separators.scm: New file.
|
|
* ccwl/ccwl.scm (collect-steps): Report unknown keys passed to rename.
* tests/ccwl.scm ("rename with unknown key must raise a
&ccwl-violation condition"): New test.
|
|
* tests/ccwl.scm ("rename with non-keyword arguments must raise a
&ccwl-violation condition"): New test.
|
|
* tests/ccwl.scm (test-condition): New syntax.
(ccwl-violation-with-message?): New function.
Rewrite almost all tests using test-condition.
|
|
* ccwl/ccwl.scm (construct-type-syntax): Construct types recursively
to support nested arrays.
(key->output): Recursively convert stdout types to File types.
* ccwl/cwl.scm (type->cwl): New function.
(input->cwl-scm, output->cwl-scm): Use type->cwl.
* tests/ccwl.scm (make-array-type): New function.
(construct-type-syntax-wrapper): New syntax.
("construct-type-syntax on primitive types", "construct-type-syntax on
array types", "construct-type-syntax on nested array types"): New
tests.
* tests/cwl.scm, doc/array-types.scm, doc/nested-array-types.scm: New
files.
* doc/ccwl.skb (Cookbook)[Array types]: New section.
|
|
* ccwl/ccwl.scm (ensure-yaml-serializable): New function.
(input, output, command): Use ensure-yaml-serializable.
* tests/ccwl.scm ("inputs with #:other parameters that fail to
evaluate must raise a &ccwl-violation condition", "outputs with
#:other parameters that fail to evaluate must raise a &ccwl-violation
condition", "commands with #:other parameters that fail to evaluate
must raise a &ccwl-violation condition"): New tests.
|
|
* ccwl/ccwl.scm (command): Add "Invalid parameter" to #:stderr and
#:stdout error messages.
* tests/ccwl.scm ("commands with non-string #:stderr parameters must
raise a &ccwl-violation condition", "commands with non-string #:stdout
parameters must raise a &ccwl-violation condition"): Adjust tests.
|
|
* ccwl/ccwl.scm (<input>)[stage?]: New field.
* ccwl/ccwl.scm (input): Add #:stage argument.
* ccwl/cwl.scm (command->cwl-scm): Serialize requirements for staged
inputs.
* doc/ccwl.skb (Cookbook)[Stage input files]: New section.
* tests/ccwl.scm ("inputs with an invalid #:stage? parameter must
raise a &ccwl-violation condition"): New test.
|
|
* ccwl/ccwl.scm (run-args): Error out on prefixes that are not
strings.
* tests/ccwl.scm ("command definitions with non-string prefixes in
prefixed inputs must raise a &ccwl-violation condition"): New test.
|
|
* ccwl/ccwl.scm (run-args): Flatten prefixed string arguments in
command definitions.
* tests/ccwl.scm ("tolerate prefixed string arguments in command
definitions"): New test.
|
|
* ccwl/ccwl.scm (command): Raise &ccwl-violation on invalid command
#:run arguments.
* tests/ccwl.scm ("command definitions with invalid #:run arguments
must raise a &ccwl-violation condition"): New test.
|
|
* ccwl/ccwl.scm (command): Check if inputs used in #:run arguments of
command definitions are actually defined.
* tests/ccwl.scm ("command definitions with undefined inputs in their
#:run arguments must raise a &ccwl-violation condition", "command
definitions with undefined prefix inputs in their #:run arguments must
raise a &ccwl-violation condition"): New tests.
|
|
* tests/ccwl.scm ("allow literal as arguments"): Rename to "allow
literal strings as arguments".
(print-int): New variable.
("allow literal ints as arguments"): New test.
|
|
#:stderr and #:stdout, especially #:stdout, are commonly
required. They ought to be first class parameters and not tucked away
into #:other.
* ccwl/ccwl.scm (<command>)[stderr, stdout]: New fields.
* ccwl/ccwl.scm (command): Accept #:stderr and #:stdout as first class
parameters.
* ccwl/cwl.scm (command->cwl-scm): Serialize stderr and stdout fields.
* doc/capture-stdout.scm (print),
doc/decompress-compile-run.scm (run), doc/checksum.scm (md5sum,
sha1sum, sha256sum), doc/spell-check.scm (find-misspellings): Capture
stdout in file.
* doc/checksum.scm, doc/decompress-compile-run.scm:
* doc/ccwl.skb (Tutorial)[Capturing the standard output stream of a
command]: Document #:stdout first class parameter.
* doc/ccwl.skb (Tutorial)[Workflow with multiple steps]: Capture
stdout in explicitly named files.
* tests/ccwl.scm ("commands with non-string #:stderr parameters must
raise a &ccwl-violation condition", "commands with non-string #:stdout
parameters must raise a &ccwl-violation condition"): New tests.
|
|
* ccwl/ccwl.scm (workflow): Detect multiple expressions in workflow
body and raise an exception.
* tests/ccwl.scm ("unrecognized workflow syntaxes must raise a
&ccwl-violation condition"): Test for the formatted message too.
("multiple expressions in workflow body must raise a &ccwl-violation
condition"): New test.
|
|
* ccwl/ccwl.scm (workflow): Raise &ccwl-violation when workflow syntax
is not recognized.
* tests/ccwl.scm ("unrecognized workflow syntaxes must raise a
&ccwl-violation condition"): New test.
|
|
* tests/ccwl.scm ("step supplied with an unknown key must raise a
&ccwl-violation condition"): New test.
|
|
* ccwl/ccwl.scm (<input>)[set-input-default]: New setter.
* ccwl/ccwl.scm (<command>)[set-command-inputs]: Add setter.
* ccwl/ccwl.scm (apply-partially): New function.
(collect-steps): Support literal strings as arguments.
* tests/ccwl.scm ("allow literal strings as arguments"): New test.
* .dir-locals.el (scheme-mode): Indent set-command-inputs and
set-input-default.
|
|
Many tests that use guard to catch and ensure that certain conditions
are raised actually leak and let through cases where the expressions
result in a truthy value.
* tests/ccwl.scm ("input, when passed more than one positional
argument, must raise a &ccwl-violation condition", "input, when passed
an unrecognized keyword, must raise a &ccwl-violation condition",
"input, when passed multiple arguments to a unary keyword, must raise
a &ccwl-violation condition", "output, when passed more than one
positional argument, must raise a &ccwl-violation condition", "output,
when passed an unrecognized keyword, must raise a &ccwl-violation
condition", "output, when passed multiple arguments to a unary
keyword, must raise a &ccwl-violation condition", "command, when
passed positional arguments, must raise a &ccwl-violation condition",
"command, when passed an unrecognized keyword, must raise a
&ccwl-violation condition", "command, when passed multiple arguments
to a unary keyword, must raise a &ccwl-violation condition"): Catch
expressions that don't raise exceptions.
|
|
* ccwl/ccwl.scm (collect-steps): Error out if steps with expressions
that evaluate to commands have no identifier.
* tests/ccwl.scm ("step with expression that evaluates to a command
but without a step identifier must raise a &ccwl-violation
condition"): New test.
|
|
eval is not just more portable but also more flexible. It lets us
allow steps with expressions that evaluate to commands. Sadly, we do
not yet properly support commands defined in lexical scope.
* ccwl/ccwl.scm (function-object): Use eval instead of module
introspection.
* tests/ccwl.scm ("allow steps with expressions that evaluate to
commands"): New test.
|
|
* ccwl/ccwl.scm (function-inputs): New function.
(function-input-keys): Use function-inputs.
(collect-steps): Do not error out on steps with unspecified default
arguments.
* tests/ccwl.scm (print-with-default): New variable.
("allow steps with unspecified default arguments"): New test.
|
|
* tests/ccwl.scm (print): New variable.
("rename should work even on the final output of a workflow"): New
test.
|
|
* ccwl/ccwl.scm (command): Raise &ccwl-violation conditions on syntax
errors.
* tests/ccwl.scm ("command, when passed positional arguments, must
raise a &ccwl-violation condition", "command, when passed an
unrecognized keyword, must raise a &ccwl-violation condition",
"command, when passed multiple arguments to a unary keyword, must
raise a &ccwl-violation condition"): New tests.
|
|
* ccwl/ccwl.scm (output): Raise &ccwl-violation conditions on syntax
errors.
* tests/ccwl.scm (output): New function.
("output, when passed more than one positional argument, must raise a
&ccwl-violation condition", "output, when passed an unrecognized
keyword, must raise a &ccwl-violation condition", "output, when passed
multiple arguments to a unary keyword, must raise a &ccwl-violation
condition"): New tests.
|
|
* ccwl/ccwl.scm: Import (rnrs conditions), (rnrs exceptions) and (ccwl
conditions).
(input, input-spec-id): Raise &ccwl-violation
conditions on syntax errors.
* tests/ccwl.scm: Import (rnrs exceptions) and (ccwl conditions).
(input): New function.
("input, when passed more than one positional argument, must raise a
&ccwl-violation condition", "input, when passed an unrecognized
keyword, must raise a &ccwl-violation condition", "input, when passed
multiple arguments to a unary keyword, must raise a &ccwl-violation
condition"): New tests.
|
|
@@ is shorter and looks neater with fewer quotes.
* tests/ccwl.scm ("stdin input should not have inputBinding"),
tests/utils.scm ("unsyntax-keywords"): Use @@ instead of module-ref
and resolve-module.
|
|
* ccwl/ccwl.scm: Import (yaml). Export cwl-workflow?, cwl-workflow,
cwl-workflow-file, cwl-workflow-inputs and cwl-workflow-outputs.
(<cwl-workflow>): New type.
(cwl-workflow, function-input-keys, function-outputs,
function-object): New functions.
(command-input-keys, command-object): Delete functions.
(collect-steps): Replace command-object with function-object,
command-input-keys with function-input-keys and command-outputs with
function-outputs.
* ccwl/cwl.scm (workflow->cwl-scm): Handle <cwl-workflow> objects.
* tests/ccwl.scm ("read all forms of inputs and outputs from a CWL
workflow"): New test.
* guix.scm: Import (gnu packages guile-xyz) and (guix utils).
(guile-libyaml): New variable.
(ccwl)[inputs]: Add guile-libyaml.
|
|
* tests/ccwl.scm ("stdin input should not have inputBinding"): Fix
quoting of type File.
|
|
This factorization is required to support other compilation targets
such as graphviz, bash, scheme, etc.
* ccwl/cwl.scm: New file.
* Makefile.am (SOURCES): Register it.
* ccwl/ccwl.scm (ccwl): Export command?, command-inputs,
command-outputs, command-args, command-stdin, command-other,
workflow?, workflow-steps, workflow-inputs, workflow-outputs,
workflow-other, input?, input-id, input-type, input-label,
input-default, input-position, input-prefix, input-other, output?,
output-id, output-type, output-binding, output-source, output-other,
step?, step-id, step-run, step-in, step-out, unspecified-default?.
(<workflow>): New type.
(filter-alist): Move to cwl.scm.
(make-workflow): Refactor into workflow->cwl-scm in cwl.scm.
(output->cwl): Move to cwl.scm as output->cwl-scm.
(command->cwl): Move to cwl.scm as command->cwl-scm.
(workflow-steps): Rename to collect-steps. Clarify docstring.
(workflow): Use collect-steps instead of workflow-steps. Explicitly
pass empty list as other argument of make-workflow. Add TODO note to
implement it properly.
* scripts/ccwl.in: Import (ccwl cwl) instead of (ccwl yaml). Use
workflow->cwl instead of scm->yaml.
* tests/ccwl.scm ("stdin input should not have inputBinding"): Use
command->cwl-scm from (ccwl cwl) instead of command->cwl from (ccwl
ccwl).
|
|
* tests/ccwl.scm ("stdin input should not have inputBinding"): Fix
indentation.
|
|
* tests/ccwl.scm: Import (ccwl ccwl)
("stdin input should not have inputBinding"): New test.
|
|
* tests/ccwl.scm: Do not import (srfi srfi-71).
|
|
* tests/ccwl.scm (break-pair): Delete function.
("break-pair", "break-pair: check last elemet handling"): Delete
tests.
|
|
* tests/ccwl.scm, tests/yaml.scm: Add copyright section.
|
|
* ccwl/ccwl.scm (break-pair): New function.
* tests/ccwl.scm: New file.
* tests/ccwl.scm ("break-pair", "break-pair: check last elemet
handling"): New test cases.
|