Age | Commit message (Expand) | Author |
2023-10-15 | ccwl: 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-14 | ccwl: 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-14 | ccwl: 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-13 | tests: 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-13 | ccwl: 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-09 | ccwl: 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-09 | ccwl: 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-09 | tests: 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-09 | ccwl: 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-09 | ccwl: 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-29 | ccwl: Comment on allowing default parameter values.•••* ccwl/ccwl.scm (collect-steps): Comment on allowing default parameter
values. Remove TODO note.
| Arun Isaac |
2023-09-29 | ccwl: 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-28 | scripts: 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-28 | scripts: 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-28 | graphviz: Add generic workflow or command serialization function.•••* ccwl/cwl.scm (workflow-or-command->dot): New public function.
| Arun Isaac |
2023-09-28 | graphviz: 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-28 | cwl: Add generic workflow or command serialization function.•••* ccwl/cwl.scm (workflow-or-command->cwl): New public function.
| Arun Isaac |
2023-09-28 | cwl: Add command to CWL serialization function.•••* ccwl/cwl.scm (command->cwl): New public function.
| Arun Isaac |
2023-09-28 | scripts: Catch and report &formatted-message conditions.•••* scripts/ccwl (main): Catch and report &formatted-message conditions.
| Arun Isaac |
2023-09-28 | ui: 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-20 | scripts: 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-20 | scripts: Set scheme mode in Emacs.•••* scripts/ccwl: Set scheme mode in Emacs.
| Arun Isaac |
2023-09-20 | scripts: 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-20 | scripts: 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-20 | ccwl: 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-20 | tests: 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-19 | ccwl: 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-19 | ccwl: Add set-output-id setter.•••* ccwl/ccwl.scm (<output>)[id]: Add setter.
| Arun Isaac |
2023-07-08 | Make 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-09 | website: 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-09 | doc: Add table of contents.•••* doc/ccwl.skb: Add table of contents.
| Arun Isaac |
2022-04-09 | scripts: Do not pass multiple arguments to env.•••* scripts/ccwl: Do not pass multiple arguments to env. Pass them
through sh.
| Arun Isaac |
2022-04-09 | scripts: Do not auto-compile the ccwl script.•••* scripts/ccwl: Add --no-auto-compile to shebang.
| Arun Isaac |
2022-04-09 | Makefile: Compile scheme source code with auto-compile disabled.•••* Makefile (%.go): Set GUILE_AUTO_COMPILE=0.
| Arun Isaac |
2022-02-11 | README: 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-11 | README: 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-05 | Makefile: 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-19 | build-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-16 | ccwl: 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-16 | ccwl: 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-16 | ccwl: 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-16 | ccwl: 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-16 | ccwl: 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-16 | ccwl: 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-16 | ccwl: 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-16 | ccwl: 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-16 | ccwl: 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-16 | ccwl: 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-16 | scripts: Decide to not compile files ever.•••* scripts/ccwl (main): Remove FIXME note about compiling ccwl files.
| Arun Isaac |
2022-01-16 | scripts: 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 |