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: 检查更新状态