Include entire prefix when reporting rule selector errors (#3375)

This commit is contained in:
Charlie Marsh 2023-03-06 19:04:52 -05:00 committed by GitHub
parent c0ad875339
commit fea1af5a63
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 2 deletions

View file

@ -51,7 +51,7 @@ impl FromStr for RuleSelector {
Ok(Self::Prefix {
prefix: RuleCodePrefix::parse(&linter, code)
.map_err(|_| ParseError::Unknown(code.to_string()))?,
.map_err(|_| ParseError::Unknown(s.to_string()))?,
redirected_from,
})
}
@ -60,7 +60,7 @@ impl FromStr for RuleSelector {
#[derive(Debug, thiserror::Error)]
pub enum ParseError {
#[error("Unknown rule selector `{0}`")]
#[error("Unknown rule selector: `{0}`")]
// TODO(martin): tell the user how to discover rule codes via the CLI once such a command is
// implemented (but that should of course be done only in ruff_cli and not here)
Unknown(String),

View file

@ -1,6 +1,7 @@
#![allow(dead_code)]
use std::path::PathBuf;
use std::str::FromStr;
use clap::{command, Parser};
use regex::Regex;
@ -112,6 +113,7 @@ pub struct CheckArgs {
long,
value_delimiter = ',',
value_name = "RULE_CODE",
value_parser = parse_rule_selector,
help_heading = "Rule selection",
hide_possible_values = true
)]
@ -121,6 +123,7 @@ pub struct CheckArgs {
long,
value_delimiter = ',',
value_name = "RULE_CODE",
value_parser = parse_rule_selector,
help_heading = "Rule selection",
hide_possible_values = true
)]
@ -131,6 +134,7 @@ pub struct CheckArgs {
long,
value_delimiter = ',',
value_name = "RULE_CODE",
value_parser = parse_rule_selector,
help_heading = "Rule selection",
hide_possible_values = true
)]
@ -140,6 +144,7 @@ pub struct CheckArgs {
long,
value_delimiter = ',',
value_name = "RULE_CODE",
value_parser = parse_rule_selector,
help_heading = "Rule selection",
hide = true
)]
@ -170,6 +175,7 @@ pub struct CheckArgs {
long,
value_delimiter = ',',
value_name = "RULE_CODE",
value_parser = parse_rule_selector,
help_heading = "Rule selection",
hide_possible_values = true
)]
@ -180,6 +186,7 @@ pub struct CheckArgs {
long,
value_delimiter = ',',
value_name = "RULE_CODE",
value_parser = parse_rule_selector,
help_heading = "Rule selection",
hide_possible_values = true
)]
@ -403,6 +410,11 @@ impl CheckArgs {
}
}
fn parse_rule_selector(env: &str) -> Result<RuleSelector, std::io::Error> {
RuleSelector::from_str(env)
.map_err(|e| std::io::Error::new(std::io::ErrorKind::InvalidInput, e))
}
fn resolve_bool_arg(yes: bool, no: bool) -> Option<bool> {
match (yes, no) {
(true, false) => Some(true),