登录
首页 >  Golang >  Go问答

当gofmt修改建议时,以退出状态1退出吗?

来源:stackoverflow

时间:2024-03-22 10:18:30 230浏览 收藏

在将 gofmt 集成到 CI/CD 管道时,用户希望在 gofmt 生成更改时退出状态为 1。然而,默认情况下,gofmt 即使列出文件也会返回状态 0。本文提供了一种通过检查 gofmt 输出是否为空来设置退出状态为 1 的 bash 技巧。如果输出非空,则使用 false 二进制文件或 exit 命令显式退出脚本,将退出代码设置为 1。

问题内容

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

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

我检查了文档,没有找到相应的命令行选项。有 bash hack 可以做到这一点吗?


解决方案


您只需通过检查 wc -l 的输出非空来确保 gofmt 是否列出多行输出,然后运行二进制文件 false ,将退出代码设置为 1 到调用的 shell 或使用 exit 1显式退出脚本。

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

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

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

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

您可以使用

test -z $(gofmt -l .)

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>