use crate::cli::WhereArgs;
use crate::domain::config::{resolve_source, validate};
use crate::errors::{Error, Result};
use crate::io::configfs;
pub fn run(args: WhereArgs) -> Result<i32> {
let cwd = match &args.cwd {
Some(d) => d.clone(),
None => std::env::current_dir().map_err(|e| Error::Io(e.to_string()))?,
};
let loaded = configfs::load(&args.config, &cwd)?;
validate(&loaded.config)?;
match resolve_source(&loaded.provenance, &args.path) {
Ok(source) => {
println!("{source}");
Ok(0)
}
Err(message) => Err(Error::ConfigPathNotFound(message)),
}
}