Files
2026-07-12 21:26:08 +08:00

84 lines
2.8 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 共享配置:被 install.sh / hook-session-start.sh / cache.sh / delete-helper.sh 等引用
# 微信公众号提取工具的 Git 仓库地址
WECHAT_TOOL_URL="git+https://github.com/jackwener/wechat-article-to-markdown.git"
# Python 命令检测:Windows 默认安装为 python.exe,不存在 python3 命令
# Microsoft Store 的 python3 是安装提示 stub,运行会失败)
_python_version_check='import sys; sys.exit(0 if sys.version_info >= (3, 8) else 1)'
_python_cmd_is_valid() {
local candidate="$1"
command -v "$candidate" >/dev/null 2>&1 && "$candidate" -c "$_python_version_check" >/dev/null 2>&1
}
_detect_python_cmd() {
# 要求 Python 3.8+(见 README Windows 小节与下方错误消息)
if _python_cmd_is_valid python3; then
echo "python3"
elif _python_cmd_is_valid python; then
echo "python"
else
echo ""
fi
}
require_python_cmd() {
local detected_cmd
if [ "${PYTHON_CMD_READY:-0}" = "1" ]; then
return 0
fi
if [ -n "${PYTHON_CMD:-}" ] && _python_cmd_is_valid "$PYTHON_CMD"; then
export PYTHON_CMD
PYTHON_CMD_READY=1
return 0
fi
detected_cmd="$(_detect_python_cmd)"
if [ -z "$detected_cmd" ]; then
echo "[llm-wiki] 错误:找不到可用的 Python 3,请先安装 Python 3.8+ 并加入 PATH" >&2
return 1
fi
PYTHON_CMD="$detected_cmd"
export PYTHON_CMD
PYTHON_CMD_READY=1
}
# 统一 Python 子进程 stdout/stderr 编码为 UTF-8
# Windows 中文环境下 Python 无 TTY 时 sys.stdout.encoding 默认 gbk (cp936)
# 会导致 Agent 通过 subprocess 读取的 JSON / 输出出现乱码 (issue #16)
export PYTHONIOENCODING="${PYTHONIOENCODING:-utf-8}"
# 输出指定工具的跨平台安装提示,缩进 2 空格便于嵌套在 ERROR 消息下;
# 输出走 stderr,与 ERROR 消息保持同一通道。
print_install_hint() {
local tool="$1"
case "$tool" in
jq)
echo " macOS: brew install jq" >&2
echo " Linux/WSL: sudo apt-get install jq (Debian/Ubuntu)" >&2
echo " sudo dnf install jq (RHEL/Fedora)" >&2
echo " Windows: winget install jqlang.jq (or choco install jq)" >&2
;;
node)
echo " macOS: brew install node" >&2
echo " Linux/WSL: sudo apt-get install nodejs npm" >&2
echo " Windows: winget install OpenJS.NodeJS (or choco install nodejs)" >&2
;;
uv)
echo " macOS/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh (official)" >&2
echo " brew install uv (alternative)" >&2
echo " Windows: powershell -c \"irm https://astral.sh/uv/install.ps1 | iex\" (official)" >&2
echo " winget install --id=astral-sh.uv -e (alternative)" >&2
;;
*)
echo " unknown tool: $tool" >&2
return 1
;;
esac
}