Age | Commit message (Collapse) | Author |
|
* ccwl/ccwl.scm (collect-steps): Fix indentation.
(key->output): Fill paragraph.
|
|
* ccwl/ccwl.scm (collect-steps): Implement rename to rename keys
between steps.
|
|
* ccwl/ccwl.scm (collect-steps): Improve comment describing handling
of single input commands. Mention that it applies only when no inputs
are passed to it.
|
|
* ccwl/ccwl.scm (<key>): Add setter set-key-name.
|
|
* ccwl/ccwl.scm (<key>): Add cwl-id field.
(key): Initialize cwl-id field.
(key->output): Match the cwl-id of keys to the id of outputs, instead
of matching the name of keys to the id of outputs.
(cwl-key-address): Use the cwl-id of keys when outputting to CWL.
|
|
* ccwl/ccwl.scm (invoke-command): Delete function.
|
|
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).
|
|
* ccwl/ccwl.scm: Do not export write-cwl.
(write-cwl): Delete function.
|
|
We pass workflow inputs through all commands and constructs (pipe,
tee, etc.). Thus, these parameters are globally visible to all steps,
and are a kind of "global variable".
* ccwl/ccwl.scm (workflow-steps): Pass to the output, input keys that
correspond to workflow inputs.
|
|
Before this commit, the docstring of workflow-steps did not correctly
describe its function.
* ccwl/ccwl.scm (workflow-steps): Fix docstring.
|
|
This makes it easier to distinct source code from the regular text of
the error messages.
* ccwl/ccwl.scm (workflow-steps): Quote source code in error messages.
|
|
This reverts commit 35bcaaa67efbe9b60e69b0f7c17acc186c74e7c3. This was
not such a good idea. It is better to introduce the notion of global
parameters.
|
|
This allows us to do sophisticated syntax checking at an early stage,
very close to the user interface. That way error messages from ccwl
will make a lot more sense.
* ccwl/ccwl.scm (output): Re-implement as macro.
(command): Use the new macro interface.
* doc/capture-output-file-with-parameter-reference.scm,
doc/capture-output-file.scm, doc/capture-stdout.scm, doc/checksum.scm,
doc/decompress-compile-run.scm: Use new quoting syntax for output
types.
|
|
This allows us to do sophisticated syntax checking at an early stage,
very close to the user interface. That way error messages from ccwl
will make a lot more sense.
* ccwl/ccwl.scm (input): Re-implement as macro.
(<input>): Add new functional setters set-input-position and
set-input-prefix.
(input-spec-id, run-arg-position, run-arg-prefix): New functions.
(command, workflow): Use the new macro interface.
* doc/capture-output-file-with-parameter-reference.scm,
doc/capture-output-file.scm, doc/capture-stdout.scm, doc/checksum.scm,
doc/decompress-compile-run.scm, doc/hello-world.scm,
doc/pass-stdin.scm: Use new quoting syntax for input types.
|
|
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.
|
|
Specifying '() as the default value for n-ary arguments is now
equivalent to specifying '(()) as the default value. This is wrong.
* ccwl/ccwl.scm (command): Do not explicitly specify the emtpy list as
the default value for n-ary arguments.
|
|
* ccwl/ccwl.scm: Remove extra blank lines.
|
|
This way, filter-alist composes better with other invocations of
filter-alist.
* ccwl/ccwl.scm (filter-alist): Return #f if alist is empty after
filtering.
(command->cwl): Remove FIXME note about the inputBinding dictionary
being empty.
|
|
* ccwl/ccwl.scm: Import (srfi srfi-2).
|
|
* ccwl/ccwl.scm: Do not export step and pipeline.
|
|
* ccwl/ccwl.scm: Do not export input and output.
(<input>): Delete source field. Add position field.
(input): Accept position and prefix fields in constructor. Do not
initialize non-existent source field.
(<command>): Delete additional-inputs field. Add inputs field. Delete
set-command-outputs and set-command-stdin setters.
(command): Rewrite as macro that accepts new command definition
syntax.
(<cli-element>): Delete type.
(command->cwl): Generate CWL from new <command> type.
(command-input-keys): Simplify to support new <command> type.
|
|
* ccwl/ccwl.scm: Do not export input-with-prefix.
(<input>): Delete set-input-prefix.
(<step>): Delete set-step-run, set-step-id, set-step-out.
(input-with-prefix, field-appender, modify-step-run, append-step-in,
append-step-out, append-command-outputs): Delete functions.
|
|
Earlier, the input keys would only be passed to the first
expression. The second expression would only receive the output keys
from the first expression. Passing input keys through to all
expressions is a common use case, since expressions often need to
access global inputs. If the original behavior is desired, we can
always introduce a new construct, say `pipe-strict'.
* ccwl/ccwl.scm (workflow-steps): In pipe, pass through input keys to
all expressions.
|
|
* ccwl/ccwl.scm (key->output): New function.
(workflow-steps): Filter out global workflow inputs from
workflow-outputs.
|
|
* ccwl/ccwl.scm (command-variable, command-syntax->object): Delete
functions.
(command-object): New function.
(workflow-steps): Use command-object instead of command-variable and
command-syntax->object.
|
|
* ccwl/ccwl.scm (workflow): When input has no properties, support only
specifying the symbol.
|
|
* ccwl/ccwl.scm (command-syntax->object): When command accepts only a
single input and there is only a single key available, support
implicit key pairing.
|
|
* ccwl/ccwl.scm (workflow-steps): When command does not specify step
identifier, assume the step identifier is the same as the command
symbol.
|
|
* ccwl/ccwl.scm (command-variable, command-syntax->object): New
functions.
(workflow-steps): Use command-variable and command-syntax->object.
|
|
* ccwl/ccwl.scm (%stdin, %stdout): Delete variables.
|
|
* ccwl/ccwl.scm: Import (srfi srfi-71).
(command-input-keys, workflow-steps): New function.
(workflow): Support general Directed Acyclic Graph (DAG) workflows.
|
|
* ccwl/ccwl.scm (<key>): New type.
(key, cwl-key-address): New functions.
|
|
* ccwl/ccwl.scm (make-workflow): Accept inputs explicitly.
|
|
* ccwl/ccwl.scm (input=?): Compare using eq? instead of string=?.
(command->cwl, write-cwl): Convert input-id to string before
appending.
|
|
* ccwl/ccwl.scm (command): Make stdin a unary key.
|
|
Doing this conversion effectively forbids kebab case symbols in YAML.
* ccwl/yaml.scm (kebab->camel): Delete function.
(display-atom): Do not convert symbols from kebab case to camel case.
* ccwl/ccwl.scm (make-workflow, output->cwl, command->cwl): Write
camel case explicitly.
|
|
* ccwl/ccwl.scm (pipeline): Delete function.
|
|
* ccwl/ccwl.scm (command): Redefine using lambda**.
|
|
* ccwl/ccwl.scm: Import (ccwl utils).
(command): Return <command> object.
(auto-connect): Delete function.
(invoke-command, make-workflow, workflow-steps): New functions.
(workflow): Replace function with macro.
|
|
* ccwl/ccwl.scm (<output>): Add functional setter set-output-source
for source field.
* .dir-locals.el (scheme-mode): Specify indentation for
set-output-source.
|
|
Version 1.2 of the CWL specification is required to support
conditional steps.
* ccwl/ccwl.scm (%cwl-version): Set to "v1.2".
|
|
* ccwl/ccwl.scm, ccwl/utils.scm, ccwl/yaml.scm: Expand name Arun I to
Arun Isaac.
|
|
* ccwl/ccwl.scm, ccwl/utils.scm, ccwl/yaml.scm: Add copyright and
commentary sections.
|
|
* ccwl/ccwl.scm (command->cwl): List additional-inputs in inputs
array.
|
|
* ccwl/ccwl.scm (<command>): Add additional-inputs field.
(command): Initialize additional-inputs field.
|
|
<input> objects need to be expanded into CWL in context sensitive
ways. There is no simple generalization.
* ccwl/ccwl.scm (input->tree): Delete function.
(workflow): Expand input->tree.
|
|
* ccwl/ccwl.scm (<command>): Delete input field.
(command): Do not set inputs field.
|
|
* ccwl/ccwl.scm (write-cwl): Invoke command->cwl if step encloses
<command> object.
|
|
* ccwl/ccwl.scm (<cli-element>): New type.
(command->cwl): Put string and expression arguments into the arguments
array. Put <input> arguments into the inputs array.
|
|
* ccwl/ccwl.scm (filter-alist): New function.
(input->tree): Use filter-alist.
|