Merge pull request #311 from ouch-org/check-eof-when-asking-question

Check for EOF when asking questions
This commit is contained in:
figsoda 2022-11-22 23:22:27 -05:00 committed by GitHub
commit d1477e2368
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 2 deletions

View File

@ -58,6 +58,7 @@ Categories Used:
- Fix incorrect warnings for decompression [\#270](https://github.com/ouch-org/ouch/pull/270) ([figsoda](https://github.com/figsoda))
- Fix infinite compression if output file is inside the input folder [\#288](https://github.com/ouch-org/ouch/pull/288) ([figsoda](https://github.com/figsoda))
- Fix not overwriting a folder when compressing [\#295](https://github.com/ouch-org/ouch/pull/295) ([marcospb19](https://github.com/marcospb19))
- Check for EOF when asking questions [\#311](https://github.com/ouch-org/ouch/pull/311) ([marcospb19](https://github.com/marcospb19))
### Improvements

View File

@ -14,7 +14,7 @@ use fs_err as fs;
use super::{strip_cur_dir, to_utf};
use crate::{
accessible::is_running_in_accessible_mode,
error::{Error, Result},
error::{Error, FinalError, Result},
utils::{self, colors},
};
@ -145,7 +145,17 @@ impl<'a> Confirmation<'a> {
io::stdout().flush()?;
let mut answer = String::new();
io::stdin().read_line(&mut answer)?;
let bytes_read = io::stdin().read_line(&mut answer)?;
if bytes_read == 0 {
let error = FinalError::with_title("Unexpected EOF when asking question.")
.detail("When asking the user:")
.detail(format!(" \"{message}\""))
.detail("Expected 'y' or 'n' as answer, but found EOF instead.")
.hint("If using Ouch in scripting, consider using `--yes` and `--no`.");
return Err(error.into());
}
answer.make_ascii_lowercase();
match answer.trim() {

View File

@ -9,6 +9,7 @@ macro_rules! ouch {
($($e:expr),*) => {
$crate::utils::cargo_bin()
$(.arg($e))*
.arg("--yes")
.unwrap();
}
}