From 31c8963f2f5216583cc7b55b07a78bccd4e3dab3 Mon Sep 17 00:00:00 2001 From: HerringtonDarkholme <2883231+HerringtonDarkholme@users.noreply.github.com> Date: Sun, 21 Aug 2022 23:49:23 -0400 Subject: [PATCH] [fix] fix clap arg configuration --- crates/cli/src/main.rs | 6 +++--- crates/cli/src/scan.rs | 6 +++--- crates/config/src/constraints.rs | 1 + fixtures/test.ts | 4 ++++ rules/no-await-in-loop.yml | 3 +++ 5 files changed, 14 insertions(+), 6 deletions(-) diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index e833d4ed..ea8963bd 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -21,8 +21,8 @@ pub struct Args { command: Option, /// AST pattern to match - #[clap(short, long, requires("lang"))] - pattern: Option, + #[clap(short, long)] + pattern: String, /// String to replace the matched AST node #[clap(short, long)] @@ -34,7 +34,7 @@ pub struct Args { /// The language of the pattern query #[clap(short, long)] - lang: Option, + lang: SupportLang, #[clap(short, long, parse(from_flag))] interactive: bool, diff --git a/crates/cli/src/scan.rs b/crates/cli/src/scan.rs index 1a770d59..dbe9fede 100644 --- a/crates/cli/src/scan.rs +++ b/crates/cli/src/scan.rs @@ -15,7 +15,7 @@ use crate::{interaction, Args as PatternArg}; #[derive(Args)] pub struct ScanArg { /// Path to ast-grep config, either YAML or folder of YAMLs - #[clap(short, long, conflicts_with("pattern"))] + #[clap(short, long)] config: Option, /// Include hidden files in search @@ -39,9 +39,9 @@ pub struct ScanArg { // Every run will include Search or Replace // Search or Replace by arguments `pattern` and `rewrite` passed from CLI pub fn run_with_pattern(args: PatternArg) -> Result<()> { - let pattern = args.pattern.unwrap(); + let pattern = args.pattern; let threads = num_cpus::get().min(12); - let lang = args.lang.unwrap(); + let lang = args.lang; let pattern = Pattern::new(&pattern, lang); if args.debug_query { println!("Pattern TreeSitter {:?}", pattern); diff --git a/crates/config/src/constraints.rs b/crates/config/src/constraints.rs index 739f1bf2..61b5440a 100644 --- a/crates/config/src/constraints.rs +++ b/crates/config/src/constraints.rs @@ -9,6 +9,7 @@ use regex::Regex; use std::collections::HashMap; #[derive(Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase")] pub enum SerializableMetaVarMatcher { /// A regex to filter metavar based on its textual content. Regex(String), diff --git a/fixtures/test.ts b/fixtures/test.ts index e74ebc00..ebeabc0e 100644 --- a/fixtures/test.ts +++ b/fixtures/test.ts @@ -31,3 +31,7 @@ Promise.all([ await p4, // match ...[1,2,3].map(async (i) => await Promise.resolve(i)) // no match ]) + +Promise.resolve([ + await p1, // no match +]) diff --git a/rules/no-await-in-loop.yml b/rules/no-await-in-loop.yml index e803a7f3..347b6017 100644 --- a/rules/no-await-in-loop.yml +++ b/rules/no-await-in-loop.yml @@ -38,4 +38,7 @@ rule: - pattern: await $A - inside: pattern: Promise.$METHOD([$$$, await $A, $$$]) +meta_variables: + METHOD: + regex: all|race|allSettled|any fix: $A