Skip to content

执行任务

当你通过 .unirtm.toml.unirtm/tasks 目录配置好任务后,你就可以使用强大的 unirtm run 命令来执行它们了。

基本用法

bash
# 运行单个任务
unirtm run build

# 运行多个任务(依次或并行,取决于依赖图)
unirtm run lint test build

如果你直接输入 unirtm run 而不带任何参数,它会智能提取当前所有可用的任务,并呈现一个带有简短描述的交互式列表(类似 make help)。

并行执行与依赖解析 (DAG)

UniRTM 拥有一个内部的并发有向无环图 (DAG) 引擎。如果你运行了一个定义了前置依赖 depends_on = ["A", "B"] 的任务 C

  1. UniRTM 会首先检查 A 和 B 是否有各自的依赖。
  2. UniRTM 会完全并行地同时执行 A 和 B。
  3. 只有当 A 和 B 都以退出码 0 成功返回后,C 才会开始执行。
  4. 如果 A 或 B 中有任何一个失败,整个执行链将立即终止并报错。

通过这种架构,你可以最大程度榨干多核 CPU 的性能!

终端 UI 与 Pterm 集成

UniRTM 使用了高性能的终端 UI 库 (Pterm) 来接管任务输出。

  • 流式输出:在并行执行时,不同任务的输出会被智能隔离并通过前缀标记(如 [build] ...[test] ...),防止由于并发导致的输出日志错乱。
  • 动态状态栏:底部会显示一个动态的进度指示器,让你清楚地看到当前哪些任务正在 Running,哪些已经 Done。
  • 纯文本降级:当检测到当前处于 CI 环境(如 GitHub Actions)时,UniRTM 会自动禁用动态 UI 和彩色输出,降级为纯文本流式输出,确保日志文件的可读性。

高级运行参数

1. 传递参数

如果你需要向底层脚本传递额外的命令行参数,请在任务名称后面使用 --

bash
# 这里的 --fix 会被传递给 lint 脚本
unirtm run lint -- --fix

2. 演练模式 (Dry-run)

在调试复杂的任务图时,你可能只想看看执行顺序,而不想真正执行危险的命令。你可以使用演练模式:

bash
unirtm run deploy --dry-run

这会打印出按顺序排好序的执行计划表,以及它们对应的真实 Shell 命令。

3. 指定并发数限制

在默认情况下,UniRTM 会根据你机器的 CPU 核心数自动决定最大并行线程数。你可以强制覆盖它:

bash
unirtm run build --jobs 2

基于 MIT 许可发布。