aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-10-12ccwl: Implement compiling to graphviz.Arun Isaac
* ccwl/yaml.scm (indent-level): Import (ccwl utils). Move to ... * ccwl/utils.scm (indent-level): ... here. Export indent-level. * ccwl/graphviz.scm: New file. * Makefile.am (SOURCES): Register it.
2021-10-11ccwl: Remove unused invoke-command function.Arun Isaac
* ccwl/ccwl.scm (invoke-command): Delete function.
2021-10-11ccwl: Factorize out CWL generation code to separate file.Arun Isaac
This factorization is required to support other compilation targets such as graphviz, bash, scheme, etc. * ccwl/cwl.scm: New file. * Makefile.am (SOURCES): Register it. * ccwl/ccwl.scm (ccwl): Export command?, command-inputs, command-outputs, command-args, command-stdin, command-other, workflow?, workflow-steps, workflow-inputs, workflow-outputs, workflow-other, input?, input-id, input-type, input-label, input-default, input-position, input-prefix, input-other, output?, output-id, output-type, output-binding, output-source, output-other, step?, step-id, step-run, step-in, step-out, unspecified-default?. (<workflow>): New type. (filter-alist): Move to cwl.scm. (make-workflow): Refactor into workflow->cwl-scm in cwl.scm. (output->cwl): Move to cwl.scm as output->cwl-scm. (command->cwl): Move to cwl.scm as command->cwl-scm. (workflow-steps): Rename to collect-steps. Clarify docstring. (workflow): Use collect-steps instead of workflow-steps. Explicitly pass empty list as other argument of make-workflow. Add TODO note to implement it properly. * scripts/ccwl.in: Import (ccwl cwl) instead of (ccwl yaml). Use workflow->cwl instead of scm->yaml. * tests/ccwl.scm ("stdin input should not have inputBinding"): Use command->cwl-scm from (ccwl cwl) instead of command->cwl from (ccwl ccwl).
2021-10-11ccwl: Remove unused write-cwl function.Arun Isaac
* ccwl/ccwl.scm: Do not export write-cwl. (write-cwl): Delete function.
2021-10-07ccwl: Pass workflow inputs through every command.Arun Isaac
We pass workflow inputs through all commands and constructs (pipe, tee, etc.). Thus, these parameters are globally visible to all steps, and are a kind of "global variable". * ccwl/ccwl.scm (workflow-steps): Pass to the output, input keys that correspond to workflow inputs.
2021-10-06ccwl: Fix the docstring of workflow-steps.Arun Isaac
Before this commit, the docstring of workflow-steps did not correctly describe its function. * ccwl/ccwl.scm (workflow-steps): Fix docstring.
2021-10-04ccwl: Quote source code in error messages.Arun Isaac
This makes it easier to distinct source code from the regular text of the error messages. * ccwl/ccwl.scm (workflow-steps): Quote source code in error messages.
2021-10-04ccwl: Support #:allow-other-keys in lambda** and syntax-lambda**.Arun Isaac
* ccwl/utils.scm (lambda**): Support #:allow-other-keys. Update docstring. (syntax-lambda**): Update docstring. * tests/utils.scm ("Allow other keys in lambda**", "Allow other keys in syntax-lambda**"): New tests.
2021-10-04ccwl: Error out on invalid keywords to lambda**.Arun Isaac
* ccwl/utils.scm (lambda**): Error out on invalid keywords (that is, keywords other than #:key, #:key* and #:allow-other-keys). * tests/utils.scm ("lambda** should error out on unrecognized keywords in arguments"): New test.
2021-10-04tests: Remove stray syntax-lambda** form.Arun Isaac
* tests/utils.scm: Remove stray syntax-lambda** form.
2021-10-04Revert "In pipe, pass through input keys to all expressions."Arun Isaac
This reverts commit 35bcaaa67efbe9b60e69b0f7c17acc186c74e7c3. This was not such a good idea. It is better to introduce the notion of global parameters.
2021-10-04website: Upcase SVG in comment.Arun Isaac
* website/style.css (object): Upcase SVG in comment.
2021-09-29README: Add a Download section using a dynamic block.Arun Isaac
In addition, we link to the GitHub repo in this new Download section rather than in the Contributing section. * README.org (download): Add dynamic block. (Contributing): Delete github-link dynamic block. * build-aux/build-home-page.el (org-dblock-write:github-link): Delete function. (org-dblock-write:download): New function.
2021-09-29README: Add GitHub link using an org dynamic block.Arun Isaac
* README.org (Contributing): Add github-link dynamic block. * build-aux/build-home-page.el (org-dblock-write:github-link): New function. (build-website): Update all org dynamic blocks. Do not insert GitHub link using `search-forward' and `insert'.
2021-09-29Makefile: Record dependency on build-home-page.el.Arun Isaac
* Makefile.am (website/index.html): Depend on build-aux/build-home-page.el.
2021-08-17build-aux: Remove redundant beginning-of-line.Arun Isaac
* build-aux/build-home-page.el (build-website): Remove redundant beginning-of-line.
2021-08-17build-aux: Link to GitHub repo on website.Arun Isaac
We programmatically add a link to the GitHub repo before building the website. This way, the GitHub link will appear only on the website, and not on the README.org rendered on GitHub. * build-aux/build-home-page.el (build-website): Add a link to the GitHub repo before building the website.
2021-08-17ccwl: Define output objects using a macro instead of a function.Arun Isaac
This allows us to do sophisticated syntax checking at an early stage, very close to the user interface. That way error messages from ccwl will make a lot more sense. * ccwl/ccwl.scm (output): Re-implement as macro. (command): Use the new macro interface. * doc/capture-output-file-with-parameter-reference.scm, doc/capture-output-file.scm, doc/capture-stdout.scm, doc/checksum.scm, doc/decompress-compile-run.scm: Use new quoting syntax for output types.
2021-08-17build-aux: Preserve only the LIBRARY_PATH environment in cwltool runs.Arun Isaac
* build-aux/generate-cwl-output.sh.in: Preserve only the LIBRARY_PATH environment variable.
2021-08-16Makefile: Generate sample output when building documentation.Arun Isaac
* Makefile.am (CLEANFILES): Add doc/*.out. (CLEAN_DIRECTORIES): Add doc/cwl-output. (GENERATE_CWL_OUTPUT): New variable. (doc/capture-output-file.out, doc/capture-output-file-with-parameter-reference.out, doc/capture-stdout.out, doc/checksum.out, doc/decompress-compile-run.out, doc/hello-world.out, doc/pass-stdin.out, doc/hello.tar.out): New targets. * doc/capture-output-file-with-parameter-reference.out, doc/capture-output-file.out, doc/capture-stdout.out, doc/checksum.out, doc/decompress-compile-run.out, doc/hello-world.out, doc/hello.tar.out, doc/pass-stdin.out: Delete files. * build-aux/generate-cwl-output.sh.in, doc/hello.c.gz, doc/hello.tar, doc/hello.txt: New files. * configure.ac: Configure build-aux/generate-cwl-output.sh. * doc/ccwl.skb (Tutorial)[Passing input into the standard input stream of a command]: Replace file "foo" with "hello.txt". * .gitignore: Add build-aux/generate-cwl-output.sh, doc/*.out and doc/cwl-output.
2021-08-16Makefile: Clean dot files correctly.Arun Isaac
* Makefile.am (CLEANFILES): Clean *.dot, not %.dot.
2021-08-16Makefile: Allow tabs when editing in Emacs.Arun Isaac
* Makefile.am: Set indent-tabs-mode to t.
2021-08-16ccwl: Define input objects using a macro instead of a function.Arun Isaac
This allows us to do sophisticated syntax checking at an early stage, very close to the user interface. That way error messages from ccwl will make a lot more sense. * ccwl/ccwl.scm (input): Re-implement as macro. (<input>): Add new functional setters set-input-position and set-input-prefix. (input-spec-id, run-arg-position, run-arg-prefix): New functions. (command, workflow): Use the new macro interface. * doc/capture-output-file-with-parameter-reference.scm, doc/capture-output-file.scm, doc/capture-stdout.scm, doc/checksum.scm, doc/decompress-compile-run.scm, doc/hello-world.scm, doc/pass-stdin.scm: Use new quoting syntax for input types.
2021-07-27ccwl: Make syntax-lambda** more like lambda**.Arun Isaac
I have tripped up several times on the differences between lambda** and syntax-lambda**. No longer! Making syntax-lambda** as close as possible to lambda** makes the code much more readable and align better with common sense. * ccwl/utils.scm (syntax-lambda**): Do not ignore the first identifier. Accept multiple values as arguments, not a single syntax object. * ccwl/ccwl.scm (command): Update use of syntax-lambda**. * tests/utils.scm ("syntax-lambda**", "syntax-lambda** with default values"): Update tests.
2021-07-27build-aux: Use #t as the expected value for test-assert tests.Arun Isaac
* build-aux/test-driver.scm.in: Import (ice-9 match). (my-gnu-runner): Use #t as the expected value for test-assert tests.
2021-07-20ccwl: Do not specify '() as the default value for n-ary arguments.Arun Isaac
Specifying '() as the default value for n-ary arguments is now equivalent to specifying '(()) as the default value. This is wrong. * ccwl/ccwl.scm (command): Do not explicitly specify the emtpy list as the default value for n-ary arguments.
2021-07-20ccwl: Set default value of lambda** n-ary arguments to '().Arun Isaac
* ccwl/utils.scm (lambda**): Set default value of lambda** n-ary arguments to the empty list. Document this in the 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"): New tests.
2021-07-20ccwl: Document syntax-lambda** support for default arguments.Arun Isaac
* ccwl/utils.scm (syntax-lambda**): Add example to docstring documenting support for default arguments. * tests/utils.scm ("syntax-lambda** with default values"): New test.
2021-07-20ccwl: Clarify difference between and lambda** and syntax-lambda**.Arun Isaac
* ccwl/utils.scm (syntax-lambda**): Clarify difference between and lambda** and syntax-lambda**.
2021-07-20ccwl: Support default values for arguments in lambda**.Arun Isaac
* ccwl/utils.scm (lambda**): Support default values for arguments, both unary and n-ary. * tests/utils.scm ("lambda** with default values"): New test.
2021-07-20tests: Add tests for ccwl/utils.scm.Arun Isaac
* tests/utils.scm: New file. * Makefile.am (SCM_TESTS): Register it.
2021-07-20ccwl: Add examples to docstrings.Arun Isaac
* ccwl/utils.scm (pairify, plist->alist, group-keyword-arguments, plist-ref, syntax-lambda**, filter-mapi, mapn, append-mapn, foldn): Add examples to docstrings.
2021-07-19build-aux: Put website building code into a function.Arun Isaac
This will be useful when we want build-home-page.el to build both a website and a gemini capsule. * build-aux/build-home-page.el (build-website): New function. * Makefile.am (website/index.html): Call build-website.
2021-07-19ccwl: Add missing syntax in unsyntax-keywords docstring example.Arun Isaac
* ccwl/utils.scm (unsyntax-keywords): Add missing syntax in docstring example.
2021-07-19tests: Fix order of arguments to test-equal.Arun Isaac
The expected value should be the first argument to test-equal. Getting this order wrong messes up the test logs. * tests/yaml.scm ("dictionary entries with empty arrays and dictionaries for values must render on the same line"): Fix order of arguments to test-equal.
2021-07-19tests: Fix indentation.Arun Isaac
* tests/ccwl.scm ("stdin input should not have inputBinding"): Fix indentation.
2021-07-19build-aux: Support disabling of color in tests.Arun Isaac
* build-aux/test-driver.scm.in: Pass argument color? to my-gnu-runner. (color, red, green, magenta, my-gnu-runner): Accept argument color?.
2021-07-19build-aux: Color test suite names.Arun Isaac
* build-aux/test-driver.scm.in (magenta): New function. (my-gnu-runner): Color test suite name in magenta.
2021-07-19build-aux: Abstract out colored text.Arun Isaac
* build-aux/test-driver.scm.in (color, red, green): New functions. (my-gnu-runner): Call red and green instead of stuffing escape codes into the format string.
2021-07-19build-aux: Improve test driver output.Arun Isaac
The test driver output is now much cleaner, and actually logs expected and actual values of failing tests. * build-aux/test-driver.scm.in (my-gnu-runner): Inherit from test-runner-null, and improve output.
2021-07-06Release version 0.1.0.v0.1.0Arun Isaac
* website/releases/ccwl-0.1.0.tar.lz, website/releases/ccwl-0.1.0.tar.lz.asc: New files.
2021-07-06NEWS: Update.Arun Isaac
* NEWS: New file.
2021-07-06.gitignore: Update rules regarding website directory.Arun Isaac
* .gitignore: Replace website with website/index.html and website/manual.
2021-07-06Makefile: Add release target.Arun Isaac
* Makefile.am (CURRENT_RELEASE): New variable. (release, $(CURRENT_RELEASE), %.asc): New rules.
2021-07-05ccwl: Remove extra blank lines.Arun Isaac
* ccwl/ccwl.scm: Remove extra blank lines.
2021-07-05website: Highlight code snippets.Arun Isaac
* website/style.css (code): Set background color to the same gray as pre code snippets. Pad 0.2 em on the left and the right.
2021-07-05doc: Inline code snippets.Arun Isaac
* doc/ccwl.skb (Tutorial)[Important concepts]: Inline code snippets.
2021-07-05doc: Add python named arguments example.Arun Isaac
* doc/ccwl.skb (Tutorial)[Important concepts]: Add python named arguments example.
2021-07-04Makefile: Replace top_builddir with builddir.Arun Isaac
Since we only have a top-level Makefile, top_builddir and builddir are the same. Use builddir in the interest of brevity. * Makefile.am (%.go, SCM_LOG_DRIVER, doc/ccwl.info, doc/ccwl.html): Replace top_builddire with builddir.
2021-07-04Makefile: Pass image path to skribilo.Arun Isaac
* Makefile.am (SKRIBILO_FLAGS): Add --image-path=$(builddir).