use clap::builder::styling::AnsiColor;
use clap::builder::Styles;
use clap::Parser;
use miette::Result;
use tracing::level_filters::LevelFilter;
use tracing_subscriber::EnvFilter;
mod commands;
use commands::Command;
fn main() -> Result<()> {
let env_filter = EnvFilter::builder()
.with_default_directive(LevelFilter::INFO.into())
.from_env_lossy();
tracing_subscriber::fmt().with_env_filter(env_filter).init();
Cli::run()
}
const HELP_STYLES: Styles = Styles::styled()
.header(AnsiColor::Blue.on_default().bold())
.usage(AnsiColor::Blue.on_default().bold())
.literal(AnsiColor::White.on_default())
.placeholder(AnsiColor::Green.on_default());
#[derive(Debug, Parser)]
#[command(version, author, about, styles = HELP_STYLES)]
pub struct Cli {
#[command(subcommand)]
command: Command,
}
impl Cli {
pub fn run() -> Result<()> {
let cli = Cli::parse();
cli.command.run()
}
}