Skip to content

Commit f78455f

Browse files
author
Peter Amstutz
committed
Merge branch 'master' into feature/optional-secondary
2 parents 214b1ad + 6fe656c commit f78455f

File tree

4 files changed

+107
-89
lines changed

4 files changed

+107
-89
lines changed

CommandLineTool.yml

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ $graph:
5050
5151
## Changelog
5252
53+
* Clarify documentation around `valueFrom` and `null` inputs.
5354
* Default values for some fields are now expressed in the schema.
5455
* When defining record types with `CommandInputRecordSchema`, fields of
5556
type `File` may now include `format`, `loadContents`,
@@ -69,9 +70,11 @@ $graph:
6970
* Clarify semantics of `shellQuote`
7071
* Expressions are now allowed to evaluate to `null` or `Dirent` in
7172
[InitialWorkDirRequirement.listing](#InitialWorkDirRequirement).
73+
* Clarify behavior of secondaryFiles on output.
7274
* [Addition](#Requirements_and_hints) of `cwl:requirements` field to
73-
input object documents
75+
input object documents.
7476
* Clarify behavior of `glob` for absolute paths and symlinks.
77+
* Clarify behavior of `glob` to include directories.
7578
7679
See also the [CWL Workflow Description, v1.1.0-dev1 changelog](Workflow.html#Changelog).
7780
@@ -202,6 +205,9 @@ $graph:
202205
`InputParameter.default` field) must be applied before evaluating the
203206
expression.
204207
208+
If the value of the associated input parameter is `null`, `valueFrom` is
209+
not evaluated and nothing is added to the command line.
210+
205211
When a binding is part of the `CommandLineTool.arguments` field,
206212
the `valueFrom` field is required.
207213
@@ -240,12 +246,12 @@ $graph:
240246
- type: array
241247
items: string
242248
doc: |
243-
Find files relative to the output directory, using POSIX glob(3)
244-
pathname matching. If an array is provided, find files that match any
245-
pattern in the array. If an expression is provided, the expression must
246-
return a string or an array of strings, which will then be evaluated as
247-
one or more glob patterns. Must only match and return files which
248-
actually exist.
249+
Find files or directories relative to the output directory, using POSIX
250+
glob(3) pathname matching. If an array is provided, find files or
251+
directories that match any pattern in the array. If an expression is
252+
provided, the expression must return a string or an array of strings,
253+
which will then be evaluated as one or more glob patterns. Must only
254+
match and return files/directories which actually exist.
249255
250256
If the value of glob is a relative path pattern (does not
251257
begin with a slash '/') then it is resolved relative to the
@@ -259,14 +265,14 @@ $graph:
259265
260266
A glob may match a path within the output directory which is
261267
actually a symlink to another file. In this case, the
262-
expected behavior is for the resulting File object to take the
268+
expected behavior is for the resulting File/Directory object to take the
263269
`basename` (and corresponding `nameroot` and `nameext`) of the
264-
symlink. The `location` of the File is implementation
265-
dependent, but logically the File should have the same content
266-
as the symlink target. Platforms may stage output files to
270+
symlink. The `location` of the File/Directory is implementation
271+
dependent, but logically the File/Directory should have the same content
272+
as the symlink target. Platforms may stage output files/directories to
267273
cloud storage that lack the concept of a symlink. In
268-
this case file content may be duplicated, or (to avoid
269-
duplication) the File `location` may refer to the symlink
274+
this case file content and directories may be duplicated, or (to avoid
275+
duplication) the File/Directory `location` may refer to the symlink
270276
target.
271277
272278
It is an error if a symlink in the output directory (or any

Process.yml

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -467,10 +467,16 @@ $graph:
467467
doc: |
468468
Only valid when `type: File` or is an array of `items: File`.
469469
470-
Provides a pattern or expression specifying files or directories that
471-
should be included alongside the primary file.
472-
Secondary file is required for inputs and not required for outputs
473-
unless specified otherwise.
470+
Provides a pattern or expression specifying files or
471+
directories that should be included alongside the primary
472+
file. Secondary files may be required or optional. When not
473+
explicitly specified, secondary files specified for `inputs`
474+
are required and `outputs` are optional. An implementation
475+
must include matching Files and Directories in the
476+
`secondaryFiles` property of the primary file. These Files
477+
and Directories must be transferred and staged alongside the
478+
primary file. An implementation may fail workflow execution
479+
if a required secondary file does not exist.
474480
475481
If the value is an expression, the value of `self` in the expression
476482
must be the primary input or output File object to which this binding
@@ -481,7 +487,7 @@ $graph:
481487
`path` or `location` and `basename` fields set, or an array consisting
482488
of strings or File or Directory objects. It is legal to reference an
483489
unchanged File or Directory object taken from input as a secondaryFile.
484-
The expression may return "null" in which case there is no secondaryFile
490+
The expression may return "null" in which case there is no secondaryFile
485491
from that expression.
486492
487493
To work on non-filename-preserving storage systems, portable tool
@@ -876,7 +882,7 @@ $graph:
876882
`path` or `location` and `basename` fields set, or an array consisting
877883
of strings or File or Directory objects. It is legal to reference an
878884
unchanged File or Directory object taken from input as a secondaryFile.
879-
The expression may return "null" in which case there is no secondaryFile
885+
The expression may return "null" in which case there is no secondaryFile
880886
from that expression.
881887
882888
To work on non-filename-preserving storage systems, portable tool
@@ -898,8 +904,7 @@ $graph:
898904
- name: required
899905
type: boolean?
900906
doc: |
901-
An implementation must not fail workflow execution if `required` is
907+
An implementation must not fail workflow execution if `required` is
902908
set to `false` and the expected secondary file does not exist.
903909
Default value for `required` field is `true` for secondary files on
904910
input and `false` for secondary files on output.
905-

README.md

Lines changed: 4 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,7 @@
1-
# Common Workflow Language Specifications, v1.1.0-dev1
1+
Hello!
22

3-
<!-- remove this before v1.1 is final! -->
4-
WARNING, this is a draft and in progress! Development of CWL v1.1 is coordinated at https://github.com/common-workflow-language/common-workflow-language/milestone/6
3+
This repo represent the current working proposal for v1.1 of the Common Workflow Language standard.
54

6-
The CWL specifications are divided up into several documents.
5+
You can render this using https://github.com/common-workflow-language/cwl-website/blob/master/website.sh
76

8-
The [User Guide](http://www.commonwl.org/user_guide/) provides a gentle
9-
introduction to writing CWL command line tools and workflows.
10-
11-
The [Command Line Tool Description Specification](CommandLineTool.html)
12-
specifies the document schema and execution semantics for wrapping and
13-
executing command line tools.
14-
15-
The [Workflow Description Specification](Workflow.html) specifies the document
16-
schema and execution semantics for composing workflows from components such as
17-
command line tools and other workflows.
18-
19-
The
20-
[Semantic Annotations for Linked Avro Data (SALAD) Specification](SchemaSalad.html)
21-
specifies the preprocessing steps that must be applied when loading CWL
22-
documents and the schema language used to write the above specifications.
23-
24-
Also available are inheritance graphs (as SVG images) for the [Schema Salad object model](salad.svg) and the [CWL object model](cwl.svg).
25-
26-
# Running the CWL conformance tests
27-
28-
1. Install a CWL runner of your choice. The reference runner can be installed as
29-
the default runner by doing:
30-
```
31-
pip install cwlref-runner
32-
```
33-
34-
2. Install the CWL test parser:
35-
36-
```
37-
pip install cwltest
38-
```
39-
You may need to activate a virtualenv first, or do a local install by adding `--user` after `install` above.
40-
41-
3. From within a copy of [this repository](https://github.com/common-workflow-language/cwl-v1.1) (e.g. cwl-v1.1) execute the main test script
42-
```
43-
./run_test.sh
44-
```
45-
46-
If the CWL runner isn't installed as `cwl-runner` then you can specify the name:
47-
48-
```
49-
./run_test.sh RUNNER=cwltool
50-
```
51-
52-
You can also specify additional options that are specific for the particular CWL runner you are using.
53-
For example, with CWL reference runner you can turn on parallel execution mode:
54-
55-
```
56-
./run_test.sh RUNNER=cwltool EXTRA=--parallel
57-
```
58-
59-
This can be combined with launching more than one CWL conformance test at once with `-j`:
60-
61-
```
62-
./run_test.sh -j4 RUNNER=cwltool EXTRA=--parallel
63-
```
64-
65-
66-
For details of options you can pass to the test script, do:
67-
```
68-
./run_test.sh --help
69-
```
70-
71-
The full test suite takes about 10 minutes to run
7+
The current rendering is at https://www.commonwl.org/v1.1.0-dev1/

index.md

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Common Workflow Language Specifications, v1.1.0-dev1
2+
3+
<!-- remove this before v1.1 is final! -->
4+
WARNING, this is a draft and in progress! Development of CWL v1.1 is coordinated at https://github.com/common-workflow-language/common-workflow-language/milestone/6
5+
6+
The CWL specifications are divided up into several documents.
7+
8+
The [User Guide](http://www.commonwl.org/user_guide/) provides a gentle
9+
introduction to writing CWL command line tools and workflows.
10+
11+
The [Command Line Tool Description Specification](CommandLineTool.html)
12+
specifies the document schema and execution semantics for wrapping and
13+
executing command line tools.
14+
15+
The [Workflow Description Specification](Workflow.html) specifies the document
16+
schema and execution semantics for composing workflows from components such as
17+
command line tools and other workflows.
18+
19+
The
20+
[Semantic Annotations for Linked Avro Data (SALAD) Specification](SchemaSalad.html)
21+
specifies the preprocessing steps that must be applied when loading CWL
22+
documents and the schema language used to write the above specifications.
23+
24+
Also available are inheritance graphs (as SVG images) for the [Schema Salad object model](salad.svg) and the [CWL object model](cwl.svg).
25+
26+
# Running the CWL conformance tests
27+
28+
1. Install a CWL runner of your choice. The reference runner can be installed as
29+
the default runner by doing:
30+
```
31+
pip install cwlref-runner
32+
```
33+
34+
2. Install the CWL test parser:
35+
36+
```
37+
pip install cwltest
38+
```
39+
You may need to activate a virtualenv first, or do a local install by adding `--user` after `install` above.
40+
41+
3. From within a copy of [this repository](https://github.com/common-workflow-language/cwl-v1.1) (e.g. cwl-v1.1) execute the main test script
42+
```
43+
./run_test.sh
44+
```
45+
46+
If the CWL runner isn't installed as `cwl-runner` then you can specify the name:
47+
48+
```
49+
./run_test.sh RUNNER=cwltool
50+
```
51+
52+
You can also specify additional options that are specific for the particular CWL runner you are using.
53+
For example, with CWL reference runner you can turn on parallel execution mode:
54+
55+
```
56+
./run_test.sh RUNNER=cwltool EXTRA=--parallel
57+
```
58+
59+
This can be combined with launching more than one CWL conformance test at once with `-j`:
60+
61+
```
62+
./run_test.sh -j4 RUNNER=cwltool EXTRA=--parallel
63+
```
64+
65+
66+
For details of options you can pass to the test script, do:
67+
```
68+
./run_test.sh --help
69+
```
70+
71+
The full test suite takes about 10 minutes to run

0 commit comments

Comments
 (0)