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 次下载

MIT 许可证

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 buildcargo 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 buildcargo 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 buildcargo 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.tomlapi/build.toml 中的默认步骤,而 build.toml 中的 build 步骤依赖于 web/build.tomlapi/build.toml 中的 build 步骤。

依赖项

~4–13MB
~138K SLoC