Array arguments appears differently between cwl-runner and cromwell, why?

It makes it difficult to write the command line argument handling code.

With cwl-runner, it looks like this (space separated item)

INFO [job create-animation-from-image-sequence.cwl] /tmp/y9w8olek$ ffmpeg_wrapper.py \
    /tmp/9ucoug81/stg67a49050-7a34-492c-bd15-d3612ec615f3/monkey.0000.png \
    /tmp/9ucoug81/stg2fef3a44-68fd-4da8-9ade-12fe0d5c4a0a/monkey.0001.png \
    nicholas.mp4

With cromwell, it looks like this (as square bracket array)

[2021-02-23 15:18:29,56] [info] BackgroundConfigAsyncJobExecutionActor [46182cbdcwl_temp_file_46182cbd-9251-4ade-86c1-d82e8e1f6fb4.cwl:NA:1]: 'ffmpeg_wrapper.py' '["/data1/nyue/projects/workflow-languages_git/CWL/vfx/granular_steps/python/cromwell-executions/cwl_temp_file_46182cbd-9251-4ade-86c1-d82e8e1f6fb4.cwl/46182cbd-9251-4ade-86c1-d82e8e1f6fb4/call-cwl_temp_file_46182cbd-9251-4ade-86c1-d82e8e1f6fb4.cwl/inputs/-1025474270/monkey.0000.png", "/data1/nyue/projects/workflow-languages_git/CWL/vfx/granular_steps/python/cromwell-executions/cwl_temp_file_46182cbd-9251-4ade-86c1-d82e8e1f6fb4.cwl/46182cbd-9251-4ade-86c1-d82e8e1f6fb4/call-cwl_temp_file_46182cbd-9251-4ade-86c1-d82e8e1f6fb4.cwl/inputs/-1025474270/monkey.0001.png"]' 'nicholas.mp4'

I have the following code

class: CommandLineTool
inputs:
- id: imageSequence
  type: File[]
- id: renderedAnimation
  type: string
outputs:
- id: ffmpegAnimation
  type: File
  outputBinding:
    glob: '*.mp4'
requirements:
- class: InlineJavascriptRequirement
baseCommand: ffmpeg_wrapper.py
arguments:
- $(inputs.imageSequence)
- $(inputs.renderedAnimation)
successCodes:
- 0
cwlVersion: v1.0

Hmm section 5.1.2 talks about this Common Workflow Language (CWL) Command Line Tool Description, v1.0.2

My gut reaction is cromwell isn’t following spec. But reading spec makes me wonder if you put - valueFrom: $(inputs.imageSequence) if Cromwell would handle it as expected. Dunno if the spec is ambiguous about this.

1 Like