seela 1.7.2

A fast and customizable tmux session manager.
use clap::Parser;
use std::error::Error;
use tracing::{Level, error, trace};

use crate::{
    config::load_config,
    logging::init,
    run::{run, run_confirm},
};

mod cli;
mod config;
mod fzf;
mod logging;
mod run;
mod tmux;

fn main() -> Result<(), Box<dyn Error>> {
    let args = cli::Args::parse();

    if let Some(cmd) = args.run_command {
        let _guard = init(Level::WARN);
        return run_confirm(&cmd);
    }

    let (cfg, config_dir) = load_config(args.config.clone()).map_err(|e| {
        eprintln!("seela: {e}");
        e
    })?;

    let _guard = init(cfg.log.level);
    trace!("config loaded: {cfg:#?}");

    if let Err(e) = run(&cfg, &config_dir, args) {
        error!("{e}");
        return Err(e);
    }

    Ok(())
}