Age | Commit message (Collapse) | Author |
|
* ccwl/ccwl.scm (run-args): Flatten prefixed string arguments in
command definitions.
* tests/ccwl.scm ("tolerate prefixed string arguments in command
definitions"): New test.
|
|
* ccwl/ccwl.scm (command): Move run arguments construction to ...
(run-args): ... new function.
|
|
* ccwl/ccwl.scm (command): Raise &ccwl-violation on invalid command
#:run arguments.
* tests/ccwl.scm ("command definitions with invalid #:run arguments
must raise a &ccwl-violation condition"): New test.
|
|
* ccwl/ccwl.scm (command): Check if inputs used in #:run arguments of
command definitions are actually defined.
* tests/ccwl.scm ("command definitions with undefined inputs in their
#:run arguments must raise a &ccwl-violation condition", "command
definitions with undefined prefix inputs in their #:run arguments must
raise a &ccwl-violation condition"): New tests.
|
|
* tests/ccwl.scm ("allow literal as arguments"): Rename to "allow
literal strings as arguments".
(print-int): New variable.
("allow literal ints as arguments"): New test.
|
|
#: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.
|
|
* 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.
|
|
* 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.
|
|
* tests/ccwl.scm ("step supplied with an unknown key must raise a
&ccwl-violation condition"): New test.
|
|
* ccwl/ccwl.scm (collect-steps): Convert syntax to datum before
checking if it is a symbol.
|
|
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.
|
|
* 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.
|
|
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.
|
|
* 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.
|
|
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.
|
|
* ccwl/ccwl.scm (collect-steps): Comment on allowing default parameter
values. Remove TODO note.
|
|
* 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.
|
|
* scripts/ccwl (main): Raise exception when file returns neither
workflow nor command.
|
|
* scripts/ccwl (main): Replace workflow->cwl and workflow->dot with
workflow-or-command->cwl and workflow-or-command->dot.
|
|
* ccwl/cwl.scm (workflow-or-command->dot): New public 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.
|
|
* ccwl/cwl.scm (workflow-or-command->cwl): New public function.
|
|
* ccwl/cwl.scm (command->cwl): New public function.
|
|
* scripts/ccwl (main): Catch and report &formatted-message conditions.
|
|
* ccwl/ui.scm (report-formatted-message): New public function.
(report-ccwl-violation): Use report-formatted-message.
|
|
* scripts/ccwl: Import (ice-9 exceptions).
(main): Do not print backtrace or request the user to report a bug for
quit exceptions.
|
|
* scripts/ccwl: Set scheme mode in Emacs.
|
|
* scripts/ccwl (main): Catch uncaught exceptions and request the user
report them to the issue tracker.
|
|
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.
|
|
* ccwl/ccwl.scm (function-object): Add TODO note to support
commands (that is, function objects) defined in lexical scope.
|
|
* tests/ccwl.scm (print): New variable.
("rename should work even on the final output of a workflow"): New
test.
|
|
The key may have been renamed. So, the output should likewise be.
* ccwl/ccwl.scm (key->output): Use key name for output.
|
|
* ccwl/ccwl.scm (<output>)[id]: Add setter.
|
|
* .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.
|
|
* 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.
|
|
* doc/ccwl.skb: Add table of contents.
|
|
* scripts/ccwl: Do not pass multiple arguments to env. Pass them
through sh.
|
|
* scripts/ccwl: Add --no-auto-compile to shebang.
|
|
* Makefile (%.go): Set GUILE_AUTO_COMPILE=0.
|
|
* README.org (Manually from source): Mention dependencies graphviz,
cwltool and skribilo that are required to build the manual.
|
|
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.
|
|
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.
|
|
* build-aux/build-home-page.el (org-dblock-write:download): Fix broken
link to signing key.
|
|
* ccwl/ccwl.scm (collect-steps): Raise parameter errors in workflow
steps as exceptions.
|
|
* ccwl/ccwl.scm (collect-steps): Raise undefined ccwl command error as
a &ccwl-violation condition.
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
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.
|
|
* 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.
|