From 6adf88542e4477f7cab6ff02ca965b293f85ce50 Mon Sep 17 00:00:00 2001 From: Paolo Tranquilli Date: Thu, 12 Sep 2024 08:53:08 +0200 Subject: [PATCH] Rust: fix linting script --- rust/extractor/macros/src/lib.rs | 58 +++++++++++++++++--------------- rust/lint.py | 10 +++--- 2 files changed, 36 insertions(+), 32 deletions(-) diff --git a/rust/extractor/macros/src/lib.rs b/rust/extractor/macros/src/lib.rs index 13472665454a..1905d40f9b21 100644 --- a/rust/extractor/macros/src/lib.rs +++ b/rust/extractor/macros/src/lib.rs @@ -1,7 +1,5 @@ use proc_macro::TokenStream; -use quote::{quote, format_ident}; -use syn; - +use quote::{format_ident, quote}; /// Allow all fields in the extractor config to be also overrideable by extractor CLI flags #[proc_macro_attribute] @@ -9,33 +7,37 @@ pub fn extractor_cli_config(_attr: TokenStream, item: TokenStream) -> TokenStrea let ast = syn::parse_macro_input!(item as syn::ItemStruct); let name = &ast.ident; let new_name = format_ident!("Cli{}", name); - let fields: Vec<_> = ast.fields.iter().map(|f| { - let id = f.ident.as_ref().unwrap(); - let ty = &f.ty; - if let syn::Type::Path(p) = ty { - if p.path.is_ident(&format_ident!("bool")) { - return quote! { - #[arg(long)] - #id: bool, - }; - } - } - if id == &format_ident!("verbose") { - quote! { - #[arg(long, short, action=clap::ArgAction::Count)] - #id: u8, + let fields: Vec<_> = ast + .fields + .iter() + .map(|f| { + let id = f.ident.as_ref().unwrap(); + let ty = &f.ty; + if let syn::Type::Path(p) = ty { + if p.path.is_ident(&format_ident!("bool")) { + return quote! { + #[arg(long)] + #id: bool, + }; + } } - } else if id == &format_ident!("inputs") { - quote! { - #id: #ty, - } - } else { - quote! { - #[arg(long)] - #id: Option<#ty>, + if id == &format_ident!("verbose") { + quote! { + #[arg(long, short, action=clap::ArgAction::Count)] + #id: u8, + } + } else if id == &format_ident!("inputs") { + quote! { + #id: #ty, + } + } else { + quote! { + #[arg(long)] + #id: Option<#ty>, + } } - } - }).collect(); + }) + .collect(); let gen = quote! { #[serde_with::apply(_ => #[serde(default)])] #[derive(Debug, Deserialize, Default)] diff --git a/rust/lint.py b/rust/lint.py index 1af2470dbbcf..eb71cbd0b3dd 100755 --- a/rust/lint.py +++ b/rust/lint.py @@ -5,12 +5,14 @@ import shutil import sys -extractor_dir = pathlib.Path(__file__).resolve().parent / "extractor" +this_dir = pathlib.Path(__file__).resolve().parent cargo = shutil.which("cargo") assert cargo, "no cargo binary found on `PATH`" -fmt = subprocess.run([cargo, "fmt", "--quiet"], cwd=extractor_dir) -clippy = subprocess.run([cargo, "clippy", "--fix", "--allow-dirty", "--allow-staged", "--quiet"], - cwd=extractor_dir) +fmt = subprocess.run([cargo, "fmt", "--all", "--quiet"], cwd=this_dir) +for manifest in this_dir.rglob("Cargo.toml"): + if not manifest.is_relative_to(this_dir / "ql"): + clippy = subprocess.run([cargo, "clippy", "--fix", "--allow-dirty", "--allow-staged", "--quiet"], + cwd=manifest.parent) sys.exit(fmt.returncode or clippy.returncode)