Files
wulkplot-translations/tools/translation_venv.py
2025-05-30 12:15:51 +02:00

44 lines
1.6 KiB
Python

import os
import subprocess
import sys
import shutil
from pathlib import Path
TRANSLATIONS_DIR = Path(__file__).resolve().parent.parent
VENV_DIR = TRANSLATIONS_DIR / ".venv-translations"
PYTHON_BIN = VENV_DIR / "Scripts" / "python.exe" if os.name == "nt" else VENV_DIR / "bin" / "python"
def create_venv():
print(f"[Setup] Creating virtual environment at {VENV_DIR}...")
subprocess.run([sys.executable, "-m", "venv", str(VENV_DIR)], check=True)
def install_pyqt6_tools():
print(f"[Setup] Installing pyqt6-tools in {VENV_DIR}...")
subprocess.run([str(PYTHON_BIN), "-m", "pip", "install", "--upgrade", "pip"], check=True)
subprocess.run([str(PYTHON_BIN), "-m", "pip", "install", "--pre", "pyqt6-tools"], check=True)
def run_pyqt6_tools_tool(args):
tool = ["qt6-tools"] + args
print(f"[Running] {' '.join(tool)}")
subprocess.run([str(PYTHON_BIN)] + ["-m"] + tool, check=True)
def main():
if not VENV_DIR.exists():
create_venv()
install_pyqt6_tools()
if not shutil.which("qt6-tools"):
print("[Info] Executing within virtual environment.")
run_pyqt6_tools_tool(sys.argv[1:])
else:
print("Unexpected: qt6-tools found globally, using system environment.")
if sys.argv[1] == "pylupdate6":
subprocess.run(sys.argv[1:], check=True)
else:
subprocess.run(["qt6-tools"] + sys.argv[1:], check=True)
if __name__ == "__main__":
if len(sys.argv) < 2:
print("Usage: python translation_venv.py [pylupdate6|lrelease|linguist] <args>")
sys.exit(1)
main()