You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# Common Workflow Language (CWL) Command Line Tool Description, v1.2
13
+
# Common Workflow Language (CWL) Command Line Tool Description, v1.3.0-dev1
14
14
15
15
This version:
16
-
* https://w3id.org/cwl/v1.2/
16
+
* https://w3id.org/cwl/v1.3.0-dev1
17
17
18
18
Latest stable version:
19
19
* https://w3id.org/cwl/
@@ -37,277 +37,25 @@ $graph:
37
37
- {$include: intro.md}
38
38
39
39
- |
40
-
## Introduction to the CWL Command Line Tool standard v1.2.1
41
-
42
-
There are no new features nor behavior changes in CWL v1.2.1
43
-
as compared to CWL v1.2.0. v1.2.1 fixes only typos, adds clarifications,
44
-
and adds additional conformance tests. Some changes to the schema defining
45
-
CWL are to aid the auto-generation of libraries for the reading and
46
-
writing of CWL documents.
47
-
48
-
Documents should continue to specify `cwlVersion: v1.2`. However, when
49
-
reporting results from running the CWL conformance tests, please do report
50
-
all three components; for example "99% of CWL v1.2.0 required tests" or
51
-
"100% of CWL v1.2.1 required tests".
52
-
53
-
See also the [Schema-Salad v1.2.1 changelog](SchemaSalad.html#Changelog_for_v1.2.1)
54
-
55
-
## Changelog for v1.2.1
56
-
* CWL has been assigned an official IANA Media Type of [`application/cwl`](https://www.iana.org/assignments/media-types/application/cwl)
57
-
for either JSON or YAML format. For JSON formatted CWL documents, [`application/cwl+json`](https://www.iana.org/assignments/media-types/application/cwl+json)
58
-
has also been assigned and can be used. For specifying a YAML formatted
59
-
CWL document, one can use `application/cwl+yaml` but that is not an official
60
-
IANA media-type yet; as of 2023-07-23 the `+yaml` suffix has yet to be approved.
61
-
The above has been documented in the [Syntax](#Syntax) section.
62
-
* There is now an unofficial [JSON Schema for CWL documents](https://github.com/common-workflow-language/cwl-v1.2/blob/1.2.1_proposed/json-schema/cwl.yaml),
63
-
donated by Francis Charette-Migneault. This schema captures much, but not
64
-
all, of the potential complexity of CWL documents. It was created for
65
-
the [draft](https://docs.ogc.org/DRAFTS/20-044.html)
66
-
[OGC API - Processes - Part 2: Deploy, Replace, Undeploy](http://www.opengis.net/doc/IS/ogcapi-processes-2/1.0)
67
-
standard.
68
-
To support the testing of this unofficial JSON Schema for CWL, some of
69
-
the `should_fail: true` tests have had the label `json_schema_invalid`
70
-
added.
71
-
* For consistency, all references to `URI`s have been replaced with `IRI`s
72
-
(Internationalized Resource Identifiers).
73
-
* The [difference between `$()` and `${}`](#Expressions_(Optional)) were
74
-
clarified. We now make more explicit that `${...}` evaluates to
75
-
`(function() { ... })()`.
76
-
* The publisher of this document is now explicitly named; it is the
77
-
[Common Workflow Language project](https://www.commonwl.org), a member
78
-
project of [Software Freedom Conservancy](https://sfconservancy.org/).
79
-
* The [Parameter References](#Parameter_references) section has been updated
80
-
to clarify ambiguity on `null` and array `.length`. Three conformance tests to
81
-
verify this were added as well (`params_broken_null`, `length_for_non_array`,
82
-
`user_defined_length_in_parameter_reference`).
83
-
* It is now explicit in the description of the `size` field of a
84
-
[`File`](#File) object that `size` is measured in bytes, as was already
85
-
stated in the introduction to the `File` object description.
86
-
* The concept of "opaque identifier(s)"/"opaque strings" as mentioned in the
This allows autogenerated CWL parsers to deserialize any of the standard
151
-
CWL hints instead of forcing the users of those parsers to convert the
152
-
unserialized hints to normal objects themselves.
153
-
154
-
### Updated Conformance Tests for v1.2.1
155
-
* Conformance tests are now referred to by their textual identifiers (`id`).
156
-
Previously this was the `label` field. Tests without a `label`/`id`
157
-
have been given one.
158
-
* `tests/loadContents/cwloutput-nolimit.cwl`: Made explicit that
159
-
`bigstring` is an additional output as generated by the existing
160
-
`mkfilelist.py` script's use of [`cwl.output.json`](#Output_binding).
161
-
* The number of different software containers used in the conformance tests
162
-
has been reduced to four. See [the list in the CONFORMANCE_TESTS.md instructions](https://github.com/common-workflow-language/cwl-v1.2/blob/1.2.1_proposed/CONFORMANCE_TESTS.md#writing-a-new-conformance-test).
163
-
* `tests/secondaryfiles/rename-inputs.cwl` has been simplified by changing
164
-
it to reference another input parameter instead of using `self`. The
165
-
behavior of processing secondary files patterns in order and being able
166
-
to reference earlier ones later is not part of CWL v1.2.
167
-
168
-
This doesn't exactly replicate the previous behavior, because it introduces
169
-
a new input parameter, however it does demonstrate the ability to rename
170
-
a file and have it staged as a secondary file without having to use
171
-
`InitialWorkDirRequirement`.
172
-
* `directory_input_docker` was incorrectly marked as required, it is optional
173
-
unless the feature `ShellCommandRequirement` is stated as being supported.
174
-
* `glob_outside_outputs_fails` was incorrectly marked as required, it is
175
-
optional unless the feature `DockerRequirement` is stated as being supported.
176
-
* `stage_file_array` was incorrectly marked as required, it is optional
177
-
unless both the features `InlineJavascriptRequirement` and `DockerRequirement`
178
-
are stated as being supported.
179
-
* `stage_file_array_basename` and `stage_file_array_entryname_overrides` were
180
-
both incorrectly marked as required, they are optional unless the feature
181
-
`InitialWorkDirRequirement`and `InlineJavascriptRequirement` are both
182
-
stated as being supported.
183
-
* `optional_numerical_output_returns_0_not_null` was incorrectly marked as
184
-
required, it is optional unless `InlineJavascriptRequirement` is stated
185
-
as being supported.
186
-
* `cwloutput_nolimit` and `loadcontents_limit` were incorrectly marked as
187
-
optional; this has been corrected as both are required.
188
-
* Made it explicit that if a `CommandLineTool` contains logically chained
189
-
commands (e.g. `echo a && echo b`) then the `stdout` File/object must
190
-
include the output of every command. The `stdout_chained_commands` mandatory
191
-
conformance test was added to verify this.
192
-
* `metadata`: The description and content of this test has been updated to
193
-
be more focused on the metadata present in the CWL file.
194
-
* The final references to Python 2 have been updated to Python 3.
195
-
* A few conformance tests had `dockerPull`s without a registry specified.
196
-
This has been fixed.
197
-
198
-
### New Mandatory Conformance Tests for v1.2.1
199
-
* `params_broken_null`: Test parameter reference that refers to
200
-
`null.something`.
201
-
* `length_for_non_array`: Test parameter reference that refers to length
202
-
of non-array input.
203
-
* `user_defined_length_in_parameter_reference`: Test 'length' in a parameter
204
-
reference where it does not refer to length of an array input.
205
-
* `directory_literal_with_literal_file_in_subdir_nostdin`: Test non-`stdin`
206
-
reference to literal `File` via a nested `Directory` literal.
207
-
* `colon_in_paths`: Confirm that colons are tolerated in input paths,
208
-
string values, stdout shortcut, and output file & directory names.
209
-
* `colon_in_output_path`: Confirm that colons are tolerated in output
210
-
directory names.
211
-
* `record_with_default`: Confirm that records with defaults are accepted.
212
-
* `record_outputeval_nojs`: Use of `outputEval` on a record itself, not
213
-
the fields of the record (without javascript). An equivalent test with
214
-
`InlineJavascriptRequirement` was added as well: `record_outputeval`.
215
-
* `runtime-outdir`: Test use of `$(runtime.outdir)` for `outputBinding.glob`.
216
-
* `stdout_chained_commands`: Test that chaining two `echo` calls causes
217
-
the workflow runner to emit the combined output to `stdout`. This is to
218
-
confirm that the workflow runner will **not** create an expression such as
219
-
`echo a && echo b > out.txt`, but instead will produce the correct
220
-
`echo a && echo b`, and capture the output correctly.
221
-
* `record_order_with_input_bindings`: Test sorting arguments at each level
222
-
(`inputBinding` for all levels).
223
-
* `json_output_path_relative`: Test support for reading cwl.output.json
224
-
where 'path' is relative path in output dir.
225
-
* `json_output_location_relative`: Test support for reading cwl.output.json
226
-
where 'location' is relative reference to output dir.
227
-
* `filename_with_hash_mark`: Test for correct handling of URL-quoting in
228
-
a filename to refer to filename containing a hash mark.
229
-
* `capture_files`: Test that a type error is raised if directories are
230
-
returned by `glob` evaluation when type is `File`.
231
-
* `capture_dirs`: Test that a type error is raised if files are returned
232
-
by `glob` evaluation when type is `Directory`.
233
-
* `capture_files_and_dirs`: Test that both files and directories are
234
-
captured by `glob` evaluation when type is `[Directory, File]`.
235
-
* `very_big_and_very_floats_nojs`: Confirm that very big and very small
236
-
numbers are represented on the command line using decimals, not
237
-
scientific notation.
238
-
* `paramref_arguments_runtime`: confirm that the `runtime` object is
239
-
available to parameter references in arguments.
240
-
* `paramref_arguments_self`: confirm that the `self` object is available
241
-
and set to `null` in arguments.
242
-
* `paramref_arguments_inputs`: confirm that the `inputs` object is
243
-
available to parameter references in arguments.
244
-
245
-
### New Optional Conformance Tests for v1.2.1
246
-
247
-
#### `InlineJavaScriptRequirement`
248
-
* `record_outputeval`: Use of `outputEval` on a record itself, not
249
-
the fields of the record.
250
-
* `staging-basename`: Use of an `ExpressionTool` to change `basename` of
251
-
file, then correctly staging the file using the new name.
252
-
* `js-input-record`: A test case for JavaScript with an input record.
253
-
* `very_big_and_very_floats`: Confirm that very big and very small
254
-
numbers are represented on the command line using decimals, not
255
-
scientific notation.
256
-
257
-
#### `MultipleInputFeatureRequirement`
258
-
* `multiple-input-feature-requirement`: `MultipleInputFeatureRequirement` on
259
-
workflow outputs.
260
-
261
-
#### `InitialWorkDirRequirement`
262
-
* `iwd-subdir`: Test emitting a subdirectory from the initial working
263
-
directory.
40
+
## Introduction to the CWL Command Line Tool standard v1.3.0-dev1
264
41
265
-
## Introduction to the CWL Command Line Tool standard v1.2
42
+
This specification represents the latest development version from the
43
+
CWL group.
266
44
267
-
Since the v1.1 release, v1.2 introduces the
268
-
following updates to the CWL Command Line Tool standard.
269
-
Documents should use `cwlVersion: v1.2` to make use of new
270
-
syntax and features introduced in v1.2. Existing v1.1 documents
45
+
Documents should use `cwlVersion: v1.3.0-dev1` to make use of new
46
+
syntax and features introduced in v1.3.0-dev1. Existing v1.2 documents
271
47
should be trivially updatable by changing `cwlVersion`, however
272
48
CWL documents that relied on previously undefined or
273
49
underspecified behavior may have slightly different behavior in
274
-
v1.2.
275
-
276
-
## Changelog
277
-
278
-
* `coresMin` and `coresMax` of
279
-
[ResourceRequirement](#ResourceRequirement) may now request fractional CPUs.
280
-
* `ramMin`, `ramMax`, `tmpdirMin`, `tmpdirMax`, `outdirMin`, and `outdirMax` of
281
-
[ResourceRequirement](#ResourceRequirement) now accept floating point values.
282
-
* [CommandLineTool](#CommandLineTool) can now express `intent`
283
-
with an identifier for the type of computational operation.
284
-
* Added conformance tests for order of operations evaluating `secondaryFiles` on input
285
-
and ensure that input and output secondaryFiles expressions can return a File object.
286
-
* Clarify there are no limits on the size of file literal `contents`.
287
-
* When using `loadContents` it now must fail when attempting to
288
-
load a file greater than 64 KiB instead of silently truncating
289
-
the data.
290
-
* Objects, arrays and numbers returned by parameter references
291
-
or expressions in `Dirent.entry` that are not a `File` or
292
-
`Directory`object (or array of such) are now specified to be
293
-
JSON serialized to produce file contents.
294
-
* Note that only enum and record types can be typedef-ed
295
-
* Added conformance tests for order of operations evaluating `secondaryFiles` on input
296
-
and ensure that input and output secondaryFiles expressions can return a File object.
297
-
* Escaping in [string interpolation](#String_Interpolation) has
298
-
been added to the specification along with conformance tests.
299
-
* It is now possible to have an absolute path in the `entryname`
300
-
field in
301
-
[InitialWorkDirRequirement](#InitialWorkDirRequirement) when
302
-
running in a mandatory container. Together with
303
-
`DockerRequirement.dockerOutputDirectory`this it possible to
304
-
control the locations of both input and output files when
305
-
running in containers.
306
-
* Specify default success/fail interpretation of exit codes when not given.
307
-
308
-
See also the [CWL Workflow Description, v1.2 changelog](Workflow.html#Changelog).
50
+
v1.3.0-dev1.
51
+
52
+
## Changelog for v1.3.0-dev1
53
+
54
+
See also the [CWL Workflow Description, v1.3.0-dev1 changelog](Workflow.html#Changelog).
309
55
For other changes since CWL v1.0, see the
310
56
[CWL Command Line Tool Description, v1.1 changelog](https://www.commonwl.org/v1.1/CommandLineTool.html#Changelog)
57
+
and
58
+
[CWL Command Line Tool Description, v1.2.1 changelog](https://www.commonwl.org/v1.2/CommandLineTool.html#Changelog).
This repo holds the development version of CWL v1.2.1; see https://github.com/common-workflow-language/cwl-v1.2/issues/54 for the plan.
4
-
5
-
See https://github.com/common-workflow-language/cwl-v1.2/tree/v1.2.0 for the released v1.2 of the Common Workflow Language standards and the history of its development.
6
-
7
-
You can render this using https://github.com/common-workflow-language/cwl-website/blob/main/website.sh
8
-
9
-
You may browse the released v1.2 standards online at https://www.commonwl.org/v1.2
3
+
This repo holds the v1.3.0-dev0 in-development version of the Common Workflow Language standard and the history of its development.
0 commit comments