Source code
Revision control
Copy as Markdown
Other Tools
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
from taskgraph.transforms.base import TransformSequence
from taskgraph.util.cached_tasks import add_optimization
from taskgraph.util.dependencies import get_primary_dependency
transforms = TransformSequence()
@transforms.add
def copy_cached_dep(config, tasks):
"""Ensure this task is replaced anytime the primary dep is."""
# This transform is a bit of a hack to work around the fact that
# the `if-dependencies` feature doesn't work with tasks that get
# optimized by replacement.
for task in tasks:
primary_dep = get_primary_dependency(config, task)
if primary_dep and "cached_task" in primary_dep.attributes:
add_optimization(
config,
task,
f"{config.kind}.v1",
task["name"],
digest=primary_dep.attributes["cached_task"]["digest"],
)
yield task