Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

build

alias: b

执行完整的 更新 → 渲染 → 写盘 管线,生成所有 provider(主输出 + 具名输出)与 snippet 的输出文件。

执行流程

  1. 更新订阅源 — 按 TTL 判断每个 provider/snippet 是否过期:未过期直接复用内存缓存;过期或 --force 时重新获取;获取失败时回退到数据库中的 last-known-good 缓存(配合熔断器,见常见问题)。
  2. 解析与规则管线 — 解析代理列表并应用 pre_rename → filter → rename(详见配置指南)。
  3. 渲染 — 构建渲染上下文(config / p / headers / version),provider 阶段渲染主输出与具名输出,与 snippet 阶段并发执行。
  4. 写盘 — 渲染结果经暂存目录原子发布到各输出路径。
  5. 发事件 — 构建完成发出 ProviderUpdated / SnippetUpdated / BuildCompleted 事件:触发 SSE 通知(/app/read/events)与 webhook(设置 THURGIO_WEBHOOK_URL 时 POST JSON)。

成功输出 ✔ Build complete,失败输出 ✘ Build failed(颜色遵循 RUST_LOG_ANSI / TTY 检测)。

参数

参数别名环境变量默认说明
--force-fFORCEfalse忽略缓存状态,强制重新获取所有订阅源
--watch-wWATCHfalse构建一次后进入监听模式,文件变更自动重建
--notify-NNOTIFYfalse构建完成时通过 notify-send 发送系统通知(Linux 桌面)

监听模式(--watch

thurgio build --watch
  • 监听当前工作目录(递归)。
  • 变更事件经 500ms 防抖合并后触发重建。
  • 忽略构建自身的写入(输出目录与 SQLite 数据库文件),避免自触发循环。
  • 命中配置声明文件(thurgio.yamlprovider.yamlparams.yamlrename.yamlfilter.yamlsnippet.yaml)时先全量重载配置再重建;重载失败保留旧配置仅记日志。其余路径(模板等)直接重跑更新 + 渲染管线。

Ctrl+C 停止。

示例

# 常规构建(TTL 内复用缓存)
thurgio build

# 强制刷新所有订阅源
thurgio build --force

# 构建 + 监听变更 + 完成时系统通知
thurgio build --watch --notify