Skip to content

Commit

Permalink
fix: stdin behavior
Browse files Browse the repository at this point in the history
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
  • Loading branch information
tessus committed Jan 22, 2025
1 parent 72c2c74 commit 0339e3a
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions src/options/stdin.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
Expand Down

0 comments on commit 0339e3a

Please sign in to comment.