#查询 #cargo-workspace #命令 #版本 #管理 #复杂 #发布

bin+lib cargo-workspace2

一个查询和管理复杂 cargo 工作区的工具

6 个版本

0.2.2 2021年2月18日
0.2.1 2020年10月23日
0.1.1 2020年10月18日
0.0.0 2020年10月17日

#708Cargo 插件

每月21次下载

GPL-3.0-or-later

57KB
1.5K SLoC

cargo-workspace2 🔹 pipeline status

一个更好的工具来管理复杂的 cargo 工作区,通过动态构建项目的依赖关系图进行查询和运行命令。该项目既是命令行工具也是库。repl 已在路线图中。

使用方法

当使用 cargo-ws2 时,您首先提供一些查询以查找工作区中的 crate,然后为查询中选定的每个 crate 执行带有特定参数的命令。

cargows2<查询语言> <命令> [命令选项]

当前支持的命令。

  • print - 输出选定的 crate 集合
  • publish - 发布一组 crate

此外,还有一些特殊的“感叹号命令”,它们优先于其他行输入的参数,并且不需要放在特定的位置。

  • !help [COMMAND] - 显示程序的帮助屏幕或特定命令的帮助信息
  • !version - 打印程序、rustc 版本等
  • !debug - 启用调试打印,并将其余行作为正常行解析

cargo-ws2 提供了一个基于 ws2ql 查询表达式语言的查询系统。以下是一些示例。

  • 列出 [ ] 之间的 crate: [ foo bar baz ]
  • 或使用 {} 块查询依赖关系图: { foo < } (所有依赖于 foo 的 crate)
  • 通过路径树包含crate: [ ./foo/* ](尚未实现!)
  • 甚至通过正则表达式进行搜索: [/crate-suffix\$/](尚未实现!)

文档中查看ws2ql的完整描述!

发布crate

此工具主要编写目的是为了使在workspace中发布crate变得更加容易。让我们看看一个例子。

[package]
name = "foo"
version = "0.1.0"
# ...

[dependencies]
bar = { version = "0.5.0", path = "../bar" }
[package]
name = "bar"
version = "0.5.0"

这是一个常见的设置:将cargo指向pathbar意味着磁盘上的源代码更改将变得可用,在发布到crates.io之前。但是,在尝试发布时需要有一个版本依赖,因此我们也添加了这个。

不幸的是,现在,当我们将bar更新到版本0.6.0时,我们的workspace将停止构建,因为foo依赖于与我们所指向的不同版本的bar

当你运行cargo ws2 [bar] publish minor时,cargo-ws2会将bar提升到0.6.0,并更新foo中的依赖行,使其为{ version = "0.6.0", path = "../bar" },而不触及foo的版本。

如果你想让所有依赖的crate提升到相同的版本,请在发布级别(majorminorpatch或semver字符串)前加上=

cargo ws2 [bar] publish =minor将同时提升foo和bar到0.6.0(如果它们的起始版本尚未相同,则选择集合中最高版本。

许可证

cargo-workspace2是免费软件,许可协议为GNU通用公共许可证3.0版(或更高版本)。有关许可证的完整副本,请参阅LICENSE文件。

依赖项

~3.5MB
~57K SLoC