mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-09-06 16:07:01 +08:00
chore(workflow): follow stable toolchain channels
This commit is contained in:
@@ -16,7 +16,7 @@ SUPERUSER=""
|
||||
SUPERUSER_PASSWORD=""
|
||||
OS_NAME="Unknown"
|
||||
PYTHON_BIN=""
|
||||
UV_VERSION="0.12.5"
|
||||
MIN_UV_VERSION="0.12.5"
|
||||
BREW_BIN=""
|
||||
PACKAGE_MANAGER=""
|
||||
PACKAGE_INDEX_UPDATED="false"
|
||||
@@ -384,20 +384,43 @@ ensure_base_tools() {
|
||||
fi
|
||||
}
|
||||
|
||||
uv_version_supported() {
|
||||
local actual="$1"
|
||||
local minimum="$2"
|
||||
local -a actual_parts minimum_parts
|
||||
local index actual_part minimum_part
|
||||
|
||||
IFS=. read -r -a actual_parts <<< "$actual"
|
||||
IFS=. read -r -a minimum_parts <<< "$minimum"
|
||||
for index in 0 1 2; do
|
||||
actual_part="${actual_parts[$index]:-0}"
|
||||
minimum_part="${minimum_parts[$index]:-0}"
|
||||
[[ "$actual_part" =~ ^[0-9]+$ ]] || return 1
|
||||
[[ "$minimum_part" =~ ^[0-9]+$ ]] || return 1
|
||||
if (( 10#$actual_part > 10#$minimum_part )); then
|
||||
return 0
|
||||
fi
|
||||
if (( 10#$actual_part < 10#$minimum_part )); then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
return 0
|
||||
}
|
||||
|
||||
ensure_uv() {
|
||||
if command -v uv >/dev/null 2>&1 \
|
||||
&& [[ "$(uv --version 2>/dev/null | awk '{print $2}')" == "${UV_VERSION}" ]]; then
|
||||
&& uv_version_supported "$(uv --version 2>/dev/null | awk '{print $2}')" "${MIN_UV_VERSION}"; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo "==> 自动安装 uv ${UV_VERSION}"
|
||||
env UV_INSTALL_DIR="$HOME/.local/bin" sh -c "$(curl -LsSf "https://astral.sh/uv/${UV_VERSION}/install.sh")"
|
||||
echo "==> 自动安装最新稳定版 uv"
|
||||
env UV_INSTALL_DIR="$HOME/.local/bin" sh -c "$(curl -LsSf https://astral.sh/uv/install.sh)"
|
||||
export PATH="$HOME/.local/bin:$PATH"
|
||||
hash -r
|
||||
|
||||
if ! command -v uv >/dev/null 2>&1 \
|
||||
|| [[ "$(uv --version 2>/dev/null | awk '{print $2}')" != "${UV_VERSION}" ]]; then
|
||||
echo "uv ${UV_VERSION} 安装失败,无法继续自动安装 Python。" >&2
|
||||
|| ! uv_version_supported "$(uv --version 2>/dev/null | awk '{print $2}')" "${MIN_UV_VERSION}"; then
|
||||
echo "uv ${MIN_UV_VERSION}+ 安装失败,无法继续自动安装 Python。" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
+16
-6
@@ -9,8 +9,8 @@ import importlib.util
|
||||
import json
|
||||
import os
|
||||
import platform
|
||||
import secrets
|
||||
import re
|
||||
import secrets
|
||||
import shlex
|
||||
import shutil
|
||||
import subprocess
|
||||
@@ -36,7 +36,8 @@ NODE_DIR = RUNTIME_DIR / "node"
|
||||
INSTALL_ENV_FILE = ROOT / ".moviepilot.env"
|
||||
MIN_PYTHON_VERSION = (3, 14)
|
||||
SUPPORTED_PYTHON_TEXT = "Python 3.14+"
|
||||
UV_VERSION = "0.12.5"
|
||||
MIN_UV_VERSION = (0, 12, 5)
|
||||
MIN_UV_VERSION_TEXT = ".".join(str(part) for part in MIN_UV_VERSION)
|
||||
|
||||
CONFIG_DIR = LEGACY_CONFIG_DIR
|
||||
LOG_DIR = CONFIG_DIR / "logs"
|
||||
@@ -618,18 +619,27 @@ def get_venv_bin_dir(venv_dir: Path) -> Path:
|
||||
return venv_dir / "bin"
|
||||
|
||||
|
||||
def parse_uv_version(output: str) -> tuple[int, int, int] | None:
|
||||
"""从 uv 版本输出中提取稳定版三段版本号。"""
|
||||
match = re.match(r"^uv\s+(\d+)\.(\d+)\.(\d+)(?:\s|$)", output.strip())
|
||||
if not match:
|
||||
return None
|
||||
return tuple(int(part) for part in match.groups())
|
||||
|
||||
|
||||
def require_uv() -> Path:
|
||||
"""返回仓库要求版本的 uv,避免不同安装入口使用不同解析器。"""
|
||||
"""返回满足仓库最低版本要求的 uv。"""
|
||||
uv_command = shutil.which("uv")
|
||||
if not uv_command:
|
||||
raise RuntimeError(
|
||||
f"未找到 uv {UV_VERSION},请先安装后重新执行。"
|
||||
f"未找到 uv {MIN_UV_VERSION_TEXT}+,请先安装后重新执行。"
|
||||
)
|
||||
uv_bin = Path(uv_command).expanduser().resolve()
|
||||
version = capture([str(uv_bin), "--version"])
|
||||
if version.split()[:2] != ["uv", UV_VERSION]:
|
||||
parsed_version = parse_uv_version(version)
|
||||
if parsed_version is None or parsed_version < MIN_UV_VERSION:
|
||||
raise RuntimeError(
|
||||
f"MoviePilot 需要 uv {UV_VERSION},当前为 {version or '未知版本'}。"
|
||||
f"MoviePilot 需要 uv {MIN_UV_VERSION_TEXT}+,当前为 {version or '未知版本'}。"
|
||||
)
|
||||
return uv_bin
|
||||
|
||||
|
||||
Reference in New Issue
Block a user