Age | Commit message (Expand) | Author |
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 | 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-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-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 | 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-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: 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: Raise &ccwl-violation on invalid command #:run arguments.•••* 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.
| Arun Isaac |
2023-10-16 | ccwl: Check if inputs in command definitions are defined.•••* 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.
| Arun Isaac |
2023-10-16 | tests: Allow literal ints as arguments.•••* 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.
| Arun Isaac |
2023-10-15 | ccwl: Make #:stderr and #:stdout first class parameters.•••#: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.
| Arun Isaac |
2023-10-14 | ccwl: Detect multiple expressions in workflow body.•••* 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.
| Arun Isaac |
2023-10-14 | ccwl: Raise &ccwl-violation when workflow syntax is not recognized.•••* 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.
| Arun Isaac |
2023-10-13 | tests: Raise a &ccwl-violation on unknown keys.•••* tests/ccwl.scm ("step supplied with an unknown key must raise a
&ccwl-violation condition"): New test.
| Arun Isaac |
2023-10-09 | ccwl: Allow literals as arguments.•••* 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.
| Arun Isaac |
2023-10-09 | tests: Catch expressions that don't raise exceptions.•••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.
| Arun Isaac |
2023-10-09 | ccwl: Error out if steps with expression commands have no identifier.•••* 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.
| Arun Isaac |
2023-10-09 | ccwl: In macro expansion, use eval instead of module introspection.•••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.
| Arun Isaac |
2023-09-29 | ccwl: Allow steps with unspecified default arguments.•••* 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.
| Arun Isaac |
2023-09-20 | tests: Test that rename works even on a final workflow output.•••* tests/ccwl.scm (print): New variable.
("rename should work even on the final output of a workflow"): New
test.
| Arun Isaac |
2022-01-16 | ccwl: Raise exceptions on command syntax errors.•••* 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.
| Arun Isaac |
2022-01-16 | ccwl: Raise exceptions on output syntax errors.•••* 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.
| Arun Isaac |
2022-01-16 | ccwl: Raise exceptions on input syntax errors.•••* 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.
| Arun Isaac |
2022-01-16 | ccwl: Delete plist->alist.•••plist->alist is not used anywhere. pairify is quite sufficient to take
on its functionality.
* ccwl/utils.scm (plist->alist): Delete function.
* tests/utils.scm ("plist->alist"): Delete test.
| Arun Isaac |
2022-01-16 | ccwl: Document default default value of syntax-lambda**.•••* ccwl/utils.scm (syntax-lambda**): Document default default value.
* tests/utils.scm ("default default value of syntax-lambda** unary
argument should be #f", "default default value of syntax-lambda**
n-ary argument should be the empty list"): New tests.
| Arun Isaac |
2022-01-16 | ccwl: Clarify default default value of lambda**.•••* ccwl/utils.scm (lambda**): Change "default value" to "default
default value" in docstring.
* tests/utils.scm ("default value of lambda** unary argument should be
#f", "default value of lambda** n-ary argument should be the empty
list"): Change "default value" to "default default value".
| Arun Isaac |
2022-01-16 | tests: Move plist-ref ahead of test-begin.•••This is a purely cosmetic change just to keep definitions outside the
test cases.
* tests/utils.scm (plist-ref): Move ahead of test-begin.
| Arun Isaac |
2022-01-16 | ccwl: Raise lambda** and syntax-lambda** errors as exceptions.•••* ccwl/conditions.scm (&unrecognized-keyword-assertion,
&invalid-keyword-arity-assertion,
&invalid-positional-arguments-arity-assertion): New conditions.
* ccwl/utils.scm: Import (rnrs conditions), (rnrs exceptions)
and (ccwl conditions).
(group-keyword-arguments): Raise &invalid-keyword-arity-assertion on
error.
(lambda**, syntax-lambda**): Raise &unrecognized-keyword-assertion,
&invalid-keyword-arity-assertion and
&invalid-positional-arguments-arity-assertion on error.
* tests/utils.scm: Import (rnrs conditions), (rnrs exceptions), (srfi
srfi-1) and (ccwl conditions).
("lambda** should raise an &unrecognized-keyword-assertion on
unrecognized keywords in arguments with syntax objects as irritants"):
Check for &unrecognized-keyword-assertion.
("Unrecognized keyword argument passed to lambda** should raise an
&unrecognized-keyword-assertion condition", "Unary lambda** keyword
argument passed multiple arguments should raise an
&invalid-keyword-arity-assertion condition", "Wrong number of
positional arguments to lambda** should raise an
&invalid-positional-arguments-arity-assertion condition",
"syntax-lambda** should raise an &unrecognized-keyword-assertion on
unrecognized keywords in arguments", "Unrecognized keyword argument
passed to syntax-lambda** should raise an
&unrecognized-keyword-assertion condition with syntax objects as
irritants", "Unary syntax-lambda** keyword argument passed multiple
arguments should raise an &invalid-keyword-arity-assertion condition",
"Wrong number of positional arguments to syntax-lambda** should raise
an &invalid-positional-arguments-arity-assertion condition"): New
tests.
| Arun Isaac |
2022-01-16 | tests: Use @@ instead of module-ref and resolve-module.•••@@ 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.
| Arun Isaac |
2021-12-13 | ccwl: Support graphviz node ports.•••* ccwl/graphviz.scm (<graph-port>): New type.
(serialize): Support <graph-port> objects.
* tests/graphviz.scm (graph-port): New function.
("serialize ports correctly"): New test case.
| Arun Isaac |
2021-12-13 | ccwl: Escape only the double quote character in graphviz output.•••* ccwl/graphviz.scm: Import (ice-9 string-fun).
(serialize): When quoting strings, escape only the double quote
character.
* tests/graphviz.scm ("do not escape backslashes"): New test case.
| Arun Isaac |
2021-12-13 | ccwl: Support graphviz HTML strings.•••* ccwl/graphviz.scm (<html-string>): New type.
(escape-id): Delete function.
(serialize): New function.
(graph->dot): Use serialize instead of escape-id.
* tests/graphviz.scm: New file.
("serialize HTML strings correctly"): New test case.
* Makefile.am (SCM_TESTS): Register it.
| Arun Isaac |
2021-11-02 | tests: Add input-output-parameters.cwl.•••This is a follow-up to 0b359cf2c32cde81b4311d55273c8f6c14ca6b93 where
this file should have been included.
* tests/input-output-parameters.cwl: New file.
* Makefile.am (EXTRA_DIST): Register it.
| Arun Isaac |
2021-11-02 | ccwl: Support external CWL workflows.•••* 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.
| Arun Isaac |
2021-10-12 | tests: Fix quoting of type.•••* tests/ccwl.scm ("stdin input should not have inputBinding"): Fix
quoting of type File.
| Arun Isaac |
2021-10-11 | ccwl: Factorize out CWL generation code to separate 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).
| Arun Isaac |
2021-10-04 | ccwl: Support #:allow-other-keys in lambda** and syntax-lambda**.•••* ccwl/utils.scm (lambda**): Support #:allow-other-keys. Update
docstring.
(syntax-lambda**): Update docstring.
* tests/utils.scm ("Allow other keys in lambda**", "Allow other keys
in syntax-lambda**"): New tests.
| Arun Isaac |
2021-10-04 | ccwl: Error out on invalid keywords to lambda**.•••* ccwl/utils.scm (lambda**): Error out on invalid keywords (that is,
keywords other than #:key, #:key* and #:allow-other-keys).
* tests/utils.scm ("lambda** should error out on unrecognized keywords
in arguments"): New test.
| Arun Isaac |
2021-10-04 | tests: Remove stray syntax-lambda** form.•••* tests/utils.scm: Remove stray syntax-lambda** form.
| Arun Isaac |
2021-07-27 | ccwl: Make syntax-lambda** more like lambda**.•••I have tripped up several times on the differences between lambda**
and syntax-lambda**. No longer! Making syntax-lambda** as close as
possible to lambda** makes the code much more readable and align
better with common sense.
* ccwl/utils.scm (syntax-lambda**): Do not ignore the first
identifier. Accept multiple values as arguments, not a single syntax
object.
* ccwl/ccwl.scm (command): Update use of syntax-lambda**.
* tests/utils.scm ("syntax-lambda**", "syntax-lambda** with default
values"): Update tests.
| Arun Isaac |
2021-07-20 | ccwl: Set default value of lambda** n-ary arguments to '().•••* ccwl/utils.scm (lambda**): Set default value of lambda** n-ary
arguments to the empty list. Document this in the docstring.
* tests/utils.scm ("default value of lambda** unary argument should be
#f", "default value of lambda** n-ary argument should be the empty
list"): New tests.
| Arun Isaac |
2021-07-20 | ccwl: Document syntax-lambda** support for default arguments.•••* ccwl/utils.scm (syntax-lambda**): Add example to docstring
documenting support for default arguments.
* tests/utils.scm ("syntax-lambda** with default values"): New test.
| Arun Isaac |
2021-07-20 | ccwl: Support default values for arguments in lambda**.•••* ccwl/utils.scm (lambda**): Support default values for arguments,
both unary and n-ary.
* tests/utils.scm ("lambda** with default values"): New test.
| Arun Isaac |
2021-07-20 | tests: Add tests for ccwl/utils.scm.•••* tests/utils.scm: New file.
* Makefile.am (SCM_TESTS): Register it.
| Arun Isaac |
2021-07-19 | tests: Fix order of arguments to test-equal.•••The expected value should be the first argument to test-equal. Getting
this order wrong messes up the test logs.
* tests/yaml.scm ("dictionary entries with empty arrays and
dictionaries for values must render on the same line"): Fix order of
arguments to test-equal.
| Arun Isaac |