build
alias: b
执行完整的 更新 → 渲染 → 写盘 管线,生成所有 provider(主输出 + 具名输出)与 snippet 的输出文件。
执行流程
- 更新订阅源 — 按 TTL 判断每个 provider/snippet 是否过期:未过期直接复用内存缓存;过期或
--force时重新获取;获取失败时回退到数据库中的 last-known-good 缓存(配合熔断器,见常见问题)。 - 解析与规则管线 — 解析代理列表并应用
pre_rename → filter → rename(详见配置指南)。 - 渲染 — 构建渲染上下文(
config/p/headers/version),provider 阶段渲染主输出与具名输出,与 snippet 阶段并发执行。 - 写盘 — 渲染结果经暂存目录原子发布到各输出路径。
- 发事件 — 构建完成发出
ProviderUpdated/SnippetUpdated/BuildCompleted事件:触发 SSE 通知(/app/read/events)与 webhook(设置THURGIO_WEBHOOK_URL时 POST JSON)。
成功输出 ✔ Build complete,失败输出 ✘ Build failed(颜色遵循 RUST_LOG_ANSI / TTY 检测)。
参数
| 参数 | 别名 | 环境变量 | 默认 | 说明 |
|---|---|---|---|---|
--force | -f | FORCE | false | 忽略缓存状态,强制重新获取所有订阅源 |
--watch | -w | WATCH | false | 构建一次后进入监听模式,文件变更自动重建 |
--notify | -N | NOTIFY | false | 构建完成时通过 notify-send 发送系统通知(Linux 桌面) |
监听模式(--watch)
thurgio build --watch
- 监听当前工作目录(递归)。
- 变更事件经 500ms 防抖合并后触发重建。
- 忽略构建自身的写入(输出目录与 SQLite 数据库文件),避免自触发循环。
- 命中配置声明文件(
thurgio.yaml、provider.yaml、params.yaml、rename.yaml、filter.yaml、snippet.yaml)时先全量重载配置再重建;重载失败保留旧配置仅记日志。其余路径(模板等)直接重跑更新 + 渲染管线。
按 Ctrl+C 停止。
示例
# 常规构建(TTL 内复用缓存)
thurgio build
# 强制刷新所有订阅源
thurgio build --force
# 构建 + 监听变更 + 完成时系统通知
thurgio build --watch --notify