use clap::Parser;
use gwm::{aliases, cli};
use std::ffi::OsString;
fn main() {
let argv: Vec<OsString> = std::env::args_os().collect();
let expanded = match expand_aliases(argv.clone()) {
Ok(v) => v,
Err(e) => {
eprintln!("warning: failed to load aliases, using raw argv: {}", clean_error(&e));
argv
}
};
let args = cli::Cli::parse_from(expanded);
if let Err(e) = cli::run(args) {
eprintln!("error: {}", clean_error(&e));
std::process::exit(1);
}
}
fn clean_error(e: &gwm::error::GwmError) -> String {
gwm::naming::sanitise_diagnostic_for_terminal(&e.to_string())
}
fn expand_aliases(argv: Vec<OsString>) -> Result<Vec<OsString>, gwm::error::GwmError> {
let repo_workdir = gwm::worktree::discover_repo(None)
.ok()
.and_then(|r| r.workdir().map(|w| w.to_path_buf()));
let resolved = aliases::load(repo_workdir.as_deref(), None)?;
Ok(aliases::expand_argv_os(argv, &resolved))
}