Default: run directly. --build: save only. --save: save and run
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
import tempfile
|
||||||
|
import os
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
||||||
from .transpiler import transpile
|
from .transpiler import transpile
|
||||||
@@ -31,14 +33,14 @@ def main():
|
|||||||
|
|
||||||
generated_code = transpile(code)
|
generated_code = transpile(code)
|
||||||
|
|
||||||
generated_path = file_path.with_suffix(".generated.py")
|
if args.build:
|
||||||
|
generated_path = file_path.with_suffix(".generated.py")
|
||||||
# Always save generated file
|
generated_path.write_text(generated_code, encoding="utf-8")
|
||||||
generated_path.write_text(generated_code, encoding="utf-8")
|
print(f"Generated: {generated_path.name}")
|
||||||
print(f"Generated: {generated_path.name}")
|
elif args.save:
|
||||||
|
generated_path = file_path.with_suffix(".generated.py")
|
||||||
# Run if not --build
|
generated_path.write_text(generated_code, encoding="utf-8")
|
||||||
if not args.build:
|
print(f"Generated: {generated_path.name}")
|
||||||
result = subprocess.run(
|
result = subprocess.run(
|
||||||
[sys.executable, str(generated_path)],
|
[sys.executable, str(generated_path)],
|
||||||
capture_output=True,
|
capture_output=True,
|
||||||
@@ -47,6 +49,22 @@ def main():
|
|||||||
if result.returncode != 0:
|
if result.returncode != 0:
|
||||||
print(result.stderr, file=sys.stderr)
|
print(result.stderr, file=sys.stderr)
|
||||||
sys.exit(result.returncode)
|
sys.exit(result.returncode)
|
||||||
|
else:
|
||||||
|
# Default: run directly without saving
|
||||||
|
with tempfile.NamedTemporaryFile(mode="w", suffix=".py", delete=False, encoding="utf-8") as f:
|
||||||
|
f.write(generated_code)
|
||||||
|
temp_path = f.name
|
||||||
|
try:
|
||||||
|
result = subprocess.run(
|
||||||
|
[sys.executable, temp_path],
|
||||||
|
capture_output=True,
|
||||||
|
text=True
|
||||||
|
)
|
||||||
|
if result.returncode != 0:
|
||||||
|
print(result.stderr, file=sys.stderr)
|
||||||
|
sys.exit(result.returncode)
|
||||||
|
finally:
|
||||||
|
os.unlink(temp_path)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user