use colored::*;
fn main() {
#[cfg(windows)]
colored::control::set_virtual_terminal(true).ok();
let args: Vec<String> = std::env::args().collect();
let program_name = std::path::Path::new(&args[0])
.file_name()
.and_then(|s| s.to_str())
.unwrap_or("");
if !program_name.is_empty()
&& program_name != "zoi"
&& program_name != "zoi-rs"
&& !program_name.starts_with("zoi-")
&& !program_name.contains("target")
{
let plugin_manager = match zoi::pkg::plugin::PluginManager::new() {
Ok(m) => {
let _ = m.load_all(false);
m
}
Err(e) => {
eprintln!(
"{}: Failed to initialize PluginManager: {}",
"Error".red().bold(),
e
);
std::process::exit(1);
}
};
if let Err(e) =
zoi::pkg::shim::run_shim(program_name, args[1..].to_vec(), Some(&plugin_manager))
{
eprintln!("{}: {}", "Shim Error".red().bold(), e);
std::process::exit(1);
}
return;
}
if let Err(e) = zoi::cli::run() {
eprintln!("{}: {}", "Error".red().bold(), e);
std::process::exit(1);
}
}