Hey guys, is it possible to replace an already reg...
# plugins
s
Hey guys, is it possible to replace an already registered rule with another one? Something like
unittest.mock.patch
for rules?
I want to generate a Dockerfile for docker_image. But docker backend has already defined
class GenerateDockerfileRequest(GenerateSourcesRequest):
for
DockerImageSourceField
and the corresponding rule
async def hydrate_dockerfile(request: GenerateDockerfileRequest) -> GeneratedSources:
. So I need to disable it and add my own rule with different logic.
I managed to make it work, but it's kinda ugly. I had to disable the whole docker backend and then I've added all docker rules except for the ones that I don't need:
Copy code
def rules():
    docker_rules = pants.backend.docker.register.rules()
    dockerfile_rules = pants.backend.docker.util_rules.dockerfile.rules()
    keep_rules = [r for r in docker_rules if r not in dockerfile_rules]
    new_rules = experimental.docker.target_types.rules()
    return [*keep_rules, *new_rules]
Do you know any better way?
g
This is very interesting. I’m interested to know as well.