feat: Git global flag

This commit is contained in:
Ed Page 2019-07-12 21:36:32 -06:00
parent 27edfc6e02
commit 1bd4ca8288

View file

@ -66,6 +66,16 @@ struct Options {
no_ignore_dot: bool, no_ignore_dot: bool,
#[structopt(long, raw(overrides_with = r#""no-ignore-dot""#), raw(hidden = "true"))] #[structopt(long, raw(overrides_with = r#""no-ignore-dot""#), raw(hidden = "true"))]
ignore_dot: bool, ignore_dot: bool,
#[structopt(long, raw(overrides_with = r#""ignore-global""#))]
/// Don't respect global ignore files.
no_ignore_global: bool,
#[structopt(
long,
raw(overrides_with = r#""no-ignore-global""#),
raw(hidden = "true")
)]
ignore_global: bool,
} }
impl Options { impl Options {
@ -96,6 +106,16 @@ impl Options {
.or_else(|| self.ignore_files()) .or_else(|| self.ignore_files())
} }
pub fn ignore_global(&self) -> Option<bool> {
match (self.no_ignore_global, self.ignore_global) {
(true, false) => Some(false),
(false, true) => Some(true),
(false, false) => None,
(_, _) => unreachable!("StructOpt should make this impossible"),
}
.or_else(|| self.ignore_files())
}
fn ignore_files(&self) -> Option<bool> { fn ignore_files(&self) -> Option<bool> {
match (self.no_ignore, self.ignore) { match (self.no_ignore, self.ignore) {
(true, false) => Some(false), (true, false) => Some(false),
@ -121,7 +141,8 @@ fn run() -> Result<(), failure::Error> {
} }
walk.threads(options.threads) walk.threads(options.threads)
.hidden(options.ignore_hidden().unwrap_or(true)) .hidden(options.ignore_hidden().unwrap_or(true))
.ignore(options.ignore_dot().unwrap_or(true)); .ignore(options.ignore_dot().unwrap_or(true))
.git_global(options.ignore_global().unwrap_or(true));
// TODO Add build_parallel for options.threads != 1 // TODO Add build_parallel for options.threads != 1
for entry in walk.build() { for entry in walk.build() {
let entry = entry?; let entry = entry?;