able-match-78954
01/06/2022, 8:09 AMimport logging
from dataclasses import asdict, dataclass
from pants.backend.docker.goals.package_image import DockerFieldSet
from pants.backend.docker.target_types import DockerImageTagsField
from pants.core.goals.package import PackageFieldSet
from pants.engine.rules import collect_rules, rule
from pants.engine.unions import UnionRule
from python_plugins.custom_setup_py import determine_version_from_git
logger = logging.getLogger(__name__)
@dataclass(frozen=True)
class CustomDockerFieldSet(DockerFieldSet):
...
@rule
async def custom_docker_tags(request: CustomDockerFieldSet) -> DockerFieldSet:
version = determine_version_from_git(
package_name=request.address.target_name,
build_file_path=request.address.spec_path
)
return DockerFieldSet(
**{
**asdict(request),
'tags': DockerImageTagsField(
raw_value=[
# 'latest',
str(version)
],
address=request.address
)
}
)
def rules():
return [
*collect_rules(),
UnionRule(PackageFieldSet, CustomDockerFieldSet),
]
curved-television-6568
01/06/2022, 8:18 AMable-match-78954
01/06/2022, 8:25 AMable-match-78954
01/06/2022, 8:45 AM