From b4a252a3916ab342b289331fbf49aa2db73df579 Mon Sep 17 00:00:00 2001 From: sharkdp Date: Fri, 12 May 2017 22:50:52 +0200 Subject: [PATCH] Detect interactive terminal, closes #11 --- Cargo.lock | 12 ++++++++++++ Cargo.toml | 1 + src/main.rs | 17 ++++++++++------- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0d86bb0..9069a4f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,6 +4,7 @@ version = "0.1.0" dependencies = [ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "isatty 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -26,6 +27,16 @@ name = "getopts" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "isatty" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "kernel32-sys" version = "0.2.2" @@ -134,6 +145,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699" "checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" "checksum getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9047cfbd08a437050b363d35ef160452c5fe8ea5187ae0a624708c91581d685" +"checksum isatty 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "fa500db770a99afe2a0f2229be2a3d09c7ed9d7e4e8440bf71253141994e240f" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum libc 0.2.22 (registry+https://github.com/rust-lang/crates.io-index)" = "babb8281da88cba992fa1f4ddec7d63ed96280a1a53ec9b919fd37b53d71e502" "checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4" diff --git a/Cargo.toml b/Cargo.toml index 8703b9f..21a832b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,3 +8,4 @@ getopts = "0.2" regex = "0.2" walkdir = "1" ansi_term = "0.9" +isatty = "0.1" diff --git a/src/main.rs b/src/main.rs index f7945cd..10716ee 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,8 @@ -extern crate walkdir; -extern crate regex; -extern crate getopts; extern crate ansi_term; +extern crate getopts; +extern crate isatty; +extern crate regex; +extern crate walkdir; use std::env; use std::error::Error; @@ -10,10 +11,11 @@ use std::io::Write; use std::path::Path; use std::process; -use walkdir::{WalkDir, DirEntry, WalkDirIterator}; -use regex::{Regex, RegexBuilder}; -use getopts::Options; use ansi_term::Colour; +use getopts::Options; +use isatty::stdout_isatty; +use regex::{Regex, RegexBuilder}; +use walkdir::{WalkDir, DirEntry, WalkDirIterator}; struct FdOptions { case_sensitive: bool, @@ -130,7 +132,8 @@ fn main() { pattern.chars().any(char::is_uppercase), search_full_path: !matches.opt_present("filename"), search_hidden: matches.opt_present("hidden"), - colored: !matches.opt_present("no-color"), + colored: !matches.opt_present("no-color") && + stdout_isatty(), follow_links: matches.opt_present("follow"), max_depth: matches.opt_str("max-depth")