【发布时间】:2021-10-03 04:11:12
【问题描述】:
我有一个 Go 代码生成工具,在将其构建为二进制文件时,我想在构建时使用 Go 工具注入它自己的当前 Pseudo-version 作为它的主模块。
我知道对于依赖项,我可以使用go list -m all 或go list -m -f '{{ .Version }}' $MODULE 找到它们的伪版本。主模块的版本被列为空。
我知道我大概可以计算出当前的伪版本:
git describe --tags `git rev-list --tags --max-count=1`
和:
TZ=UTC git --no-pager show \
--quiet \
--abbrev=12 \
--date='format-local:%Y%m%d%H%M%S' \
--format="%cd-%h"
要得到一个合理的近似值,例如:v0.3.0-20210907161133-495c072cb418
获得伪版本后,我打算在构建时注入它,如下所示:
go build -ldflags="-X generate.version v0.3.0-20210907161133-495c072cb418" -o mytool ./main.go
但是,建议直接使用 Go 工具来获取当前的伪版本,而不是我在餐巾纸上制作的一些 hacky bash 东西。有关如何执行此操作的任何建议?
【问题讨论】:
标签: go go-modules