Age | Commit message (Expand) | Author |
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 |
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-13 | ccwl: Convert syntax to datum before checking if it is a symbol.•••* ccwl/ccwl.scm (collect-steps): Convert syntax to datum before
checking if it is a symbol.
| Arun Isaac |
2023-10-09 | ccwl: Deprecate auto-connection of single input commands.•••This seems like functionality that will be hard to support and will
almost never be used in a real-world workflow. This feature is not
even advertised in the manual. It is best to silently deprecate this
feature now.
* ccwl/ccwl.scm (collect-steps): Deprecate auto-connection of single
input commands.
| 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: Comment on allowing default parameter values.•••* ccwl/ccwl.scm (collect-steps): Comment on allowing default parameter
values. Remove TODO note.
| 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-28 | scripts: Raise exception when file does not return supported object.•••* scripts/ccwl (main): Raise exception when file returns neither
workflow nor command.
| Arun Isaac |
2023-09-28 | scripts: Support returning command objects from ccwl files.•••* scripts/ccwl (main): Replace workflow->cwl and workflow->dot with
workflow-or-command->cwl and workflow-or-command->dot.
| Arun Isaac |
2023-09-28 | graphviz: Add generic workflow or command serialization function.•••* ccwl/cwl.scm (workflow-or-command->dot): New public function.
| Arun Isaac |
2023-09-28 | graphviz: Add command to dot serialization function.•••* ccwl/graphviz.scm (step-node, inputs-cluster, outputs-cluster,
command->graph): New functions.
(workflow->graph): Use step-node, inputs-cluster and outputs-cluster.
(command->dot): New public function.
| Arun Isaac |
2023-09-28 | cwl: Add generic workflow or command serialization function.•••* ccwl/cwl.scm (workflow-or-command->cwl): New public function.
| Arun Isaac |
2023-09-28 | cwl: Add command to CWL serialization function.•••* ccwl/cwl.scm (command->cwl): New public function.
| Arun Isaac |
2023-09-28 | scripts: Catch and report &formatted-message conditions.•••* scripts/ccwl (main): Catch and report &formatted-message conditions.
| Arun Isaac |
2023-09-28 | ui: Split out reporting of &formatted-message conditions.•••* ccwl/ui.scm (report-formatted-message): New public function.
(report-ccwl-violation): Use report-formatted-message.
| Arun Isaac |
2023-09-20 | scripts: Ignore quit exceptions when requesting the user report bugs.•••* scripts/ccwl: Import (ice-9 exceptions).
(main): Do not print backtrace or request the user to report a bug for
quit exceptions.
| Arun Isaac |
2023-09-20 | scripts: Set scheme mode in Emacs.•••* scripts/ccwl: Set scheme mode in Emacs.
| Arun Isaac |
2023-09-20 | scripts: Catch uncaught exceptions and request the user report them.•••* scripts/ccwl (main): Catch uncaught exceptions and request the user
report them to the issue tracker.
| Arun Isaac |
2023-09-20 | scripts: Allow script to be loaded without executing main.•••Call main from the shebang command instead of calling it
directly. This allows us to run "guile -l scripts/ccwl" without
actually running main. This seems to be important for Emacs Geiser as
it freezes up without this fix.
* scripts/ccwl: Call main from shebang. Do not call main directly.
(main): Accept args as regular argument instead of as a rest argument.
| Arun Isaac |
2023-09-20 | ccwl: Add TODO to support commands in lexical scope.•••* ccwl/ccwl.scm (function-object): Add TODO note to support
commands (that is, function objects) defined in lexical scope.
| 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 |
2023-09-19 | ccwl: Use key name for output.•••The key may have been renamed. So, the output should likewise be.
* ccwl/ccwl.scm (key->output): Use key name for output.
| Arun Isaac |