@@ -63,7 +63,7 @@ def convert(doc: str) -> Dict[str, Any]:
6363 WDL .Error .ValidationError ,
6464 WDL .Error .MultipleValidationErrors ,
6565 ) as exn :
66- WDL .CLI .print_error (exn ) # type: ignore[no-untyped-call]
66+ WDL .CLI .print_error (exn )
6767 raise exn
6868
6969 parser = Converter ()
@@ -289,7 +289,11 @@ def load_wdl_objects(
289289 def get_step_input_expr (
290290 self , wf_expr : Union [WDL .Expr .Get , WDL .Expr .String ]
291291 ) -> Tuple [str , Optional [str ]]:
292- """Get name of expression referenced in workflow call inputs."""
292+ """
293+ Get name of expression referenced in workflow call inputs.
294+
295+ Returns a tuple of the source plus any needed "valueFrom" expression.
296+ """
293297 with WDLSourceLine (wf_expr , ConversionException ):
294298 if isinstance (wf_expr , WDL .Expr .String ):
295299 return self .get_expr_string (wf_expr )[1 :- 1 ], None
@@ -307,14 +311,22 @@ def get_step_input_expr(
307311 member = str (wf_expr .member )
308312 ident = cast (WDL .Expr .Ident , wf_expr .expr .expr )
309313 id_name = ident .name
314+ elif isinstance (wf_expr , WDL .Expr .Apply ):
315+ expr_str = self .get_expr (wf_expr )
316+ if expr_str .count ("inputs" ) == 1 :
317+ id_name = re .match (r"inputs\.*?[ \.](.*?)[. ]" , expr_str ).groups ()[
318+ 0
319+ ]
320+ value_from = "self" + expr_str .partition (f"inputs.{ id_name } " )[2 ]
321+ return id_name , value_from
310322 else :
311323 return get_literal_value (wf_expr ), None
312324 return id_name , f"self.{ member } " if member else None
313325
314326 def load_wdl_workflow (self , obj : WDL .Tree .Workflow ) -> cwl .Workflow :
315327 """Load WDL workflow and convert to CWL."""
316328 wf_name = obj .name
317- requirements : List [cwl .ProcessRequirement ] = []
329+ requirements : List [cwl .ProcessRequirement ] = [cwl . InlineJavascriptRequirement () ]
318330 inputs = self .get_cwl_workflow_inputs (obj .available_inputs , obj .parameter_meta )
319331 outputs = [
320332 cwl .WorkflowOutputParameter (
0 commit comments