From 18976af2df42c2d73c78d8a8cd60cf57f89523d0 Mon Sep 17 00:00:00 2001 From: Peter Amstutz Date: Tue, 4 Jun 2024 09:47:19 -0400 Subject: [PATCH] 9964: Handle secondaryFiles and other special cases Sometimes we can't tell what we need ahead of time and just have to match everything. Arvados-DCO-1.1-Signed-off-by: Peter Amstutz --- sdk/cwl/arvados_cwl/arvtool.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/sdk/cwl/arvados_cwl/arvtool.py b/sdk/cwl/arvados_cwl/arvtool.py index 2bc97dea17..917eb0060a 100644 --- a/sdk/cwl/arvados_cwl/arvtool.py +++ b/sdk/cwl/arvados_cwl/arvtool.py @@ -12,6 +12,7 @@ from schema_salad.sourceline import SourceLine from cwltool.errors import WorkflowException from arvados.util import portable_data_hash_pattern from cwltool.utils import aslist +from cwltool.builder import substitute from typing import Sequence, Mapping @@ -93,7 +94,19 @@ class ArvadosCommandTool(CommandLineTool): if "outputBinding" in inputschema and "glob" in inputschema["outputBinding"]: for gb in aslist(inputschema["outputBinding"]["glob"]): - self.globpatterns.append(gb) + if gb == ".": + self.globpatterns.append("**") + else: + self.globpatterns.append(gb) + if "secondaryFiles" in inputschema: + for sf in aslist(inputschema["secondaryFiles"]): + if "$(" in sf["pattern"] or "${" in sf["pattern"]: + self.globpatterns.append("**") + else: + for gb in aslist(inputschema["outputBinding"]["glob"]): + subst = substitute(gb, sf["pattern"]) + self.globpatterns.append(subst) + def make_job_runner(self, runtimeContext): if runtimeContext.work_api == "containers": -- 2.30.2