mirror of
https://github.com/RYDE-WORK/ballistica.git
synced 2026-01-19 21:37:57 +08:00
46 lines
1.5 KiB
Python
Executable File
46 lines
1.5 KiB
Python
Executable File
#!/usr/bin/env python3.12
|
|
# Released under the MIT License. See LICENSE for details.
|
|
#
|
|
"""Command line wrapper for the spinoff system."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
|
|
if __name__ == '__main__':
|
|
from batools.spinoff import spinoff_main
|
|
|
|
# Our initial invocation actually just sets up the env for our
|
|
# *real* invocation (so we can run under our desired venv/etc.)
|
|
if os.environ.get('BA_SPINOFF_HAVE_ENV') != '1':
|
|
|
|
# Our shebang line gives us a generic 'pythonX.Y' environment, but
|
|
# we actually want to run under the virtual-env of the source
|
|
# project so we have all the pip stuff we expect. So if we are
|
|
# getting invoked via a symlink we assume it points to the source
|
|
# project, and if not then we assume we are the source project.
|
|
if os.path.islink(sys.argv[0]):
|
|
src_spinoff_path = os.path.realpath(sys.argv[0])
|
|
else:
|
|
src_spinoff_path = sys.argv[0]
|
|
|
|
src_proj_root = os.path.abspath(
|
|
os.path.join(os.path.dirname(src_spinoff_path), '..')
|
|
)
|
|
src_proj_python = os.path.join(src_proj_root, '.venv/bin/python3.12')
|
|
|
|
cmd = [src_proj_python, sys.argv[0]] + sys.argv[1:]
|
|
|
|
# Make sure the src project is properly bootstrapped.
|
|
subprocess.run(['make', 'prereqs'], check=True, cwd=src_proj_root)
|
|
|
|
# Finally, run for realz.
|
|
subprocess.run(
|
|
cmd, check=True, env=dict(os.environ, BA_SPINOFF_HAVE_ENV='1')
|
|
)
|
|
|
|
else:
|
|
spinoff_main()
|