summaryrefslogtreecommitdiff
path: root/cli/args/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/args/mod.rs')
-rw-r--r--cli/args/mod.rs283
1 files changed, 52 insertions, 231 deletions
diff --git a/cli/args/mod.rs b/cli/args/mod.rs
index a54003277..950ba72e2 100644
--- a/cli/args/mod.rs
+++ b/cli/args/mod.rs
@@ -83,7 +83,6 @@ use crate::file_fetcher::FileFetcher;
use crate::util::fs::canonicalize_path_maybe_not_exists;
use crate::version;
-use deno_config::glob::PathOrPatternSet;
use deno_config::FmtConfig;
use deno_config::LintConfig;
use deno_config::TestConfig;
@@ -274,18 +273,11 @@ pub struct BenchOptions {
}
impl BenchOptions {
- pub fn resolve(
- bench_config: BenchConfig,
- bench_flags: &BenchFlags,
- maybe_flags_base: Option<&Path>,
- ) -> Result<Self, AnyError> {
- Ok(Self {
- files: resolve_files(
- bench_config.files,
- &bench_flags.files,
- maybe_flags_base,
- )?,
- })
+ pub fn resolve(bench_config: BenchConfig, _bench_flags: &BenchFlags) -> Self {
+ // this is the same, but keeping the same pattern as everywhere else for the future
+ Self {
+ files: bench_config.files,
+ }
}
}
@@ -309,19 +301,11 @@ impl FmtOptions {
}
}
- pub fn resolve(
- fmt_config: FmtConfig,
- fmt_flags: &FmtFlags,
- maybe_flags_base: Option<&Path>,
- ) -> Result<Self, AnyError> {
- Ok(Self {
+ pub fn resolve(fmt_config: FmtConfig, fmt_flags: &FmtFlags) -> Self {
+ Self {
options: resolve_fmt_options(fmt_flags, fmt_config.options),
- files: resolve_files(
- fmt_config.files,
- &fmt_flags.files,
- maybe_flags_base,
- )?,
- })
+ files: fmt_config.files,
+ }
}
}
@@ -401,18 +385,11 @@ pub struct TestOptions {
}
impl TestOptions {
- pub fn resolve(
- test_config: TestConfig,
- test_flags: TestFlags,
- maybe_flags_base: Option<&Path>,
- ) -> Result<Self, AnyError> {
- Ok(Self {
- files: resolve_files(
- test_config.files,
- &test_flags.files,
- maybe_flags_base,
- )?,
- })
+ pub fn resolve(test_config: TestConfig, _test_flags: &TestFlags) -> Self {
+ // this is the same, but keeping the same pattern as everywhere else for the future
+ Self {
+ files: test_config.files,
+ }
}
}
@@ -482,25 +459,17 @@ impl LintOptions {
}
}
- pub fn resolve(
- lint_config: LintConfig,
- lint_flags: LintFlags,
- maybe_flags_base: Option<&Path>,
- ) -> Result<Self, AnyError> {
- Ok(Self {
- files: resolve_files(
- lint_config.files,
- &lint_flags.files,
- maybe_flags_base,
- )?,
+ pub fn resolve(lint_config: LintConfig, lint_flags: &LintFlags) -> Self {
+ Self {
+ files: lint_config.files,
rules: resolve_lint_rules_options(
- lint_config.rules,
- lint_flags.maybe_rules_tags,
- lint_flags.maybe_rules_include,
- lint_flags.maybe_rules_exclude,
+ lint_config.options.rules,
+ lint_flags.maybe_rules_tags.clone(),
+ lint_flags.maybe_rules_include.clone(),
+ lint_flags.maybe_rules_exclude.clone(),
),
fix: lint_flags.fix,
- })
+ }
}
}
@@ -907,9 +876,9 @@ impl CliOptions {
let workspace = match &flags.config_flag {
deno_config::ConfigFlag::Discover => {
- if let Some(start_dirs) = flags.config_path_args(&initial_cwd) {
+ if let Some(start_paths) = flags.config_path_args(&initial_cwd) {
Workspace::discover(
- WorkspaceDiscoverStart::Dirs(&start_dirs),
+ WorkspaceDiscoverStart::Paths(&start_paths),
&resolve_workspace_discover_options(),
)?
} else {
@@ -1355,28 +1324,20 @@ impl CliOptions {
pub fn resolve_fmt_options_for_members(
&self,
fmt_flags: &FmtFlags,
- ) -> Result<Vec<FmtOptions>, AnyError> {
+ ) -> Result<Vec<(WorkspaceMemberContext, FmtOptions)>, AnyError> {
let cli_arg_patterns =
fmt_flags.files.as_file_patterns(self.initial_cwd())?;
- let member_ctxs =
- self.workspace.resolve_ctxs_from_patterns(&cli_arg_patterns);
- let mut result = Vec::with_capacity(member_ctxs.len());
- for member_ctx in &member_ctxs {
- let options = self.resolve_fmt_options(fmt_flags, member_ctx)?;
- result.push(options);
+ let member_configs = self
+ .workspace
+ .resolve_fmt_config_for_members(&cli_arg_patterns)?;
+ let mut result = Vec::with_capacity(member_configs.len());
+ for (ctx, config) in member_configs {
+ let options = FmtOptions::resolve(config, fmt_flags);
+ result.push((ctx, options));
}
Ok(result)
}
- pub fn resolve_fmt_options(
- &self,
- fmt_flags: &FmtFlags,
- ctx: &WorkspaceMemberContext,
- ) -> Result<FmtOptions, AnyError> {
- let fmt_config = ctx.to_fmt_config()?;
- FmtOptions::resolve(fmt_config, fmt_flags, Some(&self.initial_cwd))
- }
-
pub fn resolve_workspace_lint_options(
&self,
lint_flags: &LintFlags,
@@ -1391,27 +1352,18 @@ impl CliOptions {
) -> Result<Vec<(WorkspaceMemberContext, LintOptions)>, AnyError> {
let cli_arg_patterns =
lint_flags.files.as_file_patterns(self.initial_cwd())?;
- let member_ctxs =
- self.workspace.resolve_ctxs_from_patterns(&cli_arg_patterns);
- let mut result = Vec::with_capacity(member_ctxs.len());
- for member_ctx in member_ctxs {
- let options =
- self.resolve_lint_options(lint_flags.clone(), &member_ctx)?;
- result.push((member_ctx, options));
+ let member_configs = self
+ .workspace
+ .resolve_lint_config_for_members(&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);
+ result.push((ctx, options));
}
Ok(result)
}
- pub fn resolve_lint_options(
- &self,
- lint_flags: LintFlags,
- ctx: &WorkspaceMemberContext,
- ) -> Result<LintOptions, AnyError> {
- let lint_config = ctx.to_lint_config()?;
- LintOptions::resolve(lint_config, lint_flags, Some(&self.initial_cwd))
- }
-
- pub fn resolve_lint_config(
+ pub fn resolve_deno_lint_config(
&self,
) -> Result<deno_lint::linter::LintConfig, AnyError> {
let ts_config_result =
@@ -1445,12 +1397,12 @@ impl CliOptions {
) -> Result<Vec<(WorkspaceMemberContext, TestOptions)>, AnyError> {
let cli_arg_patterns =
test_flags.files.as_file_patterns(self.initial_cwd())?;
- let member_ctxs =
- self.workspace.resolve_ctxs_from_patterns(&cli_arg_patterns);
+ let member_ctxs = self
+ .workspace
+ .resolve_test_config_for_members(&cli_arg_patterns)?;
let mut result = Vec::with_capacity(member_ctxs.len());
- for member_ctx in member_ctxs {
- let options =
- self.resolve_test_options(test_flags.clone(), &member_ctx)?;
+ for (member_ctx, config) in member_ctxs {
+ let options = TestOptions::resolve(config, test_flags);
result.push((member_ctx, options));
}
Ok(result)
@@ -1463,40 +1415,23 @@ impl CliOptions {
WorkspaceBenchOptions::resolve(bench_flags)
}
- pub fn resolve_test_options(
- &self,
- test_flags: TestFlags,
- ctx: &WorkspaceMemberContext,
- ) -> Result<TestOptions, AnyError> {
- let test_config = ctx.to_test_config()?;
- TestOptions::resolve(test_config, test_flags, Some(&self.initial_cwd))
- }
-
pub fn resolve_bench_options_for_members(
&self,
bench_flags: &BenchFlags,
) -> Result<Vec<(WorkspaceMemberContext, BenchOptions)>, AnyError> {
let cli_arg_patterns =
bench_flags.files.as_file_patterns(self.initial_cwd())?;
- let member_ctxs =
- self.workspace.resolve_ctxs_from_patterns(&cli_arg_patterns);
+ let member_ctxs = self
+ .workspace
+ .resolve_bench_config_for_members(&cli_arg_patterns)?;
let mut result = Vec::with_capacity(member_ctxs.len());
- for member_ctx in member_ctxs {
- let options = self.resolve_bench_options(bench_flags, &member_ctx)?;
+ for (member_ctx, config) in member_ctxs {
+ let options = BenchOptions::resolve(config, bench_flags);
result.push((member_ctx, options));
}
Ok(result)
}
- pub fn resolve_bench_options(
- &self,
- bench_flags: &BenchFlags,
- ctx: &WorkspaceMemberContext,
- ) -> Result<BenchOptions, AnyError> {
- let bench_config = ctx.to_bench_config()?;
- BenchOptions::resolve(bench_config, bench_flags, Some(&self.initial_cwd))
- }
-
pub fn resolve_deno_graph_workspace_members(
&self,
) -> Result<Vec<deno_graph::WorkspaceMember>, AnyError> {
@@ -1873,31 +1808,6 @@ impl StorageKeyResolver {
}
}
-/// Collect included and ignored files. CLI flags take precedence
-/// over config file, i.e. if there's `files.ignore` in config file
-/// and `--ignore` CLI flag, only the flag value is taken into account.
-fn resolve_files(
- mut files_config: FilePatterns,
- file_flags: &FileFlags,
- maybe_flags_base: Option<&Path>,
-) -> Result<FilePatterns, AnyError> {
- if !file_flags.include.is_empty() {
- files_config.include =
- Some(PathOrPatternSet::from_include_relative_path_or_patterns(
- maybe_flags_base.unwrap_or(&files_config.base),
- &file_flags.include,
- )?);
- }
- if !file_flags.ignore.is_empty() {
- files_config.exclude =
- PathOrPatternSet::from_exclude_relative_path_or_patterns(
- maybe_flags_base.unwrap_or(&files_config.base),
- &file_flags.ignore,
- )?;
- }
- Ok(files_config)
-}
-
/// Resolves the no_prompt value based on the cli flags and environment.
pub fn resolve_no_prompt(flags: &PermissionFlags) -> bool {
flags.no_prompt || has_flag_env_var("DENO_NO_PROMPT")
@@ -1937,10 +1847,10 @@ pub fn config_to_deno_graph_workspace_member(
#[cfg(test)]
mod test {
- use super::*;
- use deno_config::glob::FileCollector;
use pretty_assertions::assert_eq;
+ use super::*;
+
#[test]
fn resolve_import_map_flags_take_precedence() {
let config_text = r#"{
@@ -2019,95 +1929,6 @@ mod test {
}
#[test]
- fn resolve_files_test() {
- use test_util::TempDir;
- let temp_dir = TempDir::new();
-
- temp_dir.create_dir_all("data");
- temp_dir.create_dir_all("nested");
- temp_dir.create_dir_all("nested/foo");
- temp_dir.create_dir_all("nested/fizz");
- temp_dir.create_dir_all("pages");
-
- temp_dir.write("data/tes.ts", "");
- temp_dir.write("data/test1.js", "");
- temp_dir.write("data/test1.ts", "");
- temp_dir.write("data/test12.ts", "");
-
- temp_dir.write("nested/foo/foo.ts", "");
- temp_dir.write("nested/foo/bar.ts", "");
- temp_dir.write("nested/foo/fizz.ts", "");
- temp_dir.write("nested/foo/bazz.ts", "");
-
- temp_dir.write("nested/fizz/foo.ts", "");
- temp_dir.write("nested/fizz/bar.ts", "");
- temp_dir.write("nested/fizz/fizz.ts", "");
- temp_dir.write("nested/fizz/bazz.ts", "");
-
- temp_dir.write("pages/[id].ts", "");
-
- let temp_dir_path = temp_dir.path().as_path();
- let error = PathOrPatternSet::from_include_relative_path_or_patterns(
- temp_dir_path,
- &["data/**********.ts".to_string()],
- )
- .unwrap_err();
- assert!(error.to_string().starts_with("Failed to expand glob"));
-
- let resolved_files = resolve_files(
- FilePatterns {
- base: temp_dir_path.to_path_buf(),
- include: Some(
- PathOrPatternSet::from_include_relative_path_or_patterns(
- temp_dir_path,
- &[
- "data/test1.?s".to_string(),
- "nested/foo/*.ts".to_string(),
- "nested/fizz/*.ts".to_string(),
- "pages/[id].ts".to_string(),
- ],
- )
- .unwrap(),
- ),
- exclude: PathOrPatternSet::from_exclude_relative_path_or_patterns(
- temp_dir_path,
- &["nested/**/*bazz.ts".to_string()],
- )
- .unwrap(),
- },
- &Default::default(),
- Some(temp_dir_path),
- )
- .unwrap();
-
- let mut files = FileCollector::new(|_| true)
- .ignore_git_folder()
- .ignore_node_modules()
- .collect_file_patterns(&deno_config::fs::RealDenoConfigFs, resolved_files)
- .unwrap();
-
- files.sort();
-
- assert_eq!(
- files,
- vec![
- "data/test1.js",
- "data/test1.ts",
- "nested/fizz/bar.ts",
- "nested/fizz/fizz.ts",
- "nested/fizz/foo.ts",
- "nested/foo/bar.ts",
- "nested/foo/fizz.ts",
- "nested/foo/foo.ts",
- "pages/[id].ts",
- ]
- .into_iter()
- .map(|p| deno_core::normalize_path(temp_dir_path.join(p)))
- .collect::<Vec<_>>()
- );
- }
-
- #[test]
fn jsr_urls() {
let reg_url = jsr_url();
assert!(reg_url.as_str().ends_with('/'));