summaryrefslogtreecommitdiff
path: root/README.org
blob: 3d8e31a9da3179127d4b53c07c01431ee086f58a (plain)
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
96
#+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.