From f45d39b20bf05b58c320c9ae16c7bbd9c2b9678e Mon Sep 17 00:00:00 2001 From: Nayeem Rahman Date: Wed, 11 Dec 2024 14:34:15 +0000 Subject: [PATCH] move -c handling to CliOptions methods --- cli/args/mod.rs | 114 ++++++++++++++++++++++++++++------------- cli/tools/bench/mod.rs | 39 ++++---------- cli/tools/check.rs | 19 ++----- cli/tools/lint/mod.rs | 4 +- cli/tools/test/mod.rs | 39 ++++---------- 5 files changed, 103 insertions(+), 112 deletions(-) diff --git a/cli/args/mod.rs b/cli/args/mod.rs index fce65dc6f4..4e07485dbf 100644 --- a/cli/args/mod.rs +++ b/cli/args/mod.rs @@ -1027,10 +1027,6 @@ impl CliOptions { } } - pub fn is_discovered_config(&self) -> bool { - self.flags.is_discovered_config() - } - pub fn npm_system_info(&self) -> NpmSystemInfo { match self.sub_command() { DenoSubcommand::Compile(CompileFlags { @@ -1342,12 +1338,22 @@ impl CliOptions { pub fn resolve_fmt_options_for_members( &self, fmt_flags: &FmtFlags, - ) -> Result, AnyError> { + ) -> Result, FmtOptions)>, AnyError> { let cli_arg_patterns = fmt_flags.files.as_file_patterns(self.initial_cwd())?; - let member_configs = self - .workspace() - .resolve_fmt_config_for_members(&cli_arg_patterns)?; + let member_configs = if self.flags.is_discovered_config() { + self + .workspace() + .resolve_fmt_config_for_members(&cli_arg_patterns)? + .into_iter() + .map(|(d, c)| (Arc::new(d), c)) + .collect::>() + } else { + vec![( + self.start_dir.clone(), + self.start_dir.to_fmt_config(cli_arg_patterns)?, + )] + }; let unstable = self.resolve_config_unstable_fmt_options(); let mut result = Vec::with_capacity(member_configs.len()); for (ctx, config) in member_configs { @@ -1376,23 +1382,43 @@ impl CliOptions { pub fn resolve_file_flags_for_members( &self, file_flags: &FileFlags, - ) -> Result, AnyError> { + ) -> Result, FilePatterns)>, AnyError> { let cli_arg_patterns = file_flags.as_file_patterns(self.initial_cwd())?; - let member_patterns = self - .workspace() - .resolve_file_patterns_for_members(&cli_arg_patterns)?; + let member_patterns = if self.flags.is_discovered_config() { + self + .workspace() + .resolve_file_patterns_for_members(&cli_arg_patterns)? + .into_iter() + .map(|(d, p)| (Arc::new(d), p)) + .collect::>() + } else { + vec![( + self.start_dir.clone(), + self.start_dir.to_resolved_file_patterns(cli_arg_patterns)?, + )] + }; Ok(member_patterns) } pub fn resolve_lint_options_for_members( &self, lint_flags: &LintFlags, - ) -> Result, AnyError> { + ) -> Result, LintOptions)>, AnyError> { let cli_arg_patterns = lint_flags.files.as_file_patterns(self.initial_cwd())?; - let member_configs = self - .workspace() - .resolve_lint_config_for_members(&cli_arg_patterns)?; + let member_configs = if self.flags.is_discovered_config() { + self + .workspace() + .resolve_lint_config_for_members(&cli_arg_patterns)? + .into_iter() + .map(|(d, c)| (Arc::new(d), c)) + .collect::>() + } else { + vec![( + self.start_dir.clone(), + self.start_dir.to_lint_config(cli_arg_patterns)?, + )] + }; let mut result = Vec::with_capacity(member_configs.len()); for (ctx, config) in member_configs { let options = LintOptions::resolve(config, lint_flags); @@ -1430,18 +1456,26 @@ impl CliOptions { pub fn resolve_test_options_for_members( &self, test_flags: &TestFlags, - ) -> Result, AnyError> { + ) -> Result, TestOptions)>, AnyError> { let cli_arg_patterns = test_flags.files.as_file_patterns(self.initial_cwd())?; - let workspace_dir_configs = self - .workspace() - .resolve_test_config_for_members(&cli_arg_patterns)?; - let mut result = Vec::with_capacity(workspace_dir_configs.len()); - for (member_dir, config) in workspace_dir_configs { - let options = TestOptions::resolve(config, test_flags); - result.push((member_dir, options)); - } - Ok(result) + let member_options = if self.flags.is_discovered_config() { + self + .workspace() + .resolve_test_config_for_members(&cli_arg_patterns)? + .into_iter() + .map(|(d, c)| (Arc::new(d), TestOptions::resolve(c, test_flags))) + .collect::>() + } else { + vec![( + self.start_dir.clone(), + TestOptions::resolve( + self.start_dir.to_test_config(cli_arg_patterns)?, + test_flags, + ), + )] + }; + Ok(member_options) } pub fn resolve_workspace_bench_options( @@ -1454,18 +1488,26 @@ impl CliOptions { pub fn resolve_bench_options_for_members( &self, bench_flags: &BenchFlags, - ) -> Result, AnyError> { + ) -> Result, BenchOptions)>, AnyError> { let cli_arg_patterns = bench_flags.files.as_file_patterns(self.initial_cwd())?; - let workspace_dir_configs = self - .workspace() - .resolve_bench_config_for_members(&cli_arg_patterns)?; - let mut result = Vec::with_capacity(workspace_dir_configs.len()); - for (member_dir, config) in workspace_dir_configs { - let options = BenchOptions::resolve(config, bench_flags); - result.push((member_dir, options)); - } - Ok(result) + let member_options = if self.flags.is_discovered_config() { + self + .workspace() + .resolve_bench_config_for_members(&cli_arg_patterns)? + .into_iter() + .map(|(d, c)| (Arc::new(d), BenchOptions::resolve(c, bench_flags))) + .collect::>() + } else { + vec![( + self.start_dir.clone(), + BenchOptions::resolve( + self.start_dir.to_bench_config(cli_arg_patterns)?, + bench_flags, + ), + )] + }; + Ok(member_options) } /// Vector of user script CLI arguments. diff --git a/cli/tools/bench/mod.rs b/cli/tools/bench/mod.rs index e5ac626b22..875a06ed20 100644 --- a/cli/tools/bench/mod.rs +++ b/cli/tools/bench/mod.rs @@ -1,7 +1,6 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. use crate::args::BenchFlags; -use crate::args::BenchOptions; use crate::args::Flags; use crate::colors; use crate::display::write_json_to_stdout; @@ -433,20 +432,11 @@ pub async fn run_benchmarks( )?; let log_level = cli_options.log_level(); - let workspace_dirs_with_files = if cli_options.is_discovered_config() { - cli_options - .resolve_bench_options_for_members(&bench_flags)? - .into_iter() - .map(|(d, o)| (Arc::new(d), o.files)) - .collect() - } else { - let patterns = bench_flags - .files - .as_file_patterns(cli_options.initial_cwd())?; - let config = cli_options.start_dir.to_bench_config(patterns)?; - let options = BenchOptions::resolve(config, &bench_flags); - vec![(cli_options.start_dir.clone(), options.files)] - }; + let workspace_dirs_with_files = cli_options + .resolve_bench_options_for_members(&bench_flags)? + .into_iter() + .map(|(d, o)| (d, o.files)) + .collect(); let file_container = WorkspaceFileContainer::from_workspace_dirs_with_files( workspace_dirs_with_files, &factory, @@ -527,20 +517,11 @@ pub async fn run_benchmarks_with_watch( let log_level = cli_options.log_level(); let _ = watcher_communicator.watch_paths(cli_options.watch_paths()); - let workspace_dirs_with_files = if cli_options.is_discovered_config() { - cli_options - .resolve_bench_options_for_members(&bench_flags)? - .into_iter() - .map(|(d, o)| (Arc::new(d), o.files)) - .collect() - } else { - let patterns = bench_flags - .files - .as_file_patterns(cli_options.initial_cwd())?; - let config = cli_options.start_dir.to_bench_config(patterns)?; - let options = BenchOptions::resolve(config, &bench_flags); - vec![(cli_options.start_dir.clone(), options.files)] - }; + let workspace_dirs_with_files = cli_options + .resolve_bench_options_for_members(&bench_flags)? + .into_iter() + .map(|(d, o)| (d, o.files)) + .collect::>(); let watch_paths = workspace_dirs_with_files .iter() .filter_map(|(_, files)| { diff --git a/cli/tools/check.rs b/cli/tools/check.rs index 52bd844ccc..142231fd7b 100644 --- a/cli/tools/check.rs +++ b/cli/tools/check.rs @@ -50,24 +50,11 @@ pub async fn check( ) -> Result<(), AnyError> { let factory = CliFactory::from_flags(flags); let cli_options = factory.cli_options()?; - let workspace_dirs_with_files = if cli_options.is_discovered_config() { - cli_options - .resolve_file_flags_for_members(&FileFlags { - ignore: Default::default(), - include: check_flags.files, - })? - .into_iter() - .map(|(d, p)| (Arc::new(d), p)) - .collect() - } else { - let file_flags = FileFlags { + let workspace_dirs_with_files = + cli_options.resolve_file_flags_for_members(&FileFlags { ignore: Default::default(), include: check_flags.files, - }; - let patterns = file_flags.as_file_patterns(cli_options.initial_cwd())?; - let patterns = cli_options.start_dir.to_resolved_file_patterns(patterns)?; - vec![(cli_options.start_dir.clone(), patterns)] - }; + })?; let file_container = WorkspaceFileContainer::from_workspace_dirs_with_files( workspace_dirs_with_files, &factory, diff --git a/cli/tools/lint/mod.rs b/cli/tools/lint/mod.rs index 596359bdc0..0839b7750c 100644 --- a/cli/tools/lint/mod.rs +++ b/cli/tools/lint/mod.rs @@ -200,7 +200,7 @@ pub async fn lint( } struct PathsWithOptions { - dir: WorkspaceDirectory, + dir: Arc, paths: Vec, options: LintOptions, } @@ -270,7 +270,7 @@ impl WorkspaceLinter { cli_options: &Arc, lint_options: LintOptions, lint_config: LintConfig, - member_dir: WorkspaceDirectory, + member_dir: Arc, paths: Vec, ) -> Result<(), AnyError> { self.file_count += paths.len(); diff --git a/cli/tools/test/mod.rs b/cli/tools/test/mod.rs index 4899a89063..95862a5186 100644 --- a/cli/tools/test/mod.rs +++ b/cli/tools/test/mod.rs @@ -3,7 +3,6 @@ use crate::args::CliOptions; use crate::args::Flags; use crate::args::TestFlags; -use crate::args::TestOptions; use crate::args::TestReporterConfig; use crate::colors; use crate::display; @@ -1500,20 +1499,11 @@ pub async fn run_tests( )?; let log_level = cli_options.log_level(); - let workspace_dirs_with_files = if cli_options.is_discovered_config() { - cli_options - .resolve_test_options_for_members(&test_flags)? - .into_iter() - .map(|(d, o)| (Arc::new(d), o.files)) - .collect() - } else { - let patterns = test_flags - .files - .as_file_patterns(cli_options.initial_cwd())?; - let config = cli_options.start_dir.to_test_config(patterns)?; - let options = TestOptions::resolve(config, &test_flags); - vec![(cli_options.start_dir.clone(), options.files)] - }; + let workspace_dirs_with_files = cli_options + .resolve_test_options_for_members(&test_flags)? + .into_iter() + .map(|(d, o)| (d, o.files)) + .collect(); let file_container = WorkspaceFileContainer::from_workspace_dirs_with_files( workspace_dirs_with_files, &factory, @@ -1616,20 +1606,11 @@ pub async fn run_tests_with_watch( let log_level = cli_options.log_level(); let _ = watcher_communicator.watch_paths(cli_options.watch_paths()); - let workspace_dirs_with_files = if cli_options.is_discovered_config() { - cli_options - .resolve_test_options_for_members(&test_flags)? - .into_iter() - .map(|(d, o)| (Arc::new(d), o.files)) - .collect() - } else { - let patterns = test_flags - .files - .as_file_patterns(cli_options.initial_cwd())?; - let config = cli_options.start_dir.to_test_config(patterns)?; - let options = TestOptions::resolve(config, &test_flags); - vec![(cli_options.start_dir.clone(), options.files)] - }; + let workspace_dirs_with_files = cli_options + .resolve_test_options_for_members(&test_flags)? + .into_iter() + .map(|(d, o)| (d, o.files)) + .collect::>(); let watch_paths = workspace_dirs_with_files .iter() .filter_map(|(_, files)| {