aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2023-10-15ccwl: 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-14ccwl: 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-14ccwl: 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-13tests: 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-13ccwl: 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-09ccwl: 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-09ccwl: 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-09tests: 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-09ccwl: 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-09ccwl: 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-29ccwl: Comment on allowing default parameter values.•••* ccwl/ccwl.scm (collect-steps): Comment on allowing default parameter values. Remove TODO note. Arun Isaac
2023-09-29ccwl: 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-28scripts: 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-28scripts: 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-28graphviz: Add generic workflow or command serialization function.•••* ccwl/cwl.scm (workflow-or-command->dot): New public function. Arun Isaac
2023-09-28graphviz: 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-28cwl: Add generic workflow or command serialization function.•••* ccwl/cwl.scm (workflow-or-command->cwl): New public function. Arun Isaac
2023-09-28cwl: Add command to CWL serialization function.•••* ccwl/cwl.scm (command->cwl): New public function. Arun Isaac
2023-09-28scripts: Catch and report &formatted-message conditions.•••* scripts/ccwl (main): Catch and report &formatted-message conditions. Arun Isaac
2023-09-28ui: 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-20scripts: 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-20scripts: Set scheme mode in Emacs.•••* scripts/ccwl: Set scheme mode in Emacs. Arun Isaac
2023-09-20scripts: 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-20scripts: 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-20ccwl: 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-20tests: 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-19ccwl: 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
2023-09-19ccwl: Add set-output-id setter.•••* ccwl/ccwl.scm (<output>)[id]: Add setter. Arun Isaac
2023-07-08Make repository a guix channel.•••* .guix-authorizations, .guix-channel: New files. * guix.scm: Convert to a symlink pointing to .guix/ccwl-package.scm. Move original there. * .guix/ccwl-package.scm: Convert into a module with public packages. Arun Isaac
2022-04-09website: Use Fira Code and Charter fonts.•••* Makefile (fonts): New variable. (website): Depend on website/fonts. (website/fonts): New target. (clean): Clean up website/fonts. * website/style.css (@font-face: Charter, @font-face: Fira Code Regular, @font-face: Fira Code SemiBold): New font faces. (body): Use 20px Charter font. (pre): Use 0.9em Fira Code font. (code, samp): Use 0.8em semi-bold Fira Code font. Arun Isaac
2022-04-09doc: Add table of contents.•••* doc/ccwl.skb: Add table of contents. Arun Isaac
2022-04-09scripts: Do not pass multiple arguments to env.•••* scripts/ccwl: Do not pass multiple arguments to env. Pass them through sh. Arun Isaac
2022-04-09scripts: Do not auto-compile the ccwl script.•••* scripts/ccwl: Add --no-auto-compile to shebang. Arun Isaac
2022-04-09Makefile: Compile scheme source code with auto-compile disabled.•••* Makefile (%.go): Set GUILE_AUTO_COMPILE=0. Arun Isaac
2022-02-11README: Mention dependencies to build the manual.•••* README.org (Manually from source): Mention dependencies graphviz, cwltool and skribilo that are required to build the manual. Arun Isaac
2022-02-11README: Remove deprecated bootstrap step from build instructions.•••In 670b0b68602288b44ad459230be4f701140bca66, we migrated away from the autotools build system and got rid of bootstrap.sh but forgot to update the build instructions. * README.org (Manually from source): Remove deprecated bootstrap step. Arun Isaac
2022-02-05Makefile: Copy HTML manual to website.•••This was done correctly in the earlier autotools build system, but was missed out in the migration to hand-written Makefiles. * Makefile (website): Depend on website/manual/dev/en. (website/manual/dev/en): New target. (clean): Remove website/manual. Remove $(doc_html) recursively. Arun Isaac
2022-01-19build-aux: Fix broken link to signing key.•••* build-aux/build-home-page.el (org-dblock-write:download): Fix broken link to signing key. Arun Isaac
2022-01-16ccwl: Raise parameter errors in workflow steps as exceptions.•••* ccwl/ccwl.scm (collect-steps): Raise parameter errors in workflow steps as exceptions. Arun Isaac
2022-01-16ccwl: Raise undefined ccwl command error as exception.•••* ccwl/ccwl.scm (collect-steps): Raise undefined ccwl command error as a &ccwl-violation condition. Arun Isaac
2022-01-16ccwl: 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-16ccwl: 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-16ccwl: 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-16ccwl: 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-16ccwl: 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-16ccwl: 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-16ccwl: Do not expand to syntax values.•••Macros should not normally expand to syntax values as constant literals. We now do more work at the macro-expansion phase so that this is not necessary. * ccwl/ccwl.scm (collect-steps): In the returned <step> objects, put syntax to reference function object instead of the function object itself. (key->output): Return syntax to construct an <output> object instead of the <output> object itself. (workflow): Do not expand to syntax values as constant literals. Arun Isaac
2022-01-16ccwl: Remove out field from <step> type.•••The out field of a <step> object can be derived from its run field. There is no need to store it. Therefore, we remove the out field and implement the accessor step-out as a separate function so that we don't break existing code. We also move around some code so that all variables are defined before they are used. * ccwl/ccwl.scm (function-objects): Move to just after <command> and <cwl-workflow> type definitions. (<step>): Remove out field. Move to after function-objects. (step-out): New function. (collect-steps): Do not set out field of <step> object. Arun Isaac
2022-01-16scripts: Decide to not compile files ever.•••* scripts/ccwl (main): Remove FIXME note about compiling ccwl files. Arun Isaac
2022-01-16scripts: Report ccwl syntax violations.•••* ccwl/ui.scm: New file. * scripts/ccwl: Import (rnrs exceptions), (srfi srfi-28), (ccwl conditions) and (ccwl ui). (main): Handle ccwl syntax violations by reporting them and exiting. Arun Isaac