import os
import sys
import platform
import subprocess
from pathlib import Path
_PKG_ROOT = Path(__file__).parent.parent.parent
def _platform_bin() -> Path:
plat = sys.platform arch = platform.machine().lower()
if arch in ("amd64", "x86_64"):
arch = "x86_64"
ext = ".exe" if plat == "win32" else ""
return _PKG_ROOT / "bin" / f"yana-rt-{plat}-{arch}{ext}"
def _find_binary() -> str | None:
if override := os.environ.get("YANA_RT_BIN"):
return override
import shutil
if shutil.which("yana-rt"):
return "yana-rt"
pb = _platform_bin()
if pb.exists() and os.access(pb, os.X_OK):
return str(pb)
local = _PKG_ROOT / "target" / "release" / "yana-rt"
if local.exists() and os.access(local, os.X_OK):
return str(local)
return None
def main() -> None:
binary = _find_binary()
if binary is None:
print(
"yana-rt: binary not found.\n\n"
"To install, run one of:\n"
f" cargo install --path {_PKG_ROOT} # build from source (requires Rust)\n"
" export YANA_RT_BIN=/path/to/yana-rt",
file=sys.stderr,
)
sys.exit(1)
result = subprocess.run([binary] + sys.argv[1:])
sys.exit(result.returncode)
if __name__ == "__main__":
main()