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日 |
#708 在 Cargo 插件
每月21次下载
57KB
1.5K SLoC
cargo-workspace2 🔹 
一个更好的工具来管理复杂的 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指向path的bar意味着磁盘上的源代码更改将变得可用,在发布到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提升到相同的版本,请在发布级别(major、minor、patch或semver字符串)前加上=。
cargo ws2 [bar] publish =minor将同时提升foo和bar到0.6.0(如果它们的起始版本尚未相同,则选择集合中最高版本。
许可证
cargo-workspace2是免费软件,许可协议为GNU通用公共许可证3.0版(或更高版本)。有关许可证的完整副本,请参阅LICENSE文件。
依赖项
~3.5MB
~57K SLoC