Jelajahi Sumber

fix: stdin behavior

The issue is that eza ignores the `--stdin` argument, unless there is
data piped into it. This is not how stdin behavior is supposed to work.
e.g. look at the `cat` command.
The flag should tell eza that the input is read from stdin. But if you
call `eza --stdin` nothing is read from stdin.

This means that the current argument is moot and serves no purpose,
because eza already has the capability of checking whether data is
piped into it.
So eza behaves like this: if you pipe data into eza, eza will ignore
the data, unless you additionally specify `--stdin`
This makes no sense.

This change accomplishes the following:

- `eza --stdin` reads from standard input
- if data is piped into eza, standard input is automatically read
  and no `--stdin` flag is required
- if data is piped into eza, `--stdin` can still be used

BREAKING CHANGE: if data is piped into eza, eza will not ignore it
Helmut K. C. Tessarek 11 bulan lalu
induk
melakukan
c015350363
1 mengubah file dengan 1 tambahan dan 3 penghapusan
  1. 1 3
      src/options/stdin.rs

+ 1 - 3
src/options/stdin.rs

@@ -20,9 +20,7 @@ pub enum FilesInput {
 impl FilesInput {
     pub fn deduce<V: Vars>(matches: &MatchedFlags<'_>, vars: &V) -> Result<Self, OptionsError> {
         Ok(
-            if io::stdin().is_terminal() || !matches.has(&flags::STDIN)? {
-                FilesInput::Args
-            } else if matches.has(&flags::STDIN)? && !io::stdin().is_terminal() {
+            if matches.has(&flags::STDIN)? || !io::stdin().is_terminal() {
                 let separator = vars
                     .get(EZA_STDIN_SEPARATOR)
                     .unwrap_or(OsString::from("\n"));