0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-09 21:57:40 -04:00

move -c handling to CliOptions methods

This commit is contained in:
Nayeem Rahman 2024-12-11 14:34:15 +00:00
parent 0e2f9e7c10
commit f45d39b20b
5 changed files with 103 additions and 112 deletions

View file

@ -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 { pub fn npm_system_info(&self) -> NpmSystemInfo {
match self.sub_command() { match self.sub_command() {
DenoSubcommand::Compile(CompileFlags { DenoSubcommand::Compile(CompileFlags {
@ -1342,12 +1338,22 @@ impl CliOptions {
pub fn resolve_fmt_options_for_members( pub fn resolve_fmt_options_for_members(
&self, &self,
fmt_flags: &FmtFlags, fmt_flags: &FmtFlags,
) -> Result<Vec<(WorkspaceDirectory, FmtOptions)>, AnyError> { ) -> Result<Vec<(Arc<WorkspaceDirectory>, FmtOptions)>, AnyError> {
let cli_arg_patterns = let cli_arg_patterns =
fmt_flags.files.as_file_patterns(self.initial_cwd())?; fmt_flags.files.as_file_patterns(self.initial_cwd())?;
let member_configs = self let member_configs = if self.flags.is_discovered_config() {
self
.workspace() .workspace()
.resolve_fmt_config_for_members(&cli_arg_patterns)?; .resolve_fmt_config_for_members(&cli_arg_patterns)?
.into_iter()
.map(|(d, c)| (Arc::new(d), c))
.collect::<Vec<_>>()
} else {
vec![(
self.start_dir.clone(),
self.start_dir.to_fmt_config(cli_arg_patterns)?,
)]
};
let unstable = self.resolve_config_unstable_fmt_options(); let unstable = self.resolve_config_unstable_fmt_options();
let mut result = Vec::with_capacity(member_configs.len()); let mut result = Vec::with_capacity(member_configs.len());
for (ctx, config) in member_configs { for (ctx, config) in member_configs {
@ -1376,23 +1382,43 @@ impl CliOptions {
pub fn resolve_file_flags_for_members( pub fn resolve_file_flags_for_members(
&self, &self,
file_flags: &FileFlags, file_flags: &FileFlags,
) -> Result<Vec<(WorkspaceDirectory, FilePatterns)>, AnyError> { ) -> Result<Vec<(Arc<WorkspaceDirectory>, FilePatterns)>, AnyError> {
let cli_arg_patterns = file_flags.as_file_patterns(self.initial_cwd())?; let cli_arg_patterns = file_flags.as_file_patterns(self.initial_cwd())?;
let member_patterns = self let member_patterns = if self.flags.is_discovered_config() {
self
.workspace() .workspace()
.resolve_file_patterns_for_members(&cli_arg_patterns)?; .resolve_file_patterns_for_members(&cli_arg_patterns)?
.into_iter()
.map(|(d, p)| (Arc::new(d), p))
.collect::<Vec<_>>()
} else {
vec![(
self.start_dir.clone(),
self.start_dir.to_resolved_file_patterns(cli_arg_patterns)?,
)]
};
Ok(member_patterns) Ok(member_patterns)
} }
pub fn resolve_lint_options_for_members( pub fn resolve_lint_options_for_members(
&self, &self,
lint_flags: &LintFlags, lint_flags: &LintFlags,
) -> Result<Vec<(WorkspaceDirectory, LintOptions)>, AnyError> { ) -> Result<Vec<(Arc<WorkspaceDirectory>, LintOptions)>, AnyError> {
let cli_arg_patterns = let cli_arg_patterns =
lint_flags.files.as_file_patterns(self.initial_cwd())?; lint_flags.files.as_file_patterns(self.initial_cwd())?;
let member_configs = self let member_configs = if self.flags.is_discovered_config() {
self
.workspace() .workspace()
.resolve_lint_config_for_members(&cli_arg_patterns)?; .resolve_lint_config_for_members(&cli_arg_patterns)?
.into_iter()
.map(|(d, c)| (Arc::new(d), c))
.collect::<Vec<_>>()
} else {
vec![(
self.start_dir.clone(),
self.start_dir.to_lint_config(cli_arg_patterns)?,
)]
};
let mut result = Vec::with_capacity(member_configs.len()); let mut result = Vec::with_capacity(member_configs.len());
for (ctx, config) in member_configs { for (ctx, config) in member_configs {
let options = LintOptions::resolve(config, lint_flags); let options = LintOptions::resolve(config, lint_flags);
@ -1430,18 +1456,26 @@ impl CliOptions {
pub fn resolve_test_options_for_members( pub fn resolve_test_options_for_members(
&self, &self,
test_flags: &TestFlags, test_flags: &TestFlags,
) -> Result<Vec<(WorkspaceDirectory, TestOptions)>, AnyError> { ) -> Result<Vec<(Arc<WorkspaceDirectory>, TestOptions)>, AnyError> {
let cli_arg_patterns = let cli_arg_patterns =
test_flags.files.as_file_patterns(self.initial_cwd())?; test_flags.files.as_file_patterns(self.initial_cwd())?;
let workspace_dir_configs = self let member_options = if self.flags.is_discovered_config() {
self
.workspace() .workspace()
.resolve_test_config_for_members(&cli_arg_patterns)?; .resolve_test_config_for_members(&cli_arg_patterns)?
let mut result = Vec::with_capacity(workspace_dir_configs.len()); .into_iter()
for (member_dir, config) in workspace_dir_configs { .map(|(d, c)| (Arc::new(d), TestOptions::resolve(c, test_flags)))
let options = TestOptions::resolve(config, test_flags); .collect::<Vec<_>>()
result.push((member_dir, options)); } else {
} vec![(
Ok(result) 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( pub fn resolve_workspace_bench_options(
@ -1454,18 +1488,26 @@ impl CliOptions {
pub fn resolve_bench_options_for_members( pub fn resolve_bench_options_for_members(
&self, &self,
bench_flags: &BenchFlags, bench_flags: &BenchFlags,
) -> Result<Vec<(WorkspaceDirectory, BenchOptions)>, AnyError> { ) -> Result<Vec<(Arc<WorkspaceDirectory>, BenchOptions)>, AnyError> {
let cli_arg_patterns = let cli_arg_patterns =
bench_flags.files.as_file_patterns(self.initial_cwd())?; bench_flags.files.as_file_patterns(self.initial_cwd())?;
let workspace_dir_configs = self let member_options = if self.flags.is_discovered_config() {
self
.workspace() .workspace()
.resolve_bench_config_for_members(&cli_arg_patterns)?; .resolve_bench_config_for_members(&cli_arg_patterns)?
let mut result = Vec::with_capacity(workspace_dir_configs.len()); .into_iter()
for (member_dir, config) in workspace_dir_configs { .map(|(d, c)| (Arc::new(d), BenchOptions::resolve(c, bench_flags)))
let options = BenchOptions::resolve(config, bench_flags); .collect::<Vec<_>>()
result.push((member_dir, options)); } else {
} vec![(
Ok(result) 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. /// Vector of user script CLI arguments.

View file

@ -1,7 +1,6 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
use crate::args::BenchFlags; use crate::args::BenchFlags;
use crate::args::BenchOptions;
use crate::args::Flags; use crate::args::Flags;
use crate::colors; use crate::colors;
use crate::display::write_json_to_stdout; use crate::display::write_json_to_stdout;
@ -433,20 +432,11 @@ pub async fn run_benchmarks(
)?; )?;
let log_level = cli_options.log_level(); let log_level = cli_options.log_level();
let workspace_dirs_with_files = if cli_options.is_discovered_config() { let workspace_dirs_with_files = cli_options
cli_options
.resolve_bench_options_for_members(&bench_flags)? .resolve_bench_options_for_members(&bench_flags)?
.into_iter() .into_iter()
.map(|(d, o)| (Arc::new(d), o.files)) .map(|(d, o)| (d, o.files))
.collect() .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 file_container = WorkspaceFileContainer::from_workspace_dirs_with_files( let file_container = WorkspaceFileContainer::from_workspace_dirs_with_files(
workspace_dirs_with_files, workspace_dirs_with_files,
&factory, &factory,
@ -527,20 +517,11 @@ pub async fn run_benchmarks_with_watch(
let log_level = cli_options.log_level(); let log_level = cli_options.log_level();
let _ = watcher_communicator.watch_paths(cli_options.watch_paths()); let _ = watcher_communicator.watch_paths(cli_options.watch_paths());
let workspace_dirs_with_files = if cli_options.is_discovered_config() { let workspace_dirs_with_files = cli_options
cli_options
.resolve_bench_options_for_members(&bench_flags)? .resolve_bench_options_for_members(&bench_flags)?
.into_iter() .into_iter()
.map(|(d, o)| (Arc::new(d), o.files)) .map(|(d, o)| (d, o.files))
.collect() .collect::<Vec<_>>();
} 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 watch_paths = workspace_dirs_with_files let watch_paths = workspace_dirs_with_files
.iter() .iter()
.filter_map(|(_, files)| { .filter_map(|(_, files)| {

View file

@ -50,24 +50,11 @@ pub async fn check(
) -> Result<(), AnyError> { ) -> Result<(), AnyError> {
let factory = CliFactory::from_flags(flags); let factory = CliFactory::from_flags(flags);
let cli_options = factory.cli_options()?; let cli_options = factory.cli_options()?;
let workspace_dirs_with_files = if cli_options.is_discovered_config() { let workspace_dirs_with_files =
cli_options cli_options.resolve_file_flags_for_members(&FileFlags {
.resolve_file_flags_for_members(&FileFlags {
ignore: Default::default(), ignore: Default::default(),
include: check_flags.files, include: check_flags.files,
})? })?;
.into_iter()
.map(|(d, p)| (Arc::new(d), p))
.collect()
} else {
let file_flags = 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( let file_container = WorkspaceFileContainer::from_workspace_dirs_with_files(
workspace_dirs_with_files, workspace_dirs_with_files,
&factory, &factory,

View file

@ -200,7 +200,7 @@ pub async fn lint(
} }
struct PathsWithOptions { struct PathsWithOptions {
dir: WorkspaceDirectory, dir: Arc<WorkspaceDirectory>,
paths: Vec<PathBuf>, paths: Vec<PathBuf>,
options: LintOptions, options: LintOptions,
} }
@ -270,7 +270,7 @@ impl WorkspaceLinter {
cli_options: &Arc<CliOptions>, cli_options: &Arc<CliOptions>,
lint_options: LintOptions, lint_options: LintOptions,
lint_config: LintConfig, lint_config: LintConfig,
member_dir: WorkspaceDirectory, member_dir: Arc<WorkspaceDirectory>,
paths: Vec<PathBuf>, paths: Vec<PathBuf>,
) -> Result<(), AnyError> { ) -> Result<(), AnyError> {
self.file_count += paths.len(); self.file_count += paths.len();

View file

@ -3,7 +3,6 @@
use crate::args::CliOptions; use crate::args::CliOptions;
use crate::args::Flags; use crate::args::Flags;
use crate::args::TestFlags; use crate::args::TestFlags;
use crate::args::TestOptions;
use crate::args::TestReporterConfig; use crate::args::TestReporterConfig;
use crate::colors; use crate::colors;
use crate::display; use crate::display;
@ -1500,20 +1499,11 @@ pub async fn run_tests(
)?; )?;
let log_level = cli_options.log_level(); let log_level = cli_options.log_level();
let workspace_dirs_with_files = if cli_options.is_discovered_config() { let workspace_dirs_with_files = cli_options
cli_options
.resolve_test_options_for_members(&test_flags)? .resolve_test_options_for_members(&test_flags)?
.into_iter() .into_iter()
.map(|(d, o)| (Arc::new(d), o.files)) .map(|(d, o)| (d, o.files))
.collect() .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 file_container = WorkspaceFileContainer::from_workspace_dirs_with_files( let file_container = WorkspaceFileContainer::from_workspace_dirs_with_files(
workspace_dirs_with_files, workspace_dirs_with_files,
&factory, &factory,
@ -1616,20 +1606,11 @@ pub async fn run_tests_with_watch(
let log_level = cli_options.log_level(); let log_level = cli_options.log_level();
let _ = watcher_communicator.watch_paths(cli_options.watch_paths()); let _ = watcher_communicator.watch_paths(cli_options.watch_paths());
let workspace_dirs_with_files = if cli_options.is_discovered_config() { let workspace_dirs_with_files = cli_options
cli_options
.resolve_test_options_for_members(&test_flags)? .resolve_test_options_for_members(&test_flags)?
.into_iter() .into_iter()
.map(|(d, o)| (Arc::new(d), o.files)) .map(|(d, o)| (d, o.files))
.collect() .collect::<Vec<_>>();
} 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 watch_paths = workspace_dirs_with_files let watch_paths = workspace_dirs_with_files
.iter() .iter()
.filter_map(|(_, files)| { .filter_map(|(_, files)| {