mirror of
https://github.com/sharkdp/fd.git
synced 2024-11-18 09:50:34 +01:00
commit
10ea476e31
2 changed files with 23 additions and 3 deletions
21
src/main.rs
21
src/main.rs
|
@ -53,6 +53,9 @@ struct FdOptions {
|
||||||
/// Whether to follow symlinks or not.
|
/// Whether to follow symlinks or not.
|
||||||
follow_links: bool,
|
follow_links: bool,
|
||||||
|
|
||||||
|
/// Whether elements of output should be separated by a null character
|
||||||
|
zero: bool,
|
||||||
|
|
||||||
/// The maximum search depth, or `None` if no maximum search depth should be set.
|
/// The maximum search depth, or `None` if no maximum search depth should be set.
|
||||||
///
|
///
|
||||||
/// A depth of `1` includes all files under the current directory, a depth of `2` also includes
|
/// A depth of `1` includes all files under the current directory, a depth of `2` also includes
|
||||||
|
@ -143,13 +146,22 @@ fn print_entry(base: &Path, entry: &Path, config: &FdOptions) {
|
||||||
print!("{}", style.paint(sep));
|
print!("{}", style.paint(sep));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
println!();
|
if config.zero {
|
||||||
|
print!("{}", '\0');
|
||||||
|
} else {
|
||||||
|
println!();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Uncolorized output
|
// Uncolorized output
|
||||||
|
|
||||||
let prefix = if config.path_display == PathDisplay::Absolute { ROOT_DIR } else { "" };
|
let prefix = if config.path_display == PathDisplay::Absolute { ROOT_DIR } else { "" };
|
||||||
|
let separator = if config.zero {
|
||||||
|
"\0"
|
||||||
|
} else {
|
||||||
|
"\n"
|
||||||
|
};
|
||||||
|
|
||||||
let r = writeln!(&mut std::io::stdout(), "{}{}", prefix, path_str);
|
let r = write!(&mut std::io::stdout(), "{}{}{}", prefix, path_str, separator);
|
||||||
|
|
||||||
if r.is_err() {
|
if r.is_err() {
|
||||||
// Probably a broken pipe. Exit gracefully.
|
// Probably a broken pipe. Exit gracefully.
|
||||||
|
@ -230,6 +242,10 @@ fn main() {
|
||||||
.long("follow")
|
.long("follow")
|
||||||
.short("f")
|
.short("f")
|
||||||
.help("Follow symlinks"))
|
.help("Follow symlinks"))
|
||||||
|
.arg(Arg::with_name("zero")
|
||||||
|
.long("print0")
|
||||||
|
.short("0")
|
||||||
|
.help("Separate each path by the null character"))
|
||||||
.arg(Arg::with_name("absolute-path")
|
.arg(Arg::with_name("absolute-path")
|
||||||
.long("absolute-path")
|
.long("absolute-path")
|
||||||
.short("a")
|
.short("a")
|
||||||
|
@ -306,6 +322,7 @@ fn main() {
|
||||||
ignore_hidden: !matches.is_present("hidden"),
|
ignore_hidden: !matches.is_present("hidden"),
|
||||||
read_ignore: !matches.is_present("no-ignore"),
|
read_ignore: !matches.is_present("no-ignore"),
|
||||||
follow_links: matches.is_present("follow"),
|
follow_links: matches.is_present("follow"),
|
||||||
|
zero: matches.is_present("zero"),
|
||||||
max_depth: matches.value_of("depth")
|
max_depth: matches.value_of("depth")
|
||||||
.and_then(|ds| usize::from_str_radix(ds, 10).ok()),
|
.and_then(|ds| usize::from_str_radix(ds, 10).ok()),
|
||||||
path_display: if matches.is_present("absolute-path") || root_dir_is_absolute {
|
path_display: if matches.is_present("absolute-path") || root_dir_is_absolute {
|
||||||
|
|
|
@ -32,7 +32,7 @@ expect() {
|
||||||
|
|
||||||
echo "$expected_output" > "$tmp_expected"
|
echo "$expected_output" > "$tmp_expected"
|
||||||
|
|
||||||
"$fd" "$@" | sort -f > "$tmp_output"
|
"$fd" "$@" | xargs -0 echo -n | sort -f > "$tmp_output"
|
||||||
|
|
||||||
echo -ne " ${bold}▶${reset} Testing 'fd $*' ... "
|
echo -ne " ${bold}▶${reset} Testing 'fd $*' ... "
|
||||||
|
|
||||||
|
@ -181,6 +181,9 @@ one/two/C.Foo2
|
||||||
symlink/c.foo
|
symlink/c.foo
|
||||||
symlink/C.Foo2" --follow c.foo
|
symlink/C.Foo2" --follow c.foo
|
||||||
|
|
||||||
|
suite "Null separator (--print0)"
|
||||||
|
expect "one/two/C.Foo2 one/two/c.foo one/two/three/d.foo one/two/three/directory_foo one/b.foo a.foo" --print0 foo
|
||||||
|
|
||||||
|
|
||||||
suite "Maximum depth (--max-depth)"
|
suite "Maximum depth (--max-depth)"
|
||||||
expect "a.foo
|
expect "a.foo
|
||||||
|
|
Loading…
Reference in a new issue