diff options
author | Yazan AbdAl-Rahman <yazan.abdalrahman@exalt.ps> | 2024-08-20 21:38:06 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-20 18:38:06 +0000 |
commit | a7c8bb1596411f91e20ddd5cd54c9dbd055d1059 (patch) | |
tree | 408ed9e2935b4749820c30314087e801b0c280c4 /cli/graph_container.rs | |
parent | 1f47248143b2298d38dbada5b431570c067ed663 (diff) |
feat: glob and directory support for `deno check` and `deno cache` cli arg paths (#25001)
Closes #24668
Closes #20813
---------
Co-authored-by: David Sherret <dsherret@gmail.com>
Diffstat (limited to 'cli/graph_container.rs')
-rw-r--r-- | cli/graph_container.rs | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/cli/graph_container.rs b/cli/graph_container.rs index cf913464f..9f71045c6 100644 --- a/cli/graph_container.rs +++ b/cli/graph_container.rs @@ -3,15 +3,18 @@ use std::sync::Arc; use deno_ast::ModuleSpecifier; +use deno_config::glob::FilePatterns; +use deno_config::glob::PathOrPatternSet; use deno_core::error::AnyError; use deno_core::parking_lot::RwLock; -use deno_core::resolve_url_or_path; use deno_graph::ModuleGraph; use deno_runtime::colors; use deno_runtime::deno_permissions::PermissionsContainer; use crate::args::CliOptions; use crate::module_loader::ModuleLoadPreparer; +use crate::util::fs::collect_specifiers; +use crate::util::path::is_script_ext; pub trait ModuleGraphContainer: Clone + 'static { /// Acquires a permit to modify the module graph without other code @@ -99,24 +102,20 @@ impl MainModuleGraphContainer { files: &[String], ) -> Result<Vec<ModuleSpecifier>, AnyError> { let excludes = self.cli_options.workspace().resolve_config_excludes()?; - Ok( - files - .iter() - .filter_map(|file| { - let file_url = - resolve_url_or_path(file, self.cli_options.initial_cwd()).ok()?; - if file_url.scheme() != "file" { - return Some(file_url); - } - // ignore local files that match any of files listed in `exclude` option - let file_path = file_url.to_file_path().ok()?; - if excludes.matches_path(&file_path) { - None - } else { - Some(file_url) - } - }) - .collect::<Vec<_>>(), + let include_patterns = + PathOrPatternSet::from_include_relative_path_or_patterns( + self.cli_options.initial_cwd(), + files, + )?; + let file_patterns = FilePatterns { + base: self.cli_options.initial_cwd().to_path_buf(), + include: Some(include_patterns), + exclude: excludes, + }; + collect_specifiers( + file_patterns, + self.cli_options.vendor_dir_path().map(ToOwned::to_owned), + |e| is_script_ext(e.path), ) } } |