1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
#+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 installed, and then run
#+BEGIN_SRC shell
$ ./bootstrap.sh
$ ./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.
|