summaryrefslogtreecommitdiffstats
path: root/crates/core/args.rs
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2023-09-28 16:24:40 -0400
committerAndrew Gallant <jamslam@gmail.com>2023-10-09 20:29:52 -0400
commit392bb0944a7a2d0bc8d9e33a6c628a14fc8acc37 (patch)
treec449ae908558a52c158d23e846b8d3f892bae174 /crates/core/args.rs
parent90b849912f74a41faa9f0b4f0aa3a829a44fd4b5 (diff)
core: polish the core of ripgrep
This I believe finishes are quest to do mechanical updates to ripgrep's style, bringing it in line with my current practice (loosely speaking).
Diffstat (limited to 'crates/core/args.rs')
-rw-r--r--crates/core/args.rs120
1 files changed, 62 insertions, 58 deletions
diff --git a/crates/core/args.rs b/crates/core/args.rs
index b4d2997b..0da9f00f 100644
--- a/crates/core/args.rs
+++ b/crates/core/args.rs
@@ -1,49 +1,52 @@
-use std::cmp;
-use std::env;
-use std::ffi::{OsStr, OsString};
-use std::fs;
-use std::io::{self, IsTerminal, Write};
-use std::path::{Path, PathBuf};
-use std::process;
-use std::str::FromStr;
-use std::sync::Arc;
-use std::time::SystemTime;
-
-use clap;
-use grep::cli;
-use grep::matcher::LineTerminator;
+use std::{
+ env,
+ ffi::{OsStr, OsString},
+ io::{self, IsTerminal, Write},
+ path::{Path, PathBuf},
+ sync::Arc,
+};
+
+use {
+ clap,
+ grep::{
+ cli,
+ matcher::LineTerminator,
+ printer::{
+ default_color_specs, ColorSpecs, HyperlinkConfig,
+ HyperlinkEnvironment, HyperlinkFormat, JSONBuilder, PathPrinter,
+ PathPrinterBuilder, Standard, StandardBuilder, Stats, Summary,
+ SummaryBuilder, SummaryKind, JSON,
+ },
+ regex::{
+ RegexMatcher as RustRegexMatcher,
+ RegexMatcherBuilder as RustRegexMatcherBuilder,
+ },
+ searcher::{
+ BinaryDetection, Encoding, MmapChoice, Searcher, SearcherBuilder,
+ },
+ },
+ ignore::{
+ overrides::{Override, OverrideBuilder},
+ types::{FileTypeDef, Types, TypesBuilder},
+ {Walk, WalkBuilder, WalkParallel},
+ },
+ termcolor::{BufferWriter, ColorChoice, WriteColor},
+};
+
#[cfg(feature = "pcre2")]
use grep::pcre2::{
RegexMatcher as PCRE2RegexMatcher,
RegexMatcherBuilder as PCRE2RegexMatcherBuilder,
};
-use grep::printer::{
- default_color_specs, ColorSpecs, HyperlinkConfig, HyperlinkEnvironment,
- HyperlinkFormat, JSONBuilder, PathPrinter, PathPrinterBuilder, Standard,
- StandardBuilder, Stats, Summary, SummaryBuilder, SummaryKind, JSON,
-};
-use grep::regex::{
- RegexMatcher as RustRegexMatcher,
- RegexMatcherBuilder as RustRegexMatcherBuilder,
-};
-use grep::searcher::{
- BinaryDetection, Encoding, MmapChoice, Searcher, SearcherBuilder,
-};
-use ignore::overrides::{Override, OverrideBuilder};
-use ignore::types::{FileTypeDef, Types, TypesBuilder};
-use ignore::{Walk, WalkBuilder, WalkParallel};
-use log;
-use termcolor::{BufferWriter, ColorChoice, WriteColor};
-
-use crate::app;
-use crate::config;
-use crate::logger::Logger;
-use crate::messages::{set_ignore_messages, set_messages};
-use crate::search::{
- PatternMatcher, Printer, SearchWorker, SearchWorkerBuilder,
+
+use crate::{
+ app, config,
+ logger::Logger,
+ messages::{set_ignore_messages, set_messages},
+ search::{PatternMatcher, Printer, SearchWorker, SearchWorkerBuilder},
+ subject::{Subject, SubjectBuilder},
+ Result,
};
-use crate::subject::{Subject, SubjectBuilder};
-use crate::Result;
/// The command that ripgrep should execute based on the command line
/// configuration.
@@ -1130,16 +1133,17 @@ impl ArgMatches {
let mut env = HyperlinkEnvironment::new();
env.host(hostname(self.value_of_os("hostname-bin")))
.wsl_prefix(wsl_prefix());
- let fmt = match self.value_of_lossy("hyperlink-format") {
- None => HyperlinkFormat::from_str("default").unwrap(),
- Some(format) => match HyperlinkFormat::from_str(&format) {
- Ok(format) => format,
- Err(err) => {
- let msg = format!("invalid hyperlink format: {err}");
- return Err(msg.into());
- }
- },
- };
+ let fmt: HyperlinkFormat =
+ match self.value_of_lossy("hyperlink-format") {
+ None => "default".parse().unwrap(),
+ Some(format) => match format.parse() {
+ Ok(format) => format,
+ Err(err) => {
+ let msg = format!("invalid hyperlink format: {err}");
+ return Err(msg.into());
+ }
+ },
+ };
log::debug!("hyperlink format: {:?}", fmt.to_string());
Ok(HyperlinkConfig::new(env, fmt))
}
@@ -1589,7 +1593,7 @@ impl ArgMatches {
let threads = self.usize_of("threads")?.unwrap_or(0);
let available =
std::thread::available_parallelism().map_or(1, |n| n.get());
- Ok(if threads == 0 { cmp::min(12, available) } else { threads })
+ Ok(if threads == 0 { std::cmp::min(12, available) } else { threads })
}
/// Builds a file type matcher from the command line flags.
@@ -1790,11 +1794,11 @@ fn sort_by_option<T: Ord>(
p1: &Option<T>,
p2: &Option<T>,
reverse: bool,
-) -> cmp::Ordering {
+) -> std::cmp::Ordering {
match (p1, p2, reverse) {
(Some(p1), Some(p2), true) => p1.cmp(&p2).reverse(),
(Some(p1), Some(p2), false) => p1.cmp(&p2),
- _ => cmp::Ordering::Equal,
+ _ => std::cmp::Ordering::Equal,
}
}
@@ -1823,7 +1827,7 @@ where
// (This is the point of this helper function. clap's functionality for
// doing this will panic on a broken pipe error.)
let _ = write!(io::stdout(), "{}", err);
- process::exit(0);
+ std::process::exit(0);
}
/// Attempts to discover the current working directory. This mostly just defers
@@ -1871,8 +1875,8 @@ fn hostname(bin: Option<&OsStr>) -> Option<String> {
return platform_hostname();
}
};
- let mut cmd = process::Command::new(&bin);
- cmd.stdin(process::Stdio::null());
+ let mut cmd = std::process::Command::new(&bin);
+ cmd.stdin(std::process::Stdio::null());
let rdr = match grep::cli::CommandReader::new(&mut cmd) {
Ok(rdr) => rdr,
Err(err) => {
@@ -1955,9 +1959,9 @@ fn wsl_prefix() -> Option<String> {
fn load_timestamps<G>(
subjects: impl Iterator<Item = Subject>,
get_time: G,
-) -> Vec<(Option<SystemTime>, Subject)>
+) -> Vec<(Option<std::time::SystemTime>, Subject)>
where
- G: Fn(&fs::Metadata) -> io::Result<SystemTime>,
+ G: Fn(&std::fs::Metadata) -> io::Result<std::time::SystemTime>,
{
subjects
.map(|s| (s.path().metadata().and_then(|m| get_time(&m)).ok(), s))