CWL input files as secondaryFiles JS

I am using CWL, just got a fresh install of cwltool (cwl-runner says its version 2.0) and the way I always used to specify secondaryFiles doesn’t work anymore, especially:

inputs:
  - id: reference_fasta
    type: File
    inputBinding:
      position: 1
      prefix: '--reference'
    secondaryFiles:
      - $( inputs.reference_index )
      - $( inputs.reference_dict )
  - id: reference_index
    type: File
  - id: reference_dict
    type: File

does not recognize $( inputs.file ) format anymore, it keeps failing with:

ERROR Workflow error: can only concatenate str (not “dict”) to str

Any idea?

Hello @cccnrc

I was not able to reproduce your error, sorry.

cwl-runner is just a shortcut to some CWL aware workflow engine or another. Most often it points to the CWL reference runner cwltool. What is your version of cwltool?

pip show cwltool

Here is what I tried:

$ cat 330.cwl 
cwlVersion: v1.0
class: CommandLineTool
inputs:
  - id: reference_fasta
    type: File
    inputBinding:
      position: 1
      prefix: '--reference'
    secondaryFiles:
      - $( inputs.reference_index )
      - $( inputs.reference_dict )
  - id: reference_index
    type: File
  - id: reference_dict
    type: File

baseCommand: []
outputs: []

$ cwltool --validate 330.cwl
INFO /home/michael/cwltool/env3.9/bin/cwltool 3.0.20210319143721
INFO Resolved '330.cwl' to 'file:///home/michael/cwltool/330.cwl'
330.cwl is valid CWL.