fix: 优化 setup-opencode action 的包安装验证逻辑,使用 npm list 替代命令检测
- 安装验证改用 npm list 检查包是否存在,避免包名与命令名不一致导致的误判 - 验证成功时显示已安装版本号,并尝试列出 bin 目录中的可用命令 - 版本检测逻辑简化,统一使用 npm list JSON 输出获取版本信息 - 优化错误提示,明确显示未找到的包名 - 移除备用的命令行版本检测方案,统一使用 npm 元数据
This commit is contained in:
@@ -221,12 +221,25 @@ runs:
|
|||||||
run: |
|
run: |
|
||||||
PACKAGE="${{ inputs.package-name }}"
|
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 "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
|
else
|
||||||
echo "install-verified=false" >> $GITHUB_OUTPUT
|
echo "install-verified=false" >> $GITHUB_OUTPUT
|
||||||
echo "❌ 安装验证失败"
|
echo "❌ 安装验证失败 - 未找到包 ${PACKAGE}"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -246,16 +259,11 @@ runs:
|
|||||||
run: |
|
run: |
|
||||||
PACKAGE="${{ inputs.package-name }}"
|
PACKAGE="${{ inputs.package-name }}"
|
||||||
|
|
||||||
if command -v $PACKAGE &> /dev/null; then
|
|
||||||
# 使用 JSON 格式获取版本,更可靠
|
# 使用 JSON 格式获取版本,更可靠
|
||||||
INSTALLED_INFO=$(npm list -g $PACKAGE --json --depth=0 2>/dev/null || echo '{}')
|
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")
|
VERSION=$(echo "${INSTALLED_INFO}" | grep -o '"version":"[^"]*"' | head -1 | cut -d'"' -f4 || echo "unknown")
|
||||||
|
|
||||||
if [[ "${VERSION}" == "unknown" ]]; then
|
if [[ "${VERSION}" != "unknown" ]]; then
|
||||||
# 备用方案:直接运行命令获取版本
|
|
||||||
VERSION=$($PACKAGE --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1 || echo "unknown")
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
||||||
echo "✅ OpenCode 版本: ${VERSION}"
|
echo "✅ OpenCode 版本: ${VERSION}"
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user