40 lines
1.2 KiB
Bash
Executable File
40 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# Create the runtime venv, then register the launchd service and client hooks.
|
||
set -euo pipefail
|
||
|
||
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
||
HOME_DIR="${LAYA_ROUTER_HOME:-$HOME/.laya-router}"
|
||
|
||
if [[ "$(uname -s)" != "Darwin" ]]; then
|
||
echo "当前安装脚本只支持 macOS(launchd)。" >&2
|
||
exit 1
|
||
fi
|
||
|
||
if ! command -v uv >/dev/null 2>&1; then
|
||
echo "需要 uv。安装: https://docs.astral.sh/uv/getting-started/installation/" >&2
|
||
exit 1
|
||
fi
|
||
|
||
mkdir -p "$HOME_DIR"
|
||
|
||
if [[ ! -x "$HOME_DIR/.venv/bin/python" ]]; then
|
||
created=0
|
||
for version in 3.13 3.12 3.11 3.10; do
|
||
rm -rf "$HOME_DIR/.venv"
|
||
if uv venv "$HOME_DIR/.venv" --python "$version"; then
|
||
created=1
|
||
break
|
||
fi
|
||
done
|
||
if [[ "$created" -ne 1 ]]; then
|
||
echo "需要 Python 3.10 或更高版本。可先执行: uv python install 3.13" >&2
|
||
exit 1
|
||
fi
|
||
fi
|
||
|
||
# Install a real copy. An editable install points at this repo, which often lives
|
||
# under ~/Documents. launchd then blocks forever in open() on that directory.
|
||
uv pip install --python "$HOME_DIR/.venv/bin/python" --reinstall-package laya-router "$ROOT"
|
||
printf '%s\n' "$ROOT" > "$HOME_DIR/source.path"
|
||
exec "$HOME_DIR/.venv/bin/laya-router" install "$@"
|