diff --git a/src/asyncapi_python_pants/rules.py b/src/asyncapi_python_pants/rules.py index 9493766..56cd5b1 100644 --- a/src/asyncapi_python_pants/rules.py +++ b/src/asyncapi_python_pants/rules.py @@ -1,4 +1,3 @@ -from importlib.metadata import version from pants.engine.internals.native_engine import ( Digest, MergeDigests, @@ -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, ) @@ -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( @@ -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}", ],