aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2024-03-22ccwl: Implement js-expression.•••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. Arun Isaac
2024-03-22scripts: Use unified function terminology.•••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. Arun Isaac
2024-03-12ccwl: Find run argument directly without finding the position first.•••* ccwl/ccwl.scm (run-arg-position): Delete function. (find-run-arg): New function. (command): Use find-run-arg instead of run-arg-position. Arun Isaac
2024-03-12ccwl: Count argument positions on flattened run arguments.•••* 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. Arun Isaac
2024-03-12tests: Fix command definition in test.•••* tests/ccwl.scm ("outputs with #:other parameters that fail to evaluate must raise a &ccwl-violation condition"): Define command inputs, not outputs. Arun Isaac
2024-01-26NEWS: Mark (term ansi-color) as code.•••* NEWS.org (Changes in 0.3.0)[Other]: Mark (term ansi-color) as code. Arun Isaac
2024-01-26Add v0.3.0 release tarballs.•••* 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. Arun Isaac
2024-01-26NEWS: Update for version 0.3.0.•••* NEWS.org (Changes in 0.3.0): New section. v0.3.0Arun Isaac
2024-01-26guix: Add recipe to create a distribution tarball.•••* .guix/ccwl-distribution.scm: New file. Arun Isaac
2024-01-26Makefile: Split up release tarball signature into separate target.•••* Makefile (dist): Move $(dist_archive).asc to ... (distsign): ... here. Arun Isaac
2024-01-26Makefile: Clean up .depends.•••* Makefile (clean): Delete .depends. Arun Isaac
2024-01-26build-aux: Do not infer release information from git tags.•••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. Arun Isaac
2024-01-25Revert "guix: Use source with complete git repo to build website."•••This reverts commit af2f18534bd38703b98cb329d3110a8073d39fb6. When building as a Guix channel, the complete git repository is not available anyway. Arun Isaac
2024-01-25configure: Sort tags latest first when picking version.•••* configure.scm (version): Sort tags latest first when picking out the version. Arun Isaac
2024-01-25guix: Use source with complete git repository to build website.•••* .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. Arun Isaac
2024-01-13guix: Add G-expression computed-file to build website.•••* .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. Arun Isaac
2023-12-01ccwl: Deduplicate global workflow input keys across tee branches.•••* 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. Arun Isaac
2023-12-01tests: Put expected expression before actual expression.•••* tests/ccwl.scm ("rename should work even on the final output of a workflow"): Put expected expression before actual expression. Arun Isaac
2023-12-01ccwl: Implement identity construct.•••* ccwl/ccwl.scm (collect-steps): Implement identity construct. * doc/ccwl.skb (Cookbook)[The identity construct]: New section. * doc/identity-construct.scm: New file. Arun Isaac
2023-11-23tests: Bump copyright year.•••This was missed out on an earlier commit this year. * tests/yaml.scm: Bump copyright year. Arun Isaac
2023-11-23yaml: Escape all indicator characters.•••* ccwl/yaml.scm (display-atom): Escape strings if they contain any indicator character. Arun Isaac
2023-11-23ccwl: 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-23ccwl: 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-23ccwl: 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-23dir-locals: Indent test-condition correctly.•••* .dir-locals.el (scheme-mode): Indent test-condition. Arun Isaac
2023-11-21doc: 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-21ccwl: 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-21ccwl: 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-21ccwl: 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-21tests: 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-21tests: 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-19ccwl: 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-18ccwl: 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-18scripts: When ccwl crashes, say so explicitly.•••* scripts/ccwl (main): When ccwl crashes, say so explicitly. Arun Isaac
2023-11-18ccwl: 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-18ccwl: 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-18ccwl: 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-18ccwl: 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-17ccwl: Report errors in rename mappings.•••* ccwl/ccwl.scm (collect-steps): Report errors in rename mappings. Arun Isaac
2023-11-17utils: 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-17ccwl: 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-17ccwl: Recreate types using syntax.•••* ccwl/ccwl.scm (type->syntax): New function. (key->output): Use type->syntax. Arun Isaac
2023-11-17ui: 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-17yaml: 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-17doc: 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-16yaml: Comment on various cases handled by scm->yaml.•••* ccwl/yaml.scm (scm->yaml): Comment on cases handled. Arun Isaac
2023-11-16yaml: 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-16ccwl: 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-14doc: Add scatter-gather snippet.•••I forgot to add this file in my previous commit. * doc/scatter-gather.scm: New file. Arun Isaac
2023-11-14ccwl: 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