summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-09-28scripts: Support returning command objects from ccwl files.Arun Isaac
* scripts/ccwl (main): Replace workflow->cwl and workflow->dot with workflow-or-command->cwl and workflow-or-command->dot.
2023-09-28graphviz: Add generic workflow or command serialization function.Arun Isaac
* ccwl/cwl.scm (workflow-or-command->dot): New public function.
2023-09-28graphviz: Add command to dot serialization function.Arun Isaac
* 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.
2023-09-28cwl: Add generic workflow or command serialization function.Arun Isaac
* ccwl/cwl.scm (workflow-or-command->cwl): New public function.
2023-09-28cwl: Add command to CWL serialization function.Arun Isaac
* ccwl/cwl.scm (command->cwl): New public function.
2023-09-28scripts: Catch and report &formatted-message conditions.Arun Isaac
* scripts/ccwl (main): Catch and report &formatted-message conditions.
2023-09-28ui: Split out reporting of &formatted-message conditions.Arun Isaac
* ccwl/ui.scm (report-formatted-message): New public function. (report-ccwl-violation): Use report-formatted-message.
2023-09-20scripts: Ignore quit exceptions when requesting the user report bugs.Arun Isaac
* scripts/ccwl: Import (ice-9 exceptions). (main): Do not print backtrace or request the user to report a bug for quit exceptions.
2023-09-20scripts: Set scheme mode in Emacs.Arun Isaac
* scripts/ccwl: Set scheme mode in Emacs.
2023-09-20scripts: Catch uncaught exceptions and request the user report them.Arun Isaac
* scripts/ccwl (main): Catch uncaught exceptions and request the user report them to the issue tracker.
2023-09-20scripts: Allow script to be loaded without executing main.Arun Isaac
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.
2023-09-20ccwl: Add TODO to support commands in lexical scope.Arun Isaac
* ccwl/ccwl.scm (function-object): Add TODO note to support commands (that is, function objects) defined in lexical scope.
2023-09-20tests: Test that rename works even on a final workflow output.Arun Isaac
* tests/ccwl.scm (print): New variable. ("rename should work even on the final output of a workflow"): New test.
2023-09-19ccwl: Use key name for output.Arun Isaac
The key may have been renamed. So, the output should likewise be. * ccwl/ccwl.scm (key->output): Use key name for output.
2023-09-19ccwl: Add set-output-id setter.Arun Isaac
* ccwl/ccwl.scm (<output>)[id]: Add setter.
2023-07-08Make repository a guix channel.Arun Isaac
* .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.
2022-04-09website: Use Fira Code and Charter fonts.Arun Isaac
* 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.
2022-04-09doc: Add table of contents.Arun Isaac
* doc/ccwl.skb: Add table of contents.
2022-04-09scripts: Do not pass multiple arguments to env.Arun Isaac
* scripts/ccwl: Do not pass multiple arguments to env. Pass them through sh.
2022-04-09scripts: Do not auto-compile the ccwl script.Arun Isaac
* scripts/ccwl: Add --no-auto-compile to shebang.
2022-04-09Makefile: Compile scheme source code with auto-compile disabled.Arun Isaac
* Makefile (%.go): Set GUILE_AUTO_COMPILE=0.
2022-02-11README: Mention dependencies to build the manual.Arun Isaac
* README.org (Manually from source): Mention dependencies graphviz, cwltool and skribilo that are required to build the manual.
2022-02-11README: Remove deprecated bootstrap step from build instructions.Arun Isaac
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.
2022-02-05Makefile: Copy HTML manual to website.Arun Isaac
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.
2022-01-19build-aux: Fix broken link to signing key.Arun Isaac
* build-aux/build-home-page.el (org-dblock-write:download): Fix broken link to signing key.
2022-01-16ccwl: Raise parameter errors in workflow steps as exceptions.Arun Isaac
* ccwl/ccwl.scm (collect-steps): Raise parameter errors in workflow steps as exceptions.
2022-01-16ccwl: Raise undefined ccwl command error as exception.Arun Isaac
* ccwl/ccwl.scm (collect-steps): Raise undefined ccwl command error as a &ccwl-violation condition.
2022-01-16ccwl: Raise exceptions on command syntax errors.Arun Isaac
* 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.
2022-01-16ccwl: Raise exceptions on output syntax errors.Arun Isaac
* 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.
2022-01-16ccwl: Raise exceptions on input syntax errors.Arun Isaac
* 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.
2022-01-16ccwl: Delete plist->alist.Arun Isaac
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.
2022-01-16ccwl: Document default default value of syntax-lambda**.Arun Isaac
* 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.
2022-01-16ccwl: Clarify default default value of lambda**.Arun Isaac
* 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".
2022-01-16ccwl: Do not expand to syntax values.Arun Isaac
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.
2022-01-16ccwl: Remove out field from <step> type.Arun Isaac
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.
2022-01-16scripts: Decide to not compile files ever.Arun Isaac
* scripts/ccwl (main): Remove FIXME note about compiling ccwl files.
2022-01-16scripts: Report ccwl syntax violations.Arun Isaac
* 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.
2022-01-16scripts: Read using read-syntax.Arun Isaac
read-syntax gives us get better source properties. * scripts/ccwl (main): Read using read-syntax.
2022-01-16ccwl: Add &formatted-message condition.Arun Isaac
* ccwl/conditions.scm (&formatted-message): New condition. (formatted-message): New function.
2022-01-16tests: Move plist-ref ahead of test-begin.Arun Isaac
This is a purely cosmetic change just to keep definitions outside the test cases. * tests/utils.scm (plist-ref): Move ahead of test-begin.
2022-01-16ccwl: Raise lambda** and syntax-lambda** errors as exceptions.Arun Isaac
* 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.
2022-01-16ccwl: Add conditions.Arun Isaac
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.
2022-01-16tests: Use @@ instead of module-ref and resolve-module.Arun Isaac
@@ 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.
2022-01-16ccwl: Indent lambda** docstring examples correctly.Arun Isaac
* ccwl/utils.scm (lambda**): Indent docstring examples correctly.
2022-01-10dir-locals: Allows tabs in Makefiles.Arun Isaac
* .dir-locals.el (makefile-gmake-mode): Set indent-tabs-mode to t.
2022-01-10Migrate to hand-written Makefiles.Arun Isaac
The autotools are really overkill for a simple Guile project like ccwl. * .gitignore: Delete autotool generated files. Add Makefile.include. * Makefile.am, Makefile, build-aux/distcheck.scm, configure, configure.ac, configure.scm: New files. * NEWS: Rename to NEWS.org. Remove Emacs file-local variable to use org mode. * bootstrap.sh: Delete file. * build-aux/generate-cwl-output.sh.in: Rename to ... * build-aux/generate-cwl-output.sh: ... this. Replace autoconf variables for cwltool and sed. * build-aux/test-driver.scm.in: Rename to ... * build-aux/test-driver.scm: ... this. Do not import (ice-9 getopt-long). (%options): Delete variable. (my-gnu-runner): Do not write to log or trs ports. Accept test files as command-line arguments. Update invocation of my-gnu-runner. Print summary of results. * guix.scm (ccwl)[native-inputs]: Remove autoconf and automake. * pre-inst-env.in: Rename to ... * pre-inst-env: ... this. Replace autoconf variables for guile, abs_top_builddir and abs_top_srcdir. * scripts/ccwl.in: Rename to ... * scripts/ccwl: ... this. Replace autoconf variable for guile.
2021-12-17Create specialized type for graphviz edge.Arun Isaac
* ccwl/graphviz.scm (<graph-edge>): New type. (graph-edge): New function. (graph->dot): Support specification of edges using the <graph-edge> type.
2021-12-17Abstract out serialization of graphviz properties.Arun Isaac
* ccwl/graphviz.scm (serialize-properties): New function. (graph->dot): Use serialize-properties.
2021-12-13ccwl: Support graphviz node ports.Arun Isaac
* ccwl/graphviz.scm (<graph-port>): New type. (serialize): Support <graph-port> objects. * tests/graphviz.scm (graph-port): New function. ("serialize ports correctly"): New test case.
2021-12-13ccwl: Organize serialize into a generic function.Arun Isaac
* ccwl/graphviz.scm (serialize): Organize into a generic function that dispatches on input type.