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.in/.keep b/crates/typos-cli/tests/cmd/missing-arg.in/.keep new file mode 100644 index 0000000..e69de29 diff --git a/crates/typos-cli/tests/cmd/missing-arg.toml b/crates/typos-cli/tests/cmd/missing-arg.toml new file mode 100644 index 0000000..ca60d1d --- /dev/null +++ b/crates/typos-cli/tests/cmd/missing-arg.toml @@ -0,0 +1,8 @@ +bin.name = "typos" +args = "foo" +status.code = 64 +stdin = "" +# stdout doesn't have stable order +stderr = """ +argument `foo` is not found +"""