Skip to content
13 changes: 7 additions & 6 deletions src/asyncapi_python_pants/rules.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
from importlib.metadata import version
from pants.engine.internals.native_engine import (
Digest,
MergeDigests,
Expand All @@ -16,7 +15,6 @@
from pants.engine.rules import rule, Get, MultiGet
from pants.engine.process import ProcessResult
from pants.source.source_root import SourceRoot, SourceRootRequest
from pants.backend.python.target_types import ConsoleScript
from pants.backend.python.util_rules.interpreter_constraints import (
InterpreterConstraints,
)
Expand All @@ -38,11 +36,9 @@ async def generate_python_from_asyncapi(
PexRequest(
output_filename="asyncapi-python-codegen.pex",
internal_only=True,
requirements=PexRequirements(
[f"asyncapi-python[codegen]=={version('asyncapi-python')}"]
),
requirements=PexRequirements([]),
interpreter_constraints=InterpreterConstraints([">=3.9"]),
main=ConsoleScript("asyncapi-python-codegen"),
# No main parameter - creates a REPL-style PEX
),
)
transitive_targets = await Get(
Expand All @@ -67,11 +63,16 @@ async def generate_python_from_asyncapi(
)
output_dir = "_generated_files"
module_name = request.protocol_target.address.target_name

# Use PexProcess to execute the PEX
result = await Get(
ProcessResult,
PexProcess(
pex,
argv=[
"-m",
"asyncapi_python_codegen", # Execute as module
"generate", # Your CLI command
request.protocol_target[AsyncapiServiceField].value or "",
f"{output_dir}/{module_name}",
],
Expand Down