Skip to content
This repository was archived by the owner on Jun 9, 2020. It is now read-only.

Commit 7a3f391

Browse files
committed
Adds support for workflow requirements
1 parent 5ec7d9a commit 7a3f391

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

cwlgen/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ def __init__(self, expression_lib=None):
339339

340340
def _to_dict(self):
341341
return {'expressionLib': [self.expressionLib]}
342-
342+
343343

344344
class DockerRequirement(Requirement):
345345
'''

cwlgen/workflow.py

+9
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ def __init__(self):
1515
self.steps = []
1616
self.inputs = []
1717
self.outputs = []
18+
self.requirements = []
1819
self._path = None
1920

2021

@@ -47,6 +48,14 @@ def export(self, outfile=None):
4748
for out in self.outputs:
4849
cwl_workflow['outputs'][out.id] = out.get_dict()
4950

51+
# Add requirements.
52+
requirements = {}
53+
for requirement in self.requirements:
54+
requirement.add(requirements)
55+
56+
if requirements:
57+
cwl_workflow['requirements'] = requirements
58+
5059
# Write CWL file in YAML
5160
if outfile is None:
5261
six.print_(CWL_SHEBANG, "\n", sep='')

test/test_unit_workflow.py

+15
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,20 @@ def test_generates_workflow_int_inputs(self):
8686
self.assertEqual(expected, generated)
8787

8888

89+
def test_add_requirements(self):
90+
w = cwlgen.Workflow()
91+
req = cwlgen.InlineJavascriptReq(expression_lib='test_lib')
92+
w.requirements.append(req)
93+
generated = self.capture_tempfile(w.export)
94+
expected = b"""#!/usr/bin/env cwl-runner
8995
96+
class: Workflow
97+
cwlVersion: v1.0
98+
inputs: {}
99+
outputs: {}
100+
requirements:
101+
InlineJavascriptRequirement:
102+
expressionLib: [test_lib]
103+
"""
104+
self.assertEqual(expected, generated)
90105

0 commit comments

Comments
 (0)