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