diff --git a/src/cli.rs b/src/cli.rs index 3f9e9c18d8..d37b50db27 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -81,8 +81,10 @@ pub struct Cli { #[arg(long, value_enum)] pub format: Option, /// Show violations with source code. - #[arg(long)] - pub show_source: bool, + #[arg(long, overrides_with("no_show_source"))] + show_source: bool, + #[clap(long, overrides_with("show_source"), hide = true)] + no_show_source: bool, /// See the files Ruff will be run against with the current settings. #[arg(long)] pub show_files: bool, @@ -154,7 +156,7 @@ impl Cli { max_complexity: self.max_complexity, per_file_ignores: self.per_file_ignores, select: self.select, - show_source: self.show_source, + show_source: resolve_bool_arg(self.show_source, self.no_show_source), target_version: self.target_version, unfixable: self.unfixable, // TODO(charlie): Included in `pyproject.toml`, but not inherited. @@ -209,7 +211,7 @@ pub struct Overrides { pub max_complexity: Option, pub per_file_ignores: Option>, pub select: Option>, - pub show_source: bool, + pub show_source: Option, pub target_version: Option, pub unfixable: Option>, // TODO(charlie): Captured in pyproject.toml as a default, but not part of `Settings`. diff --git a/src/settings/configuration.rs b/src/settings/configuration.rs index ba7a463da5..66ba7b3cce 100644 --- a/src/settings/configuration.rs +++ b/src/settings/configuration.rs @@ -188,27 +188,21 @@ impl Configuration { } pub fn merge(&mut self, overrides: Overrides) { + if let Some(dummy_variable_rgx) = overrides.dummy_variable_rgx { + self.dummy_variable_rgx = dummy_variable_rgx; + } if let Some(exclude) = overrides.exclude { self.exclude = exclude; } if let Some(extend_exclude) = overrides.extend_exclude { self.extend_exclude = extend_exclude; } - if let Some(per_file_ignores) = overrides.per_file_ignores { - self.per_file_ignores = collect_per_file_ignores(per_file_ignores); - } - if let Some(select) = overrides.select { - self.select = select; + if let Some(extend_ignore) = overrides.extend_ignore { + self.extend_ignore = extend_ignore; } if let Some(extend_select) = overrides.extend_select { self.extend_select = extend_select; } - if let Some(ignore) = overrides.ignore { - self.ignore = ignore; - } - if let Some(extend_ignore) = overrides.extend_ignore { - self.extend_ignore = extend_ignore; - } if let Some(fix) = overrides.fix { self.fix = fix; } @@ -218,8 +212,8 @@ impl Configuration { if let Some(format) = overrides.format { self.format = format; } - if let Some(unfixable) = overrides.unfixable { - self.unfixable = unfixable; + if let Some(ignore) = overrides.ignore { + self.ignore = ignore; } if let Some(line_length) = overrides.line_length { self.line_length = line_length; @@ -227,14 +221,20 @@ impl Configuration { if let Some(max_complexity) = overrides.max_complexity { self.mccabe.max_complexity = max_complexity; } + if let Some(per_file_ignores) = overrides.per_file_ignores { + self.per_file_ignores = collect_per_file_ignores(per_file_ignores); + } + if let Some(select) = overrides.select { + self.select = select; + } + if let Some(show_source) = overrides.show_source { + self.show_source = show_source; + } if let Some(target_version) = overrides.target_version { self.target_version = target_version; } - if let Some(dummy_variable_rgx) = overrides.dummy_variable_rgx { - self.dummy_variable_rgx = dummy_variable_rgx; - } - if overrides.show_source { - self.show_source = true; + if let Some(unfixable) = overrides.unfixable { + self.unfixable = unfixable; } } }