#+TITLE: Concise Common Workflow Language (ccwl) [[https://ci.systemreboot.net/jobs/ccwl-with-guile-3.0][https://ci.systemreboot.net/badge/ccwl-with-guile-3.0.svg]] [[https://ci.systemreboot.net/jobs/ccwl-with-guile-3.0-latest][https://ci.systemreboot.net/badge/ccwl-with-guile-3.0-latest.svg]] [[https://ci.systemreboot.net/jobs/ccwl-website][https://ci.systemreboot.net/badge/ccwl-website.svg]] The Concise Common Workflow Language (ccwl) is a concise syntax to express CWL workflows. It is implemented as an Embedded Domain Specific Language (EDSL) in the Scheme programming language, a minimalist dialect of the Lisp family of programming languages. ccwl is a compiler to generate CWL workflows from concise descriptions in ccwl. In the future, ccwl will also have a runtime whereby users can interactively execute workflows while developing them. #+BEGIN: download #+END: * Installation ** Using binary software bundles If you don't have [[https://guix.gnu.org/][GNU Guix]] set up, the easiest way to quickly try ccwl is to using the provided software bundles---either using the Guix tarball pack or the Docker image. *** Using the Guix tarball pack Download the Guix tarball pack from [[https://github.com/arunisaac/ccwl/releases][the GitHub releases page]] and extract it. Then, run ccwl with command-line arguments of your choice. #+BEGIN_SRC shell $ tar -xf ccwl-pack.tar.gz $ ./opt/gnu/bin/ccwl [ARGS...] #+END_SRC *** Using the Docker image Download the Docker image from [[https://github.com/arunisaac/ccwl/releases][the GitHub releases page]] and load it. Then, run ccwl with command-line arguments of your choice. #+BEGIN_SRC shell $ docker load -i ccwl-docker.tar.gz $ docker run ccwl [ARGS...] #+END_SRC When passing files into the Docker container, remember to share the filesystem. The following command is one way to share the current directory with the container. #+BEGIN_SRC shell $ docker run -v "$PWD:$PWD" -w "$PWD" ccwl compile foo.scm #+END_SRC ** Using Guix The easiest and best way (considering reproducibility) is to install ccwl through [[https://guix.gnu.org/][GNU Guix]]. ccwl is packaged for Guix and can be installed by running #+BEGIN_SRC shell $ guix install ccwl #+END_SRC ** Manually from source You can also install ccwl more traditionally using the provided GNU build system scripts. You will have to ensure that the necessary dependencies (guile and guile-libyaml are core dependencies; graphviz, cwltool and skribilo are required to build the manual) are installed, and then run #+BEGIN_SRC shell $ ./configure; make; make install #+END_SRC If you are using a release tarball, you may skip the /bootstrap.sh/ step. * Documentation [[https://ccwl.systemreboot.net/manual/dev/en/][Documentation for ccwl]] is available online. If ccwl is installed on your machine, you may also read the manual using your info browser. The Tutorial section of the manual provides a gentle introduction to ccwl. * Contributing Feedback, suggestions, feature requests, bug reports and pull requests are all welcome. Unclear and unspecific error messages are considered a bug. Do report them! To hack on ccwl, you can use GNU Guix to quickly drop into a development environment by running #+BEGIN_SRC shell $ guix shell -Df guix.scm #+END_SRC * License ccwl is free software released under the terms of the [[https://www.gnu.org/licenses/gpl.html][GNU General Public License]], either version 3 of the License, or (at your option) any later version.