I’m very new to CWL, so hopefully this is not too stupid a question. I have a program that receives “instructions” on stdin, as such: mtzutils in foo.mtz out bar.mtz <<< "resolution 3.0"
. To model this in CWL, I wrote the following (self-contained) cwl file:
#!/usr/bin/env cwl-runner
cwlVersion: v1.0
class: CommandLineTool
baseCommand: mtzutils
hints:
DockerRequirement:
dockerPull: pegi3s/ccp4
requirements:
InitialWorkDirRequirement:
listing:
- entryname: keywords.txt
entry: $(inputs.keywords)
inputs:
input_mtz:
type: File
inputBinding:
position: 0
prefix: hklin
output_mtz:
type: string
inputBinding:
position: 1
prefix: hklout
keywords:
type: string
stdin: keywords.txt
outputs:
output_mtz:
type: File
outputBinding:
glob: $(inputs.output_mtz)
As you can see, I’m generating a file keywords.txt
using the InitialWorkDirRequirement
and then feeding that to stdin
.
When I run this with, for instance, this workflow yaml file:
input_mtz:
class: File
path: foo.mtz
output_mtz: output.mtz
keywords: |
resolution 3.0
using cwl-runner foo.cwl foo.yml
, I get:
keywords.txt missing from pathmapper
This happens with the toil-cwl-runner as well. The command looks fine to me otherwise.
Anything I’ve missed?