mod adapter;
mod addon;
mod baseline;
mod check;
mod cli;
mod dbt_target;
mod diff;
mod engine;
mod lineage;
mod lineage_html;
mod log;
mod metadata;
mod report;
mod show;
mod update;
use std::process::ExitCode;
use clap::Parser;
use cli::{Cli, Command};
fn main() -> ExitCode {
let args: Vec<String> = std::env::args().collect();
if let Some(subcommand) = args.get(1).filter(|arg| !arg.starts_with('-')) {
if !addon::is_builtin_subcommand(subcommand) {
if let Some(addon_path) = addon::find_on_path(subcommand) {
return addon::dispatch(&addon_path, &args[2..]);
}
}
}
let cli = Cli::parse();
match &cli.command {
Command::Check(args) => check::run(args),
Command::Diff(args) => diff::run(args),
Command::Lineage(args) => lineage::run(args),
Command::Show(args) => show::run(args),
Command::Update(args) => update::run(args),
}
}