"""Unified Orisys packaging entrypoint. Usage (from repo root): python build/run.py wheel [--target internal|pypi-linux] [--verify] python build/run.py wheel-win python build/run.py wheel-manylinux [PowerShell args...] python build/run.py gui finger|mini|box python build/run.py verify [wheel.whl] python build/run.py verify --gui-dist [--product ory_finger] See build/README.md for details. """ from __future__ import annotations import argparse import subprocess import sys from pathlib import Path _BUILD_ROOT = Path(__file__).resolve().parent _REPO_ROOT = _BUILD_ROOT.parent if str(_BUILD_ROOT) not in sys.path: sys.path.insert(0, str(_BUILD_ROOT)) def _run_python(script: Path, argv: list[str]) -> int: cmd = [sys.executable, str(script), *argv] return subprocess.call(cmd, cwd=_REPO_ROOT) def _cmd_wheel(argv: list[str]) -> int: return _run_python(_BUILD_ROOT / "wheel" / "build.py", argv) def _cmd_wheel_win(argv: list[str]) -> int: bat = _BUILD_ROOT / "wheel" / "win.bat" return subprocess.call(["cmd", "/c", str(bat), *argv], cwd=_REPO_ROOT) def _cmd_manylinux(argv: list[str]) -> int: ps1 = _BUILD_ROOT / "wheel" / "docker" / "run.ps1" cmd = [ "powershell", "-ExecutionPolicy", "Bypass", "-File", str(ps1), *argv, ] return subprocess.call(cmd, cwd=_REPO_ROOT) def _cmd_gui(argv: list[str]) -> int: parser = argparse.ArgumentParser(prog="build/run.py gui") parser.add_argument( "product", choices=("finger", "mini", "box", "ory_finger", "ory_mini", "ory_box"), help="GUI product to package", ) args, rest = parser.parse_known_args(argv) product = { "finger": "ory_finger", "mini": "ory_mini", "box": "ory_box", }.get(args.product, args.product) return _run_python(_BUILD_ROOT / "gui" / product / "build.py", rest) def _cmd_verify(argv: list[str]) -> int: from common.verify.cli import main as verify_main return verify_main(argv) def main(argv: list[str] | None = None) -> int: argv = list(sys.argv[1:] if argv is None else argv) if not argv or argv[0] in ("-h", "--help"): print(__doc__) print("Commands: wheel | wheel-win | manylinux | gui | verify") print("Examples:") print(" python build/run.py wheel --help") print(" python build/run.py gui finger") print(" python build/run.py manylinux -PythonVersions 3.10") return 0 command, rest = argv[0], argv[1:] dispatch = { "wheel": _cmd_wheel, "wheel-win": _cmd_wheel_win, "wheel-manylinux": _cmd_manylinux, "gui": _cmd_gui, "verify": _cmd_verify, } if command not in dispatch: print(f"Unknown command: {command!r}", file=sys.stderr) print("Choose from: wheel, wheel-win, manylinux, gui, verify", file=sys.stderr) return 2 return dispatch[command](rest) if __name__ == "__main__": raise SystemExit(main())