diff --git a/setup-opencode/action.yml b/setup-opencode/action.yml index c50ee6a..7e0529d 100644 --- a/setup-opencode/action.yml +++ b/setup-opencode/action.yml @@ -221,12 +221,25 @@ runs: run: | PACKAGE="${{ inputs.package-name }}" - if command -v $PACKAGE &> /dev/null; then + # 通过 npm list 检查包是否安装,而不是检查命令(因为包名和命令名可能不同) + 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 "") + + if [[ -n "${INSTALLED_VERSION}" ]]; then echo "install-verified=true" >> $GITHUB_OUTPUT - echo "✅ 安装验证成功" + echo "✅ 安装验证成功 - 版本: ${INSTALLED_VERSION}" + + # 尝试查找实际的命令名 + BIN_DIR="${{ steps.npm-paths.outputs.prefix }}/bin" + if [[ -d "${BIN_DIR}" ]]; then + COMMANDS=$(ls -1 "${BIN_DIR}" 2>/dev/null | grep -i opencode || echo "") + if [[ -n "${COMMANDS}" ]]; then + echo "📦 可用命令: ${COMMANDS}" + fi + fi else echo "install-verified=false" >> $GITHUB_OUTPUT - echo "❌ 安装验证失败" + echo "❌ 安装验证失败 - 未找到包 ${PACKAGE}" exit 1 fi @@ -246,16 +259,11 @@ runs: run: | PACKAGE="${{ inputs.package-name }}" - if command -v $PACKAGE &> /dev/null; then - # 使用 JSON 格式获取版本,更可靠 - INSTALLED_INFO=$(npm list -g $PACKAGE --json --depth=0 2>/dev/null || echo '{}') - VERSION=$(echo "${INSTALLED_INFO}" | grep -o '"version":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "unknown") - - if [[ "${VERSION}" == "unknown" ]]; then - # 备用方案:直接运行命令获取版本 - VERSION=$($PACKAGE --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || echo "unknown") - fi - + # 使用 JSON 格式获取版本,更可靠 + INSTALLED_INFO=$(npm list -g $PACKAGE --json --depth=0 2>/dev/null || echo '{}') + VERSION=$(echo "${INSTALLED_INFO}" | grep -o '"version":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "unknown") + + if [[ "${VERSION}" != "unknown" ]]; then echo "version=${VERSION}" >> $GITHUB_OUTPUT echo "✅ OpenCode 版本: ${VERSION}" else