diff --git a/setup-opencode/action.yml b/setup-opencode/action.yml index c4b8da1..49813b7 100644 --- a/setup-opencode/action.yml +++ b/setup-opencode/action.yml @@ -160,12 +160,20 @@ runs: run: | PACKAGE="${{ inputs.package-name }}" TARGET_VERSION="${{ steps.resolve-version.outputs.version }}" + GLOBAL_ROOT="${{ steps.npm-paths.outputs.global-root }}" NEED_INSTALL="true" - if command -v $PACKAGE &> /dev/null; then - # 使用 JSON 格式获取版本信息,更可靠 - INSTALLED_INFO=$(npm list -g $PACKAGE --json --depth=0 2>/dev/null || echo '{}') - INSTALLED_VERSION=$(echo "${INSTALLED_INFO}" | grep -o '"version":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "unknown") + # 检查包目录是否存在(更可靠,不依赖命令名) + PACKAGE_DIR="${GLOBAL_ROOT}/${PACKAGE}" + + if [[ -d "${PACKAGE_DIR}" ]]; then + # 从 package.json 获取版本 + PACKAGE_JSON="${PACKAGE_DIR}/package.json" + if [[ -f "${PACKAGE_JSON}" ]]; then + INSTALLED_VERSION=$(grep -o '"version"[[:space:]]*:[[:space:]]*"[^"]*"' "${PACKAGE_JSON}" | head -1 | cut -d'"' -f4 || echo "unknown") + else + INSTALLED_VERSION="unknown" + fi echo "📦 已安装版本: ${INSTALLED_VERSION}" echo "🎯 目标版本: ${TARGET_VERSION}"