Age | Commit message (Collapse) | Author |
|
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.
|
|
* 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".
|
|
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.
|
|
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.
|
|
* scripts/ccwl (main): Remove FIXME note about compiling ccwl files.
|
|
* 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.
|
|
read-syntax gives us get better source properties.
* scripts/ccwl (main): Read using read-syntax.
|
|
* ccwl/conditions.scm (&formatted-message): New condition.
(formatted-message): New function.
|
|
This is a purely cosmetic change just to keep definitions outside the
test cases.
* tests/utils.scm (plist-ref): Move ahead of test-begin.
|
|
* 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.
|
|
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.
|