mod assets;
mod cli;
mod command;
mod config;
mod constants;
mod interactive;
mod tui;
mod util;
use clap::Parser;
use cli::Cli;
use config::YamlConfig;
fn main() {
let mut config = YamlConfig::load();
let _ = assets::install_default_scripts(&mut config);
let verbose = config.is_verbose();
let start = if verbose {
Some(std::time::Instant::now())
} else {
None
};
let raw_args: Vec<String> = std::env::args().collect();
if raw_args.len() <= 1 {
interactive::run_interactive(&mut config);
return;
}
let cli = Cli::try_parse();
match cli {
Ok(cli) => match cli.command {
Some(sub_cmd) => {
command::dispatch(sub_cmd, &mut config);
}
None => {
command::open::handle_open(&cli.args, &config);
}
},
Err(_) => {
let alias_args: Vec<String> = raw_args[1..].to_vec();
command::open::handle_open(&alias_args, &config);
}
}
if let Some(start) = start {
let elapsed = start.elapsed();
debug_log!(config, "duration: {} ms", elapsed.as_millis());
}
}