From 6789baf675a82a184d786570f308b7f0796828fc Mon Sep 17 00:00:00 2001 From: Lyda <1829913225@qq.com> Date: Tue, 17 Mar 2026 16:42:24 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=20setup-opencode=20ac?= =?UTF-8?q?tion=20=E7=89=88=E6=9C=AC=E6=A3=80=E6=B5=8B=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E7=94=A8=20opencode=20--version=20=E5=91=BD?= =?UTF-8?q?=E4=BB=A4=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 版本检测改用 opencode --version 命令直接获取,避免 npm list 可能的不准确 - 支持多种版本输出格式:优先提取语义化版本号,失败则使用原始输出 - 添加命令可用性检测,opencode 不可用时回退到已解析版本号 - 优化错误提示,明确显示使用的版本来源 --- setup-opencode/action.yml | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/setup-opencode/action.yml b/setup-opencode/action.yml index 23547d4..c4b8da1 100644 --- a/setup-opencode/action.yml +++ b/setup-opencode/action.yml @@ -228,18 +228,24 @@ runs: id: get-version shell: bash run: | - PACKAGE="${{ inputs.package-name }}" - - # 使用 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}" + # 直接从 opencode 命令获取版本 + if command -v opencode &> /dev/null; then + VERSION=$(opencode --version 2>/dev/null | head -n1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' || echo "unknown") + + if [[ "${VERSION}" != "unknown" ]]; then + echo "version=${VERSION}" >> $GITHUB_OUTPUT + echo "✅ OpenCode 版本: ${VERSION}" + else + # 如果命令输出格式不同,尝试直接输出 + VERSION=$(opencode --version 2>/dev/null | head -n1 || echo "unknown") + echo "version=${VERSION}" >> $GITHUB_OUTPUT + echo "✅ OpenCode 版本: ${VERSION}" + fi else - echo "version=unknown" >> $GITHUB_OUTPUT - echo "⚠️ 无法获取 OpenCode 版本" + # 备用方案:使用已解析的版本号 + VERSION="${{ steps.resolve-version.outputs.version }}" + echo "version=${VERSION}" >> $GITHUB_OUTPUT + echo "⚠️ opencode 命令不可用,使用已解析版本: ${VERSION}" fi - name: 检查更新状态