This repository was archived by the owner on Jun 9, 2020. It is now read-only.
File tree 4 files changed +61
-0
lines changed
4 files changed +61
-0
lines changed Original file line number Diff line number Diff line change @@ -337,6 +337,12 @@ def __init__(self, expression_lib=None):
337
337
Requirement .__init__ (self , 'InlineJavascriptRequirement' )
338
338
self .expressionLib = expression_lib
339
339
340
+ def _to_dict (self ):
341
+ if self .expressionLib :
342
+ return {'expressionLib' : [self .expressionLib ]}
343
+ else :
344
+ return {}
345
+
340
346
341
347
class DockerRequirement (Requirement ):
342
348
'''
@@ -377,6 +383,15 @@ def _to_dict(self):
377
383
return {p : v for p , v in vars (self ).items () if p .startswith ('docker' ) and v is not None }
378
384
379
385
386
+ class SubworkflowFeatureRequirement (Requirement ):
387
+
388
+ def __init__ (self ):
389
+ Requirement .__init__ (self , 'SubworkflowFeatureRequirement' )
390
+
391
+ def _to_dict (self ):
392
+ return dict ()
393
+
394
+
380
395
class Namespaces (object ):
381
396
"""
382
397
Define different namespace for the description.
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ def __init__(self):
15
15
self .steps = []
16
16
self .inputs = []
17
17
self .outputs = []
18
+ self .requirements = []
18
19
self ._path = None
19
20
20
21
@@ -47,6 +48,14 @@ def export(self, outfile=None):
47
48
for out in self .outputs :
48
49
cwl_workflow ['outputs' ][out .id ] = out .get_dict ()
49
50
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
+
50
59
# Write CWL file in YAML
51
60
if outfile is None :
52
61
six .print_ (CWL_SHEBANG , "\n " , sep = '' )
Original file line number Diff line number Diff line change @@ -193,6 +193,18 @@ def test_init(self):
193
193
self .assertEqual (self .js_req .req_class , 'InlineJavascriptRequirement' )
194
194
self .assertEqual (self .js_req .expressionLib , 'expression' )
195
195
196
+ def test_add (self ):
197
+ tool = {}
198
+ self .js_req .add (tool )
199
+ self .assertEqual (tool , {'InlineJavascriptRequirement' : {'expressionLib' : ['expression' ]}})
200
+
201
+ def test_add_without_lib (self ):
202
+ tool = {}
203
+ req = cwlgen .InlineJavascriptReq ()
204
+ req .add (tool )
205
+ self .assertEqual (tool , {'InlineJavascriptRequirement' : {}})
206
+
207
+
196
208
class TestDockerRequirement (unittest .TestCase ):
197
209
198
210
def setUp (self ):
@@ -215,6 +227,17 @@ def test_export(self):
215
227
dockerImageId = 'id' , dockerOutputDir = 'dir' )
216
228
217
229
230
+ class TestSubworkflowFeatureRequirement (unittest .TestCase ):
231
+
232
+ def setUp (self ):
233
+ self .req = cwlgen .SubworkflowFeatureRequirement ()
234
+
235
+ def test_add (self ):
236
+ tool = {}
237
+ self .req .add (tool )
238
+ self .assertEqual (tool , {'SubworkflowFeatureRequirement' : {}})
239
+
240
+
218
241
########### Main ###########
219
242
220
243
if __name__ == "__main__" :
Original file line number Diff line number Diff line change @@ -86,5 +86,19 @@ def test_generates_workflow_int_inputs(self):
86
86
self .assertEqual (expected , generated )
87
87
88
88
89
+ def test_add_requirements (self ):
90
+ w = cwlgen .Workflow ()
91
+ req = cwlgen .InlineJavascriptReq ()
92
+ w .requirements .append (req )
93
+ generated = self .capture_tempfile (w .export )
94
+ expected = b"""#!/usr/bin/env cwl-runner
89
95
96
+ class: Workflow
97
+ cwlVersion: v1.0
98
+ inputs: {}
99
+ outputs: {}
100
+ requirements:
101
+ InlineJavascriptRequirement: {}
102
+ """
103
+ self .assertEqual (expected , generated )
90
104
You can’t perform that action at this time.
0 commit comments