4 个版本
0.1.3 | 2023年2月6日 |
---|---|
0.1.2 | 2023年1月27日 |
0.1.1 | 2023年1月27日 |
0.1.0 | 2023年1月27日 |
#2258 在 命令行工具
每月 27 次下载
21KB
387 行
Doer
Doer 是一个简单的任务运行器,使用 TOML 文件格式进行配置。
安装
cargo install doer
使用方法
默认情况下,Doer 将运行 default
步骤。
示例
doer
这将运行 default
步骤。这可以通过传递不同的步骤或在 build.toml
文件中的 default
键来更改。
示例
doer build
这将运行 build
步骤。
您还可以传递不同的文件用于配置。
示例
doer --file build.toml build
这将运行 build
步骤在 build.toml
文件中。
配置
Doer 使用 TOML 文件进行配置。默认位置是 ./build.toml
,但可以通过 --file
选项进行更改。
一个简单的示例
[step.default]
command = "echo 'Hello, world!'"
[step.build]
command = "cargo build"
这将默认运行 echo 'Hello, world!'
,但如果您运行 doer --task build
,它将运行 cargo build
。
步骤
步骤是 Doer 将运行的任务。它们在 step
表中定义。每个步骤都有一个名称,用于识别它,以及一个 command
键,它是将要运行的命令。
示例
[step.run]
command = "cargo run"
[step.build]
command = "cargo build"
当运行 run
步骤时,这将运行 cargo run
,当运行 build
步骤时,它将运行 cargo build
。
默认步骤
默认步骤是在未指定步骤时将运行的步骤。默认情况下,这是 default
步骤。
示例
[step.default]
command = "echo 'Hello, world!'"
默认情况下,将运行 echo 'Hello, world!'
。如果您想更改默认步骤,可以在 build.toml
文件中使用 default
键。
示例
default = "build"
[step.build]
command = "cargo build"
依赖项
可以通过使用 depends
键,步骤可以依赖于其他步骤。
示例
[step.run]
command = "cargo run"
depends = ["build"]
[step.build]
command = "cargo build"
在运行 cargo run
之前,将运行 cargo build
。如果 build
步骤失败,则不会运行 run
步骤。
环境变量
可以为每个步骤在 env
表中设置环境变量。
示例
[step.run]
command = "cargo run"
env = { RUST_LOG = "debug" }
这将使用 RUST_LOG
环境变量设置为 debug
运行 cargo run
。
步骤组
步骤不必有 command
键。相反,它只需要一个 depends
键,该键是一个将要运行的步骤列表。这对于将步骤分组在一起非常有用。
示例
[step.default]
depends = ["build", "release"]
[step.build]
command = "cargo build"
[step.release]
command = "cargo build --release"
当运行 default
步骤时,这将同时运行 cargo build
和 cargo build --release
。
异步步骤
可以通过将 async
键设置为 true
来异步运行步骤。
示例
[step.default]
depends = ["build", "release"]
[step.build]
command = "cargo build"
async = true
[step.release]
command = "cargo build --release"
async = true
这将同时运行 cargo build
和 cargo build --release
。
步骤也可以通过将 in-order
键设置为 true
来强制所有依赖步骤按顺序运行。
示例
[step.default]
depends = ["build", "release"]
in-order = true
[step.build]
command = "cargo build"
async = true
[step.release]
command = "cargo build --release"
async = true
即使它们都是异步步骤,也将按顺序运行 cargo build
和 cargo build --release
。
跨文件依赖
步骤可以通过依赖目录名和步骤名,或者可选地仅依赖目录名来运行默认步骤,从而依赖于其他文件中的其他步骤。
示例
# build.toml
[step.default]
depends = ["web", "api"]
[step.build]
depends = ["web:build", "api:build"]
# web/build.toml
[step.default]
command = "echo 'web default'"
[step.build]
command = "trunk build"
async = true
# api/build.toml
[step.default]
command = "echo 'api default'"
[step.build]
command = "cargo build"
async = true
在这个例子中,build.toml
中的默认步骤依赖于 web/build.toml
和 api/build.toml
中的默认步骤,而 build.toml
中的 build
步骤依赖于 web/build.toml
和 api/build.toml
中的 build
步骤。
依赖项
~4–13MB
~138K SLoC