有没有一种稳健的方式,也许是在cargo CLI中,来获取crate的版本?
我可以在Cargo.toml上使用grep,但我正在寻找一些不会在6个月内失效的东西。
有更好的方法吗?
有没有一种稳健的方式,也许是在cargo CLI中,来获取crate的版本?
我可以在Cargo.toml上使用grep,但我正在寻找一些不会在6个月内失效的东西。
有更好的方法吗?
cargo metadata
命令,它会生成一个包含工作区包、依赖项、目标等信息的 JSON 输出。但这种方式非常冗长。jq
进行解析):> cargo metadata --format-version=1 --no-deps | jq '.packages[0].version'
"0.1.0"
如果你处于一个工作区中,那么就会有多个包(即使排除了依赖项),并且它们似乎是按字母顺序排列的。你需要知道包的名称:
> cargo metadata --format-version=1 --no-deps | jq '.packages[] | select(.name == "PACKAGE_NAME") | .version'
"0.1.0"
jq
时,您可能还想使用 --raw-output
来删除版本号周围的引号。如果由于某种原因无法提取版本号,设置 --exit-status
失败也是一个好主意。另请参阅 jq
手册。 - Marcono1234cargo pkgid
files:///Users/sus/code/project#0.1.0
cut
(或在你选择的编程语言中自行处理)。cargo pkgid | cut -d "#" -f2
cargo tree --depth 0
吗? - PitaJcargo pkgid
命令会返回files:///Users/sus/code/project#0.1.0
。 - Samathingamajigcargo metadata
,但它冗长且不适用于当前工作区中的包。 - kmdrekoCARGO_PKG_VERSION
环境变量。 - kmdreko