fix: 优化 setup-opencode action 版本检测逻辑,改用 opencode --version 命令获取
- 版本检测改用 opencode --version 命令直接获取,避免 npm list 可能的不准确 - 支持多种版本输出格式:优先提取语义化版本号,失败则使用原始输出 - 添加命令可用性检测,opencode 不可用时回退到已解析版本号 - 优化错误提示,明确显示使用的版本来源
This commit is contained in:
+17
-11
@@ -228,18 +228,24 @@ runs:
|
|||||||
id: get-version
|
id: get-version
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
PACKAGE="${{ inputs.package-name }}"
|
# 直接从 opencode 命令获取版本
|
||||||
|
if command -v opencode &> /dev/null; then
|
||||||
# 使用 JSON 格式获取版本,更可靠
|
VERSION=$(opencode --version 2>/dev/null | head -n1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' || echo "unknown")
|
||||||
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
|
||||||
if [[ "${VERSION}" != "unknown" ]]; then
|
echo "✅ OpenCode 版本: ${VERSION}"
|
||||||
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
else
|
||||||
echo "✅ OpenCode 版本: ${VERSION}"
|
# 如果命令输出格式不同,尝试直接输出
|
||||||
|
VERSION=$(opencode --version 2>/dev/null | head -n1 || echo "unknown")
|
||||||
|
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
||||||
|
echo "✅ OpenCode 版本: ${VERSION}"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo "version=unknown" >> $GITHUB_OUTPUT
|
# 备用方案:使用已解析的版本号
|
||||||
echo "⚠️ 无法获取 OpenCode 版本"
|
VERSION="${{ steps.resolve-version.outputs.version }}"
|
||||||
|
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
||||||
|
echo "⚠️ opencode 命令不可用,使用已解析版本: ${VERSION}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: 检查更新状态
|
- name: 检查更新状态
|
||||||
|
|||||||
Reference in New Issue
Block a user