Files
wehub-resource-sync 41b710f9c7
CI / Frontend checks (push) Failing after 0s
CI / Backend tests (push) Failing after 1s
I18n Documentation Sync / sync-docs (push) Failing after 0s
chore: import upstream snapshot with attribution
2026-07-13 12:28:40 +08:00

78 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PYTHON_BIN="${PYTHON_BIN:-${ROOT_DIR}/venv/bin/python}"
VERIFY_DATA_DIR="${AUTOCLIP_DATA_DIR:-/private/tmp/autoclip-desktop-verify-data}"
export VERIFY_DATA_DIR
if [[ ! -x "${PYTHON_BIN}" ]]; then
PYTHON_BIN="python3"
fi
export PYTHON_BIN
cd "${ROOT_DIR}/src-tauri"
cargo check
cd "${ROOT_DIR}"
"${PYTHON_BIN}" - <<'PY'
import os
import json
import select
import subprocess
import time
from urllib.request import urlopen
python = os.environ.get("PYTHON_BIN") or "python3"
env = os.environ.copy()
env["AUTOCLIP_DESKTOP_MODE"] = "true"
env["AUTOCLIP_MODE"] = "desktop"
env.setdefault("AUTOCLIP_APP_DIR", os.environ["VERIFY_DATA_DIR"])
env.setdefault("AUTOCLIP_DATA_DIR", os.environ["VERIFY_DATA_DIR"])
proc = subprocess.Popen(
[python, "-m", "backend.desktop_main"],
cwd=".",
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
text=True,
env=env,
)
port = None
try:
deadline = time.time() + 25
while time.time() < deadline:
ready, _, _ = select.select([proc.stdout], [], [], 0.5)
if ready:
line = proc.stdout.readline()
if line:
print(line, end="")
if line.startswith("PORT="):
port = int(line.split("=", 1)[1])
break
if line.startswith("BACKEND_ERROR="):
raise RuntimeError(line.strip())
if proc.poll() is not None:
break
if port is None:
raise RuntimeError("desktop backend did not report a port")
with urlopen(f"http://127.0.0.1:{port}/health", timeout=5) as response:
print("HEALTH=" + response.read().decode("utf-8"))
with urlopen(f"http://127.0.0.1:{port}/api/v1/video-categories", timeout=5) as response:
categories = json.loads(response.read().decode("utf-8"))
if "categories" not in categories or "default_category" not in categories:
raise RuntimeError(f"invalid video categories response: {categories}")
print(f"VIDEO_CATEGORIES={len(categories['categories'])}")
finally:
proc.terminate()
try:
proc.wait(timeout=5)
except subprocess.TimeoutExpired:
proc.kill()
proc.wait()
PY