Age | Commit message (Collapse) | Author |
|
Curly quotation marks are better typography than straight quotation
marks. Straight quotation marks were introduced only due to the
physical limitations of the typewriter.
* doc/ccwl.skb: Use curly single quotation marks.
|
|
* doc/ccwl.skb (Guide to the source code): New chapter.
(Contributing): Demote to section inside "Guide to the source code".
|
|
* doc/ccwl.skb (Cookbook)[Javascript expressions via ExpressionTool]:
Markup "0" and "n-1" as code.
|
|
js-expression corresponds to ExpressionTool in the CWL specification.
* ccwl/ccwl.scm (<js-expression>): New type.
(js-expression): New macro.
(function-inputs, function-outputs, function-object): Support
<js-expression> objects.
(function-input-keys): Mention <js-expression> objects in docstring.
* ccwl/cwl.scm (function->cwl, workflow->cwl-scm): Support
<js-expression> objects.
(command->cwl-scm): Move staging requirements handling to ...
(staging-requirements): ... this new function.
(js-expression->cwl, js-expression->cwl-scm): New functions.
* ccwl/graphviz.scm (function->dot): Support <js-expression> objects.
(command->graph): Abstract to ...
(single-node-workflow->graph): ... this new function.
(js-expression->dot, js-expression->graph): New functions.
* scripts/ccwl (main): Support <js-expression> objects.
* doc/ccwl.skb (Cookbook){Javascript expressions via ExpressionTool}:
New section.
* doc/js-expression-iota.scm: New file.
|
|
Call workflows and commands by our unified notion of "function". This
makes it more succinct when adding more kinds of functions.
* ccwl/cwl.scm (workflow-or-command->cwl): Rename to function->cwl.
* ccwl/graphviz.scm (workflow-or-command->dot): Rename to
function->dot.
* scripts/ccwl (main): Use function->cwl and function->dot.
|
|
* ccwl/ccwl.scm (run-arg-position): Delete function.
(find-run-arg): New function.
(command): Use find-run-arg instead of run-arg-position.
|
|
* ccwl/ccwl.scm (command): Count argument positions on flattened run
arguments.
* tests/ccwl.scm ("count argument positions correctly when
left-flanked by prefixed string arguments"): New test.
|
|
* tests/ccwl.scm ("outputs with #:other parameters that fail to
evaluate must raise a &ccwl-violation condition"): Define command
inputs, not outputs.
|
|
* NEWS.org (Changes in 0.3.0)[Other]: Mark (term ansi-color) as code.
|
|
* website/releases/ccwl-0.3.0.tar.lz,
website/releases/ccwl-0.3.0.tar.lz.asc: New files.
* build-aux/build-home-page.el (org-dblock-write:download): Add v0.3.0
release.
|
|
* NEWS.org (Changes in 0.3.0): New section.
|
|
* .guix/ccwl-distribution.scm: New file.
|
|
* Makefile (dist): Move $(dist_archive).asc to ...
(distsign): ... here.
|
|
* Makefile (clean): Delete .depends.
|
|
We now build the website as a computed-file G-expression in a Guix
channel. Guix channels always discard the git repository information,
and don't have access to the git tags. We can fix this problem later
if and when we switch to using tissue for the website.
* build-aux/build-home-page.el (org-dblock-write:download): Do not
infer release information from git tags. Hard-code them.
|
|
This reverts commit af2f18534bd38703b98cb329d3110a8073d39fb6. When
building as a Guix channel, the complete git repository is not
available anyway.
|
|
* configure.scm (version): Sort tags latest first when picking out the
version.
|
|
* .guix/ccwl-package.scm: Import git-minimal from (gnu packages
version-control).
(ccwl-source-with-git-repo): New variable.
(ccwl-website-gexp): Make git visible via PATH. Use
ccwl-source-with-git-repo.
|
|
* .guix/ccwl-package.scm: Import emacs-minimal from (gnu packages
emacs), font-charter and font-fira-code from (gnu packages fonts),
%guile-build-system-modules from (guix build-system guile), and (guix
profiles).
(ccwl-website-gexp, ccwl-website): New variables.
|
|
* 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 (collect-steps): Implement identity construct.
* doc/ccwl.skb (Cookbook)[The identity construct]: New section.
* doc/identity-construct.scm: New file.
|
|
This was missed out on an earlier commit this year.
* tests/yaml.scm: Bump copyright year.
|
|
* ccwl/yaml.scm (display-atom): Escape strings if they contain any
indicator character.
|
|
* 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 (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.
|
|
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.
|
|
* .dir-locals.el (scheme-mode): Indent test-condition.
|
|
* doc/ccwl.skb (Tutorial)[Let's write a spell check workflow]: Update
source reference to rename.
|
|
* ccwl/ccwl.scm (collect-steps): Comment on passing global workflow
inputs through all commands.
|
|
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.
|
|
* 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.
|
|
This code remnant actually compiled successfully and was well-hidden
from sight!
* ccwl/ccwl.scm (key->output): Delete code remnant from previous
editing.
|
|
* ccwl/ccwl.scm (collect-steps): Error out if arguments have been
supplied more than once.
|
|
* scripts/ccwl (main): When ccwl crashes, say so explicitly.
|
|
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.
|
|
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.
|
|
* 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.
|
|
* 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.
|
|
* ccwl/ccwl.scm (collect-steps): Report errors in rename mappings.
|
|
* 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.
|
|
* ccwl/ccwl.scm (collect-steps): Implement scatter-cross and
scatter-nested-cross.
(key->output): Nest output array types for nested cross product
scatters.
|
|
* ccwl/ccwl.scm (type->syntax): New function.
(key->output): Use type->syntax.
|
|
* 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.
|
|
* 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.
|
|
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.
|
|
* ccwl/yaml.scm (scm->yaml): Comment on cases handled.
|
|
* 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.
|