diff --git a/crates/typos-cli/src/bin/typos-cli/main.rs b/crates/typos-cli/src/bin/typos-cli/main.rs index 06adf99..d7902fb 100644 --- a/crates/typos-cli/src/bin/typos-cli/main.rs +++ b/crates/typos-cli/src/bin/typos-cli/main.rs @@ -139,7 +139,12 @@ fn run_type_list(args: &args::Args) -> proc_exit::ExitResult { } fn run_checks(args: &args::Args) -> proc_exit::ExitResult { - let global_cwd = std::env::current_dir().to_sysexits()?; + let global_cwd = std::env::current_dir() + .map_err(|err| { + let kind = err.kind(); + std::io::Error::new(kind, "no current working directory".to_owned()) + }) + .to_sysexits()?; let storage = typos_cli::policy::ConfigStorage::new(); let mut engine = typos_cli::policy::ConfigEngine::new(&storage); @@ -162,11 +167,19 @@ fn run_checks(args: &args::Args) -> proc_exit::ExitResult { } else if path.is_file() { let mut cwd = path .canonicalize() + .map_err(|err| { + let kind = err.kind(); + std::io::Error::new(kind, format!("argument `{}` is not found", path.display())) + }) .with_code(proc_exit::sysexits::USAGE_ERR)?; cwd.pop(); cwd } else { path.canonicalize() + .map_err(|err| { + let kind = err.kind(); + std::io::Error::new(kind, format!("argument `{}` is not found", path.display())) + }) .with_code(proc_exit::sysexits::USAGE_ERR)? }; diff --git a/crates/typos-cli/tests/cmd/missing-arg.toml b/crates/typos-cli/tests/cmd/missing-arg.toml index cee0bc6..ca60d1d 100644 --- a/crates/typos-cli/tests/cmd/missing-arg.toml +++ b/crates/typos-cli/tests/cmd/missing-arg.toml @@ -4,5 +4,5 @@ status.code = 64 stdin = "" # stdout doesn't have stable order stderr = """ -No such file or directory (os error 2) +argument `foo` is not found """