From 88885d9c2b6f2ae12e97f17bccb0c7a0225380a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 25 Jul 2023 23:24:06 +0200 Subject: [PATCH] fix(lint): allow to use --rules with --rules-tags (#19754) --- cli/args/flags.rs | 27 ++++++++++++++++++++++++++- cli/main.rs | 5 ++++- cli/tools/lint.rs | 8 ++++++-- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/cli/args/flags.rs b/cli/args/flags.rs index 72841df742..d06a17a06e 100644 --- a/cli/args/flags.rs +++ b/cli/args/flags.rs @@ -1584,7 +1584,6 @@ Ignore linting a file by adding an ignore comment at the top of the file: .num_args(1..) .action(ArgAction::Append) .use_value_delimiter(true) - .conflicts_with("rules") .help("Use set of rules with a tag"), ) .arg( @@ -4154,6 +4153,32 @@ mod tests { } ); + let r = flags_from_vec(svec![ + "deno", + "lint", + "--rules", + "--rules-tags=recommended" + ]); + assert_eq!( + r.unwrap(), + Flags { + subcommand: DenoSubcommand::Lint(LintFlags { + files: FileFlags { + include: vec![], + ignore: vec![], + }, + rules: true, + maybe_rules_tags: Some(svec!["recommended"]), + maybe_rules_include: None, + maybe_rules_exclude: None, + json: false, + compact: false, + watch: Default::default(), + }), + ..Flags::default() + } + ); + let r = flags_from_vec(svec![ "deno", "lint", diff --git a/cli/main.rs b/cli/main.rs index 70db8f147b..cdbd878d6f 100644 --- a/cli/main.rs +++ b/cli/main.rs @@ -140,7 +140,10 @@ async fn run_subcommand(flags: Flags) -> Result { DenoSubcommand::Lsp => spawn_subcommand(async { lsp::start().await }), DenoSubcommand::Lint(lint_flags) => spawn_subcommand(async { if lint_flags.rules { - tools::lint::print_rules_list(lint_flags.json); + tools::lint::print_rules_list( + lint_flags.json, + lint_flags.maybe_rules_tags, + ); Ok(()) } else { tools::lint::lint(flags, lint_flags).await diff --git a/cli/tools/lint.rs b/cli/tools/lint.rs index 4a622f0a0b..f5e9db6e9d 100644 --- a/cli/tools/lint.rs +++ b/cli/tools/lint.rs @@ -202,8 +202,12 @@ fn collect_lint_files(files: &FilesConfig) -> Result, AnyError> { .collect_files(&files.include) } -pub fn print_rules_list(json: bool) { - let lint_rules = rules::get_recommended_rules(); +pub fn print_rules_list(json: bool, maybe_rules_tags: Option>) { + let lint_rules = get_configured_rules(LintRulesConfig { + exclude: None, + include: None, + tags: maybe_rules_tags, + }); if json { let json_rules: Vec = lint_rules