summaryrefslogtreecommitdiffstats
path: root/third_party/python/taskcluster_taskgraph/taskgraph/util/parameterization.py
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/python/taskcluster_taskgraph/taskgraph/util/parameterization.py')
-rw-r--r--third_party/python/taskcluster_taskgraph/taskgraph/util/parameterization.py21
1 files changed, 12 insertions, 9 deletions
diff --git a/third_party/python/taskcluster_taskgraph/taskgraph/util/parameterization.py b/third_party/python/taskcluster_taskgraph/taskgraph/util/parameterization.py
index 6233a98a40..1973f6f7df 100644
--- a/third_party/python/taskcluster_taskgraph/taskgraph/util/parameterization.py
+++ b/third_party/python/taskcluster_taskgraph/taskgraph/util/parameterization.py
@@ -20,6 +20,12 @@ def _recurse(val, param_fns):
if len(val) == 1:
for param_key, param_fn in param_fns.items():
if set(val.keys()) == {param_key}:
+ if isinstance(val[param_key], dict):
+ # handle `{"task-reference": {"<foo>": "bar"}}`
+ return {
+ param_fn(key): recurse(v)
+ for key, v in val[param_key].items()
+ }
return param_fn(val[param_key])
return {k: recurse(v) for k, v in val.items()}
else:
@@ -74,17 +80,14 @@ def resolve_task_references(label, task_def, task_id, decision_task_id, dependen
task_id = dependencies[dependency]
except KeyError:
raise KeyError(
- "task '{}' has no dependency named '{}'".format(
- label, dependency
- )
+ f"task '{label}' has no dependency named '{dependency}'"
)
- assert artifact_name.startswith(
- "public/"
- ), "artifact-reference only supports public artifacts, not `{}`".format(
- artifact_name
- )
- return get_artifact_url(task_id, artifact_name)
+ use_proxy = False
+ if not artifact_name.startswith("public/"):
+ use_proxy = True
+
+ return get_artifact_url(task_id, artifact_name, use_proxy=use_proxy)
return ARTIFACT_REFERENCE_PATTERN.sub(repl, val)