当 gofmt 建议更改时,让 gofmt 以退出状态 1 退出?

Make gofmt exit with exit status 1, when gofmt suggests changes?

我想将 gofmt 添加到 CI/CD 管道。如果它产生变化,我希望 gofmt 以状态 1 退出。

例如,如果我 运行 gofmt -s -l . 并且列出了一些文件。我希望它以状态 1 退出。现在,当我 运行 echo $? 给我 0 时,即使列出了一些包含 gofmt 更改的文件。

我查看了文档,没有找到相应的命令行选项。有 bash 技巧可以做到吗?

您只需要通过检查 wc -l 的输出是否为空然后 运行 二进制文件 [=14= 来确保 gofmt 是否再列出一行输出] 将退出代码设置为 1 以调用 shell 或使用 exit 1 显式退出脚本。

if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then
    exit 1
fi

当你说 gofmt 实际上 returns $?0 即使列出了文件?在这种情况下你也可以简单地做

if gofmt -s -l . > /dev/null; then
    exit 1
fi

上面的 if 条件依赖于 gofmt 返回的退出代码,因为 0 表示命令成功,条件将断言为真。

您可以使用

test -z $(gofmt -l .)