Age | Commit message (Expand) | Author |
2023-11-23 | ccwl: Implement item separators for array inputs.•••* 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.
| Arun Isaac |
2023-11-23 | ccwl: Scan run-args only once when constructing inputs.•••* ccwl/ccwl.scm (run-arg-prefix): Operate on a specific run argument,
rather than on a list of them.
(command): Scan run-args only once when constructing inputs.
| Arun Isaac |
2023-11-23 | ccwl: Parse run arguments recursively.•••Parsing run arguments recursively allows us to share code between
different pattern matchers. For example, the input matcher and
the (prefix input) matcher can share code. This will come in handy as
our pattern matchers grow more complex.
* ccwl/ccwl.scm (run-args): Parse run arguments recursively.
| Arun Isaac |
2023-11-23 | dir-locals: Indent test-condition correctly.•••* .dir-locals.el (scheme-mode): Indent test-condition.
| Arun Isaac |
2023-11-21 | doc: Update source reference to rename.•••* doc/ccwl.skb (Tutorial)[Let's write a spell check workflow]: Update
source reference to rename.
| Arun Isaac |
2023-11-21 | ccwl: Comment on passing global workflow inputs through all commands.•••* ccwl/ccwl.scm (collect-steps): Comment on passing global workflow
inputs through all commands.
| Arun Isaac |
2023-11-21 | ccwl: Reimplement rename recursively.•••With recursion, we no longer need an explicit call to map, and the
code is less deeply nested. This is good for clarity.
* ccwl/ccwl.scm (collect-steps): Reimplement rename recursively.
| Arun Isaac |
2023-11-21 | ccwl: Report unknown keys passed to rename.•••* 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.
| Arun Isaac |
2023-11-21 | tests: Report non-keyword arguments to rename.•••* tests/ccwl.scm ("rename with non-keyword arguments must raise a
&ccwl-violation condition"): New test.
| Arun Isaac |
2023-11-21 | tests: Abstract out testing for conditions.•••* tests/ccwl.scm (test-condition): New syntax.
(ccwl-violation-with-message?): New function.
Rewrite almost all tests using test-condition.
| Arun Isaac |
2023-11-19 | ccwl: Delete code remnant from previous editing.•••This code remnant actually compiled successfully and was well-hidden
from sight!
* ccwl/ccwl.scm (key->output): Delete code remnant from previous
editing.
| Arun Isaac |
2023-11-18 | ccwl: Error out if arguments have been supplied more than once.•••* ccwl/ccwl.scm (collect-steps): Error out if arguments have been
supplied more than once.
| Arun Isaac |
2023-11-18 | scripts: When ccwl crashes, say so explicitly.•••* scripts/ccwl (main): When ccwl crashes, say so explicitly.
| Arun Isaac |
2023-11-18 | ccwl: Never set other and binding fields of inputs/outputs to #f.•••Setting the other and binding fields to #f is a type violation. It
messes with code that expects these fields to always contain lists.
* ccwl/ccwl.scm (cwl-workflow): Set other and binding fields of inputs
and outputs to the empty list.
| Arun Isaac |
2023-11-18 | ccwl: Report non-existent external CWL workflow files.•••cwl-workflow needs to be a macro so we have access to syntax objects
necessary to raise a &cwl-violation condition.
* ccwl/ccwl.scm (cwl-workflow): Rewrite as macro. Report error if CWL
file does not exist.
| Arun Isaac |
2023-11-18 | ccwl: Allow nested workflows in workflow body.•••* ccwl/ccwl.scm (function-inputs, function-outputs, function-object):
Support <workflow> objects as functions.
(<workflow>): Move above function-outputs.
* ccwl/cwl.scm (workflow->cwl-scm): Allow nested workflows.
| Arun Isaac |
2023-11-18 | ccwl: Restrict #:binding parameter to YAML serializable trees.•••* ccwl/ccwl.scm (ensure-yaml-serializable): Accept parameter name for
&formatted-message condition.
(input): Explicitly pass parameter name #:other. Restrict #:binding
parameter to YAML serializable trees.
*
doc/capture-output-file-with-parameter-reference.scm (extract-specific-file),
doc/capture-output-file.scm (extract),
doc/decompress-compile-run.scm (compile): Pass an YAML serializable
tree, not an expression, as the #:binding parameter.
| Arun Isaac |
2023-11-17 | ccwl: Report errors in rename mappings.•••* ccwl/ccwl.scm (collect-steps): Report errors in rename mappings.
| Arun Isaac |
2023-11-17 | utils: Define pairify behaviour on odd number of elements.•••* ccwl/utils.scm (pairify): Ignore extra elements when list has an odd
number of elements.
* tests/utils.scm ("pairify must ignore extra elements when list has
an odd number of elements"): New test.
| Arun Isaac |
2023-11-17 | ccwl: Implement cross product scattering operations.•••* ccwl/ccwl.scm (collect-steps): Implement scatter-cross and
scatter-nested-cross.
(key->output): Nest output array types for nested cross product
scatters.
| Arun Isaac |
2023-11-17 | ccwl: Recreate types using syntax.•••* ccwl/ccwl.scm (type->syntax): New function.
(key->output): Use type->syntax.
| Arun Isaac |
2023-11-17 | ui: Colorize format specifiers not format arguments.•••* ccwl/ui.scm (report-formatted-message): Colorize format specifiers
not format arguments.
* tests/ui.scm ("report-formatted-message must not fail on arguments
that are not strings"): New test.
| Arun Isaac |
2023-11-17 | yaml: Serialize atomic dictionary values on the same line.•••* ccwl/yaml.scm (display-dictionary-entry): Serialize atomic values on
the same line.
* tests/yaml.scm ("dictionary keys that map to an atomic value must be
serialized on the same line"): New test.
| Arun Isaac |
2023-11-17 | doc: Add chapter and section identifiers.•••Identifiers are important so the generated HTML documentation can have
permanent URIs to all chapters and sections. We are not too concerned
with adding identifiers to subsections since we don't list them in the
table of contents.
* doc/ccwl.skb: Add chapter and section identifiers to all chapters
and sections.
| Arun Isaac |
2023-11-16 | yaml: Comment on various cases handled by scm->yaml.•••* ccwl/yaml.scm (scm->yaml): Comment on cases handled.
| Arun Isaac |
2023-11-16 | yaml: Display arrays with a single atomic element on the same line.•••* ccwl/yaml.scm (atom?): New function.
(display-dictionary-entry, scm->yaml): Display arrays with a single
atomic element on the same line.
* tests/yaml.scm ("strings with hyphen characters should be escaped",
"strings with asterisk characters should be escaped"): Update tests
with new behaviour.
("single element vectors must be serialized on the same line"): New
test.
| Arun Isaac |
2023-11-16 | ccwl: Support nested arrays.•••* 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.
| Arun Isaac |
2023-11-14 | doc: Add scatter-gather snippet.•••I forgot to add this file in my previous commit.
* doc/scatter-gather.scm: New file.
| Arun Isaac |
2023-11-14 | ccwl: Implement scatter.•••* ccwl/ccwl.scm (<step>): Wrap constructor make-step.
[scattered-inputs, scatter-method]: New fields.
(collect-scatter-step): New function.
(collect-steps): Implement scatter.
(key->output): If step scatters, convert output to an array type.
(workflow): Add syntax to initialize scattered-inputs and
scatter-method fields of <step> object.
* ccwl/cwl.scm (workflow->cwl-scm): Add ScatterFeatureRequirement if
workflow contains scattering steps. Serialize scattered-inputs and
scatter-method.
* doc/ccwl.skb (Cookbook)[Scatter/gather]: New section.
| Arun Isaac |
2023-11-14 | ccwl: Clarify that key->output is meant for workflow outputs only.•••* ccwl/ccwl.scm (key->output): Clarify in the docstring that this is
meant for workflow outputs only.
| Arun Isaac |
2023-11-14 | ccwl: Convert stdout type outputs to File type in ccwl.scm.•••This conversation should be in ccwl.scm, not in cwl.scm. cwl.scm
should only deal with CWL serialization concerns.
* ccwl/cwl.scm (output->cwl-scm): Move conversion to ...
* ccwl/ccwl.scm (key->output): ... here.
(<output>)[type]: Add setter.
| Arun Isaac |
2023-11-14 | ccwl: Build output from key outside of syntax.•••It is easier (no need to juggle complex with-syntax constructs) to do
more complicated operations outside of the scope of syntax.
* ccwl/ccwl.scm (key->output): Build output from key outside of
syntax.
| Arun Isaac |
2023-11-14 | ccwl: Introduce syntax for array types.•••* ccwl/ccwl.scm (<array-type>): New type.
(memoize, make-array-type, construct-type-syntax): New functions.
(input, output): Use construct-type-syntax.
* ccwl/cwl.scm (output->cwl-scm, input->cwl-scm): Render array types.
| Arun Isaac |
2023-11-07 | cwl: Unify rendering of command and workflow outputs.•••* ccwl/cwl.scm (output->cwl-scm): Handle both command and workflow
outputs. Accept #:workflow? argument to indicate workflow outputs.
(workflow->cwl-scm): Use output->cwl-scm.
| Arun Isaac |
2023-11-07 | cwl: Deduplicate input to CWL rendering.•••* ccwl/cwl.scm (input->cwl-scm): New function.
(workflow->cwl-scm, command->cwl-scm): Use input->cwl-scm.
| Arun Isaac |
2023-11-07 | ccwl: Delete unused input=? function.•••* ccwl/ccwl.scm (input=?): Delete function.
| Arun Isaac |
2023-11-06 | ui: Do not attempt to display the line preceding the 0th.•••* ccwl/ui.scm (source-in-context): Do not attempt to display the line
preceding the 0th.
* tests/ui.scm ("display source in context on 0th line"): New line.
| Arun Isaac |
2023-11-06 | tests: Add tests for ui.scm.•••* tests/ui.scm: New file.
| Arun Isaac |
2023-11-06 | Use (term ansi-color) for colors.•••* build-aux/test-driver.scm (color): Use colorize-string from (term
ansi-color).
* ccwl/ui.scm (report-formatted-message, source-in-context,
report-ccwl-violation): Use colorize-string from (term ansi-color).
(color, bold, red, magenta): Delete functions.
| Arun Isaac |
2023-11-06 | ui: Pass port, not filename, to source-in-context.•••* ccwl/ui.scm (source-in-context): Accept port, not filename.
(report-ccwl-violation): Pass port, not filename.
| Arun Isaac |
2023-11-06 | ccwl: Error out if #:other parameters are not serializable to YAML.•••* 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.
| Arun Isaac |
2023-10-28 | ccwl: Restrict #:other parameter to YAML serializable trees.•••Perhaps it fits in better with the spirit of ccwl to not evaluate
#:other parameters and instead allow only YAML serializable
trees. This saves users from quoting #:other parameters, of
course. But it also permits more thorough analysis and clearer error
messages. Besides, there is not much reason to allow general
expressions in #:other parameters. Such dynamism is not commonly
required in ccwl or CWL.
* ccwl/ccwl.scm (input, output, command): Restrict #:other parameter
to YAML serializable trees that are not evaluated.
| Arun Isaac |
2023-10-17 | doc: Add staging-input-files.scm snippet source file.•••This file was required by the previous commit, but I forgot to commit
it!
* doc/staging-input-files.scm: New file.
| Arun Isaac |
2023-10-17 | ccwl: Add "Invalid parameter" to #:stderr and #:stdout error messages.•••* 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.
| Arun Isaac |
2023-10-17 | ccwl: Support staging input files.•••* 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.
| Arun Isaac |
2023-10-16 | ccwl: Add #:requirements argument to command.•••* ccwl/ccwl.scm (<command>)[requirements]: New field.
(command): Add #:requirements argument.
* ccwl/cwl.scm (command->cwl-scm): Serialize requirements.
| Arun Isaac |
2023-10-16 | 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.
| Arun Isaac |
2023-10-16 | ccwl: Error out on prefixes that are not strings.•••* 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.
| Arun Isaac |
2023-10-16 | ccwl: Flatten prefixed string arguments in command definitions.•••* ccwl/ccwl.scm (run-args): Flatten prefixed string arguments in
command definitions.
* tests/ccwl.scm ("tolerate prefixed string arguments in command
definitions"): New test.
| Arun Isaac |
2023-10-16 | ccwl: Move run arguments construction to separate function.•••* ccwl/ccwl.scm (command): Move run arguments construction to ...
(run-args): ... new function.
| Arun Isaac |