mirror of
https://github.com/uutils/coreutils
synced 2024-12-14 07:12:44 +00:00
dircolors: manage the --print-ls-colors pipe option
This commit is contained in:
parent
f5776bc511
commit
dabbcff9fb
2 changed files with 23 additions and 4 deletions
|
@ -9,6 +9,7 @@ use std::borrow::Borrow;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::fmt::Write;
|
use std::fmt::Write;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
|
use std::io::IsTerminal;
|
||||||
use std::io::{BufRead, BufReader};
|
use std::io::{BufRead, BufReader};
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
@ -192,9 +193,16 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
||||||
|
|
||||||
let result;
|
let result;
|
||||||
if files.is_empty() {
|
if files.is_empty() {
|
||||||
|
// Check if data is being piped into the program
|
||||||
|
if std::io::stdin().is_terminal() {
|
||||||
|
// No data piped, use default behavior
|
||||||
println!("{}", generate_ls_colors(&out_format, ":"));
|
println!("{}", generate_ls_colors(&out_format, ":"));
|
||||||
|
|
||||||
return Ok(());
|
return Ok(());
|
||||||
|
} else {
|
||||||
|
// Data is piped, process the input from stdin
|
||||||
|
let fin = BufReader::new(std::io::stdin());
|
||||||
|
result = parse(fin.lines().map_while(Result::ok), &out_format, "-");
|
||||||
|
}
|
||||||
} else if files.len() > 1 {
|
} else if files.len() > 1 {
|
||||||
return Err(UUsageError::new(
|
return Err(UUsageError::new(
|
||||||
1,
|
1,
|
||||||
|
@ -376,6 +384,7 @@ where
|
||||||
let (key, val) = line.split_two();
|
let (key, val) = line.split_two();
|
||||||
if val.is_empty() {
|
if val.is_empty() {
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
|
// The double space is what GNU is doing
|
||||||
"{}:{}: invalid line; missing second token",
|
"{}:{}: invalid line; missing second token",
|
||||||
fp.maybe_quote(),
|
fp.maybe_quote(),
|
||||||
num
|
num
|
||||||
|
|
|
@ -159,6 +159,16 @@ fn test_quoting() {
|
||||||
.no_stderr();
|
.no_stderr();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_print_ls_colors() {
|
||||||
|
new_ucmd!()
|
||||||
|
.pipe_in("OWT 40;33\n")
|
||||||
|
.args(&["--print-ls-colors"])
|
||||||
|
.succeeds()
|
||||||
|
.stdout_is("\x1B[40;33mtw\t40;33\x1B[0m\n")
|
||||||
|
.no_stderr();
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_extra_operand() {
|
fn test_extra_operand() {
|
||||||
new_ucmd!()
|
new_ucmd!()
|
||||||
|
|
Loading…
Reference in a new issue