aboutsummaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
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
2022-01-16scripts: Read using read-syntax.•••read-syntax gives us get better source properties. * scripts/ccwl (main): Read using read-syntax. Arun Isaac
2022-01-16ccwl: Add &formatted-message condition.•••* ccwl/conditions.scm (&formatted-message): New condition. (formatted-message): New function. Arun Isaac
2022-01-16tests: Move plist-ref ahead of test-begin.•••This is a purely cosmetic change just to keep definitions outside the test cases. * tests/utils.scm (plist-ref): Move ahead of test-begin. Arun Isaac
2022-01-16ccwl: Raise lambda** and syntax-lambda** errors as exceptions.•••* ccwl/conditions.scm (&unrecognized-keyword-assertion, &invalid-keyword-arity-assertion, &invalid-positional-arguments-arity-assertion): New conditions. * ccwl/utils.scm: Import (rnrs conditions), (rnrs exceptions) and (ccwl conditions). (group-keyword-arguments): Raise &invalid-keyword-arity-assertion on error. (lambda**, syntax-lambda**): Raise &unrecognized-keyword-assertion, &invalid-keyword-arity-assertion and &invalid-positional-arguments-arity-assertion on error. * tests/utils.scm: Import (rnrs conditions), (rnrs exceptions), (srfi srfi-1) and (ccwl conditions). ("lambda** should raise an &unrecognized-keyword-assertion on unrecognized keywords in arguments with syntax objects as irritants"): Check for &unrecognized-keyword-assertion. ("Unrecognized keyword argument passed to lambda** should raise an &unrecognized-keyword-assertion condition", "Unary lambda** keyword argument passed multiple arguments should raise an &invalid-keyword-arity-assertion condition", "Wrong number of positional arguments to lambda** should raise an &invalid-positional-arguments-arity-assertion condition", "syntax-lambda** should raise an &unrecognized-keyword-assertion on unrecognized keywords in arguments", "Unrecognized keyword argument passed to syntax-lambda** should raise an &unrecognized-keyword-assertion condition with syntax objects as irritants", "Unary syntax-lambda** keyword argument passed multiple arguments should raise an &invalid-keyword-arity-assertion condition", "Wrong number of positional arguments to syntax-lambda** should raise an &invalid-positional-arguments-arity-assertion condition"): New tests. Arun Isaac
2022-01-16ccwl: Add conditions.•••We introduce the &ccwl-violation condition. In later commits, it will be used to indicate ccwl syntax violations and to print out useful compiler errors. * ccwl/conditions.scm: New file. Arun Isaac
2022-01-16tests: Use @@ instead of module-ref and resolve-module.•••@@ is shorter and looks neater with fewer quotes. * tests/ccwl.scm ("stdin input should not have inputBinding"), tests/utils.scm ("unsyntax-keywords"): Use @@ instead of module-ref and resolve-module. Arun Isaac