From 5a6d05549614b1c0143331ce5c30bb0fd92df0e7 Mon Sep 17 00:00:00 2001 From: TilakMaddy Date: Mon, 10 Mar 2025 23:41:06 +0530 Subject: [PATCH] make src single --- aderyn/src/main.rs | 2 +- aderyn_driver/src/config_helpers.rs | 38 +++++++++---------- aderyn_driver/src/driver.rs | 6 +-- aderyn_driver/src/foundry_compiler_helpers.rs | 4 +- aderyn_driver/src/lib.rs | 6 +-- aderyn_driver/src/process_auto.rs | 13 ++----- aderyn_driver/src/project_compiler_tests.rs | 8 ++-- 7 files changed, 34 insertions(+), 43 deletions(-) diff --git a/aderyn/src/main.rs b/aderyn/src/main.rs index 8e7163a56..10aa214ef 100644 --- a/aderyn/src/main.rs +++ b/aderyn/src/main.rs @@ -29,7 +29,7 @@ pub struct CommandLineArgs { /// /// --src=contracts/ #[clap(short, long, use_value_delimiter = true)] - src: Option>, + src: Option, /// List of path strings to include, delimited by comma (no spaces). /// diff --git a/aderyn_driver/src/config_helpers.rs b/aderyn_driver/src/config_helpers.rs index be8e06f8a..cae183427 100644 --- a/aderyn_driver/src/config_helpers.rs +++ b/aderyn_driver/src/config_helpers.rs @@ -65,13 +65,13 @@ fn clear_empty_vectors(vec: &mut Option>) { #[allow(clippy::type_complexity)] pub fn derive_from_aderyn_toml( root: &Path, - src: &Option>, + src: &Option, exclude: &Option>, remappings: &Option>, include: &Option>, ) -> ( PathBuf, // Root - Option>, // Src + Option, // Src Option>, // Exclude Option>, // Remappings Option>, // Scope @@ -84,13 +84,13 @@ pub fn derive_from_aderyn_toml( fn interpret_aderyn_config( config: AderynConfig, root: &Path, - src: &Option>, + src: &Option, exclude: &Option>, remappings: &Option>, include: &Option>, ) -> ( PathBuf, // Root - Option>, // Src + Option, // Src Option>, // Exclude Option>, // Remappings Option>, // Scope @@ -101,15 +101,11 @@ fn interpret_aderyn_config( local_root.push(config_root); } - // If config.src is some, append src if it is not already present - let mut local_src: Option> = src.clone(); + // If config.src is some, command line arg src overrides config.src + let mut local_src: Option = src.clone(); if let Some(config_src) = &config.src { - if let Some(local_src) = &mut local_src { - if !local_src.contains(config_src) { - local_src.push(config_src.clone()); - } - } else { - local_src = Some(vec![config_src.clone()]); + if local_src.is_none() { + local_src = Some(config_src.clone()); } } @@ -164,11 +160,11 @@ fn interpret_aderyn_config( #[allow(clippy::type_complexity)] pub fn append_from_foundry_toml( root: &Path, - src: &Option>, + src: &Option, exclude: &Option>, remappings: &Option>, ) -> ( - Option>, // Src + Option, // Src Option>, // Exclude Option>, // Remappings ) { @@ -179,11 +175,11 @@ pub fn append_from_foundry_toml( #[allow(clippy::type_complexity)] fn interpret_foundry_config( config: Config, - src: &Option>, + src: &Option, exclude: &Option>, remappings: &Option>, ) -> ( - Option>, // Src + Option, // Src Option>, // Exclude Option>, // Remappings ) { @@ -193,7 +189,7 @@ fn interpret_foundry_config( match local_src { Some(_) => (), None => { - local_src = Some(vec![config.src.to_string_lossy().to_string()]); + local_src = Some(config.src.to_string_lossy().to_string()); } } @@ -251,7 +247,7 @@ mod tests { }; let root = std::path::Path::new("ARG_ROOT"); - let src = Some(vec!["ARG_SRC".to_string()]); + let src = Some("ARG_SRC".to_string()); let exclude = Some(vec!["ARG_EXCLUDE_1".to_string(), "ARG_EXCLUDE_2".to_string()]); let remappings = Some(vec!["ARG_REMAPPINGS_1".to_string(), "ARG_REMAPPINGS_2".to_string()]); let include = Some(vec!["ARG_SCOPE_1".to_string(), "ARG_SCOPE_2".to_string()]); @@ -260,7 +256,7 @@ mod tests { let result = super::interpret_aderyn_config(config, root, &src, &exclude, &remappings, &include); assert_eq!(result.0, std::path::Path::new("ARG_ROOT/CONFIG_ROOT")); - assert_eq!(result.1, Some(vec!["ARG_SRC".to_string(), "CONFIG_SRC".to_string()])); + assert_eq!(result.1, Some("ARG_SRC".to_string())); assert_eq!( result.2, Some(vec![ @@ -305,14 +301,14 @@ mod tests { }; config.remappings = vec![rel_remap]; - let src = Some(vec!["ADERYN_SRC".to_string()]); + let src = Some("ADERYN_SRC".to_string()); let exclude: Option> = Some(vec!["ADERYN_EXCLUDE_1".to_string(), "ADERYN_EXCLUDE_2".to_string()]); let remappings = Some(vec!["ADERYN_REMAPPINGS_1".to_string(), "ADERYN_REMAPPINGS_2".to_string()]); let result = super::interpret_foundry_config(config, &src, &exclude, &remappings); - assert_eq!(result.0, Some(vec!["ADERYN_SRC".to_string()])); + assert_eq!(result.0, Some("ADERYN_SRC".to_string())); assert_eq!( result.1, Some(vec![ diff --git a/aderyn_driver/src/driver.rs b/aderyn_driver/src/driver.rs index 594fa57eb..c297b0a8d 100644 --- a/aderyn_driver/src/driver.rs +++ b/aderyn_driver/src/driver.rs @@ -25,7 +25,7 @@ use tokio::sync::Mutex; pub struct Args { pub root: String, pub output: String, - pub src: Option>, + pub src: Option, pub path_excludes: Option>, pub path_includes: Option>, pub no_snippets: bool, @@ -218,7 +218,7 @@ fn make_context(args: &Args) -> WorkspaceContextWrapper { fn obtain_config_values( args: &Args, ) -> Result< - (PathBuf, Option>, Option>, Option>, Option>), + (PathBuf, Option, Option>, Option>, Option>), Box, > { let mut root_path = PathBuf::from(&args.root); @@ -255,7 +255,7 @@ fn obtain_config_values( if local_src.is_none() && (hardhat_config_js_path.exists() || hardhat_config_ts_path.exists()) { - local_src = Some(vec![String::from("contracts")]) + local_src = Some(String::from("contracts")); } // Also if there is no `remappings.txt` or `remappings` in this case, print a warning! diff --git a/aderyn_driver/src/foundry_compiler_helpers.rs b/aderyn_driver/src/foundry_compiler_helpers.rs index 62f7336ea..9bfbcfd2e 100644 --- a/aderyn_driver/src/foundry_compiler_helpers.rs +++ b/aderyn_driver/src/foundry_compiler_helpers.rs @@ -51,7 +51,7 @@ pub fn get_project(root: &Path, remappings: Vec) -> Project { pub fn get_relevant_sources( root: &Path, solidity_files: CompilerInput, - src: &Option>, + src: &Option, scope: &Option>, exclude: &Option>, ) -> BTreeMap { @@ -82,7 +82,7 @@ pub fn get_relevant_sources( pub fn get_relevant_pathbufs( root: &Path, pathbufs: &[PathBuf], - src: &Option>, + src: &Option, scope: &Option>, exclude: &Option>, ) -> Vec { diff --git a/aderyn_driver/src/lib.rs b/aderyn_driver/src/lib.rs index 7ffe29f69..36eaf9cae 100644 --- a/aderyn_driver/src/lib.rs +++ b/aderyn_driver/src/lib.rs @@ -19,9 +19,9 @@ fn ensure_valid_root_path(root_path: &Path) -> PathBuf { utils::canonicalize(root_path).unwrap() } -fn passes_src(src: &Option>, solidity_file: &Path) -> bool { - if let Some(sources) = src { - return sources.iter().any(|s| solidity_file.starts_with(s)); +fn passes_src(src: &Option, solidity_file: &Path) -> bool { + if let Some(source) = src { + return solidity_file.starts_with(source); } true } diff --git a/aderyn_driver/src/process_auto.rs b/aderyn_driver/src/process_auto.rs index c0fb45404..41ad2c8f8 100644 --- a/aderyn_driver/src/process_auto.rs +++ b/aderyn_driver/src/process_auto.rs @@ -19,19 +19,14 @@ use crate::ensure_valid_root_path; pub fn with_project_root_at( root_path: &Path, - src: &Option>, + src: &Option, exclude: &Option>, remappings: &Option>, scope: &Option>, lsp_mode: bool, ) -> Vec { let root = utils::canonicalize(root_path).unwrap(); - let src = src.clone().map(|sources| { - sources - .into_iter() - .map(|source| utils::canonicalize(root.join(source)).unwrap()) - .collect::>() - }); + let src = src.clone().map(|source| utils::canonicalize(root.join(source)).unwrap()); let solidity_files = get_compiler_input(&root); let sources = get_relevant_sources(&root, solidity_files, &src, scope, exclude); @@ -107,7 +102,7 @@ pub fn with_project_root_at( fn create_workspace_context_from_stdout( stdout: String, - src: &Option>, + src: &Option, scope: &Option>, exclude: &Option>, root_path: &Path, @@ -181,7 +176,7 @@ fn is_demarcation_line( scope: &Option>, exclude: &Option>, root_path: &Path, - src: &Option>, + src: &Option, absolute_root_path_str: &str, ) -> (bool, Option) { if line.starts_with("======= ") { diff --git a/aderyn_driver/src/project_compiler_tests.rs b/aderyn_driver/src/project_compiler_tests.rs index 1b2806cad..9493b2634 100644 --- a/aderyn_driver/src/project_compiler_tests.rs +++ b/aderyn_driver/src/project_compiler_tests.rs @@ -12,7 +12,7 @@ mod project_compiler_grouping_tests { #[test] fn foundry_nft_f23() { let project_root_str = "../tests/foundry-nft-f23"; - let src = &Some(vec![PathBuf::from_str("src/").unwrap()]); + let src = &Some(PathBuf::from_str("src/").unwrap()); test_grouping_files_to_compile(project_root_str, src, &None, &None); } @@ -25,20 +25,20 @@ mod project_compiler_grouping_tests { #[test] fn contract_playground() { let project_root_str = "../tests/contract-playground"; - let src = &Some(vec![PathBuf::from_str("src/").unwrap()]); + let src = &Some(PathBuf::from_str("src/").unwrap()); test_grouping_files_to_compile(project_root_str, src, &None, &None); } #[test] fn ccip_develop() { let project_root_str = "../tests/ccip-contracts/contracts"; - let src = &Some(vec![PathBuf::from_str("src/v0.8/").unwrap()]); + let src = &Some(PathBuf::from_str("src/v0.8/").unwrap()); test_grouping_files_to_compile(project_root_str, src, &None, &None); } fn test_grouping_files_to_compile( project_root_str: &str, - src: &Option>, + src: &Option, scope: &Option>, exclude: &Option>, ) {