Skip to main content

truth_mirror/
lib.rs

1use std::process::ExitCode;
2
3use anyhow::Result;
4use tracing_subscriber::EnvFilter;
5
6pub mod claim;
7pub mod cli;
8pub mod config;
9pub mod gate;
10pub mod hooks;
11pub mod ledger;
12pub mod reinject;
13pub mod reviewer;
14pub mod surface;
15
16pub fn init_tracing() {
17    let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("warn"));
18    let _ = tracing_subscriber::fmt().with_env_filter(filter).try_init();
19}
20
21pub fn run(cli: cli::Cli) -> Result<ExitCode> {
22    let config = config::TruthMirrorConfig::load_for_cli(cli.config.as_deref(), &cli.state_dir)?;
23
24    match cli.command {
25        cli::Commands::InstallHooks(args) => hooks::run(args, &cli.state_dir),
26        cli::Commands::Review(args) => reviewer::run_review_command(args, &cli.state_dir, &config),
27        cli::Commands::Gate(args) => gate::run(args, &cli.state_dir),
28        cli::Commands::Reinject(args) => reinject::run(args, &cli.state_dir),
29        cli::Commands::Ledger(args) => ledger::run(args, &cli.state_dir),
30        cli::Commands::Watch(args) => reviewer::run_watch_command(args, &cli.state_dir, &config),
31        cli::Commands::HookDispatch(args) => hooks::dispatch(args, &cli.state_dir),
32    }
33}