gpt4 book ai didi

go - 如何仅针对更改的模板运行 gogenerate?

转载 作者:行者123 更新时间:2023-12-02 03:22:07 26 4
gpt4 key购买 nike

我们在存储库中使用一些代码模板,并依靠 go:generate 从这些模板生成所有需要的代码。
由于有多个模板,并且我们从每个模板生成多个实际代码,因此生成代码的一致性已成为一个问题:我们需要一个命令来运行并确保所有生成的代码与其相应的模板都是最新的。为此,我们有一个简单的 bash 命令来查找其中包含 go:generate 的所有文件,并在其目录中运行 gogenerate
问题是这种方法真的很慢:大多数模板都没有改变,所以不需要再次生成它们的代码。
有没有办法告诉 gogenerate 仅在模板比文件新时运行?或者说除了这个还有其他更好的方法吗?
非常感谢。

最佳答案

首先,您不需要在文件中查找 go:generate 的 bash 脚本,go 工具本身可以为您做到这一点。只需使用

go generate ./...

在子文件夹中递归。

接下来,当代码生成运行时,我会将模板文件的上次修改时间戳存储在生成的代码中,无论是在注释中还是在 const/var 中。由 gogenerate 运行的应用程序可以首先检查模板的上次修改时间是否比代码中存储的时间更新,如果是则继续。

这个文件的最后修改时间应该足够了。但是,如果由于某种原因您不能依赖它,模板可能有一个“版本”,当模板更改时,该版本应该增加。并让生成器将此版本“传输”到最终代码中,这可用于检查模板是否比从其生成的代码新。

关于go - 如何仅针对更改的模板运行 gogenerate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57757242/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com