Hello, CWL community!
Question, in short: Is there a clean way to use cwltool or some other runner to go through execution environment setup steps, without executing the actual base command?
Some context. What I would like to achieve is starting an interactive shell in the execution environment that the tool’s command would be run in, analogous to a venv’s “activate”. Conceptually, I’m thinking of a feature where the runner skips the input/output validation and binding, still prepares the workdir and salient requirements, and runs bash or similar in interactive mode.
To offer some more background, our team has been relying on containers to provide ‘easy’ access pretty gnarly software tools. As we’re moving to rely more on CWL, we have also started to move some of the environment setup out of the dockerfile and into the CWL tool description, relying on the cwltool runner to do some of the prep (e.g. InitialWorkDirRequirement to instruct the runner to do the mount/bind). That also means that the previous functionality of ‘activating’ a tool by simply attaching the user to the underlying tool container image no longer works, as various setup logic has been moved into the cwl runner.
cwltool has overrides for requirements and targets for workflow steps, but I don’t see a way to make that work for what I’m trying to achieve. Am I missing something obvious? Is there some easy way to make this work beyond: a) maintaining a parallel cwl tool description (not ideal) or b) adding the feature to cwltool ourselves?
Thanks!