mirror of
https://github.com/denoland/deno.git
synced 2025-01-21 21:50:00 -05:00
fix file patterns
This commit is contained in:
parent
9707974671
commit
7a3a73c782
1 changed files with 26 additions and 39 deletions
|
@ -9,6 +9,7 @@ use std::sync::Arc;
|
||||||
use deno_ast::MediaType;
|
use deno_ast::MediaType;
|
||||||
use deno_ast::ModuleSpecifier;
|
use deno_ast::ModuleSpecifier;
|
||||||
use deno_config::deno_json::get_ts_config_for_emit;
|
use deno_config::deno_json::get_ts_config_for_emit;
|
||||||
|
use deno_config::glob::FilePatterns;
|
||||||
use deno_config::glob::PathOrPattern;
|
use deno_config::glob::PathOrPattern;
|
||||||
use deno_core::anyhow::anyhow;
|
use deno_core::anyhow::anyhow;
|
||||||
use deno_core::error::AnyError;
|
use deno_core::error::AnyError;
|
||||||
|
@ -45,6 +46,8 @@ use crate::tsc;
|
||||||
use crate::tsc::Diagnostics;
|
use crate::tsc::Diagnostics;
|
||||||
use crate::tsc::TypeCheckingCjsTracker;
|
use crate::tsc::TypeCheckingCjsTracker;
|
||||||
use crate::util::extract;
|
use crate::util::extract;
|
||||||
|
use crate::util::fs::collect_specifiers;
|
||||||
|
use crate::util::path::is_script_ext;
|
||||||
use crate::util::path::to_percent_decoded_str;
|
use crate::util::path::to_percent_decoded_str;
|
||||||
|
|
||||||
pub async fn check(
|
pub async fn check(
|
||||||
|
@ -69,11 +72,6 @@ pub async fn check(
|
||||||
|| f.starts_with("npm:")
|
|| f.starts_with("npm:")
|
||||||
|| f.starts_with("jsr:")
|
|| f.starts_with("jsr:")
|
||||||
});
|
});
|
||||||
let cwd_prefix = format!(
|
|
||||||
"{}{}",
|
|
||||||
cli_options.initial_cwd().to_string_lossy(),
|
|
||||||
std::path::MAIN_SEPARATOR
|
|
||||||
);
|
|
||||||
// TODO(nayeemrmn): Using lint options for now. Add proper API to deno_config.
|
// TODO(nayeemrmn): Using lint options for now. Add proper API to deno_config.
|
||||||
let mut by_workspace_directory = cli_options
|
let mut by_workspace_directory = cli_options
|
||||||
.resolve_lint_options_for_members(&LintFlags {
|
.resolve_lint_options_for_members(&LintFlags {
|
||||||
|
@ -84,34 +82,21 @@ pub async fn check(
|
||||||
..Default::default()
|
..Default::default()
|
||||||
})?
|
})?
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|(d, o)| {
|
.flat_map(|(d, o)| {
|
||||||
let files = o
|
Some((d.dir_url().clone(), (Arc::new(d), o.files.include?)))
|
||||||
.files
|
|
||||||
.include
|
|
||||||
.iter()
|
|
||||||
.flat_map(|p| {
|
|
||||||
p.inner().iter().flat_map(|p| match p {
|
|
||||||
PathOrPattern::NegatedPath(_) => None,
|
|
||||||
PathOrPattern::Path(p) => Some(p.to_string_lossy().to_string()),
|
|
||||||
PathOrPattern::Pattern(p) => {
|
|
||||||
// TODO(nayeemrmn): Absolute globs don't work for specifier
|
|
||||||
// collection, we make them relative here for now.
|
|
||||||
let s = p.as_str();
|
|
||||||
Some(s.strip_prefix(&cwd_prefix).unwrap_or(&s).to_string())
|
|
||||||
}
|
|
||||||
PathOrPattern::RemoteUrl(_) => None,
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
(d.dir_url().clone(), (Arc::new(d), files))
|
|
||||||
})
|
})
|
||||||
.collect::<BTreeMap<_, _>>();
|
.collect::<BTreeMap<_, _>>();
|
||||||
if !remote_files.is_empty() {
|
if !remote_files.is_empty() {
|
||||||
by_workspace_directory
|
by_workspace_directory
|
||||||
.entry(cli_options.start_dir.dir_url().clone())
|
.entry(cli_options.start_dir.dir_url().clone())
|
||||||
.or_insert((cli_options.start_dir.clone(), vec![]))
|
.or_insert((cli_options.start_dir.clone(), Default::default()))
|
||||||
.1
|
.1
|
||||||
.extend(remote_files);
|
.append(
|
||||||
|
remote_files
|
||||||
|
.iter()
|
||||||
|
.flat_map(|s| ModuleSpecifier::parse(s).ok())
|
||||||
|
.map(PathOrPattern::RemoteUrl),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
let all_scopes = Arc::new(
|
let all_scopes = Arc::new(
|
||||||
by_workspace_directory
|
by_workspace_directory
|
||||||
|
@ -121,14 +106,10 @@ pub async fn check(
|
||||||
.collect::<BTreeSet<_>>(),
|
.collect::<BTreeSet<_>>(),
|
||||||
);
|
);
|
||||||
let dir_count = by_workspace_directory.len();
|
let dir_count = by_workspace_directory.len();
|
||||||
|
let initial_cwd = cli_options.initial_cwd().to_path_buf();
|
||||||
let mut check_errors = vec![];
|
let mut check_errors = vec![];
|
||||||
let mut found_specifiers = false;
|
let mut found_specifiers = false;
|
||||||
for (dir_url, (workspace_directory, files)) in by_workspace_directory {
|
for (dir_url, (workspace_directory, patterns)) in by_workspace_directory {
|
||||||
let check_flags = CheckFlags {
|
|
||||||
files,
|
|
||||||
doc: check_flags.doc,
|
|
||||||
doc_only: check_flags.doc_only,
|
|
||||||
};
|
|
||||||
let (npmrc, _) =
|
let (npmrc, _) =
|
||||||
discover_npmrc_from_workspace(&workspace_directory.workspace)?;
|
discover_npmrc_from_workspace(&workspace_directory.workspace)?;
|
||||||
let lockfile =
|
let lockfile =
|
||||||
|
@ -141,22 +122,29 @@ pub async fn check(
|
||||||
});
|
});
|
||||||
let cli_options = CliOptions::new(
|
let cli_options = CliOptions::new(
|
||||||
flags.clone(),
|
flags.clone(),
|
||||||
cli_options.initial_cwd().to_path_buf(),
|
initial_cwd.clone(),
|
||||||
lockfile.map(Arc::new),
|
lockfile.map(Arc::new),
|
||||||
npmrc,
|
npmrc,
|
||||||
workspace_directory,
|
workspace_directory,
|
||||||
false,
|
false,
|
||||||
scope_options.map(Arc::new),
|
scope_options.map(Arc::new),
|
||||||
)?;
|
)?;
|
||||||
let factory = CliFactory::from_cli_options(Arc::new(cli_options));
|
let specifiers = collect_specifiers(
|
||||||
let main_graph_container = factory.main_module_graph_container().await?;
|
FilePatterns {
|
||||||
let specifiers =
|
include: Some(patterns),
|
||||||
main_graph_container.collect_specifiers(&check_flags.files)?;
|
exclude: cli_options.workspace().resolve_config_excludes()?,
|
||||||
|
base: initial_cwd.clone(),
|
||||||
|
},
|
||||||
|
cli_options.vendor_dir_path().map(ToOwned::to_owned),
|
||||||
|
|e| is_script_ext(e.path),
|
||||||
|
)?;
|
||||||
if specifiers.is_empty() {
|
if specifiers.is_empty() {
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
found_specifiers = true;
|
found_specifiers = true;
|
||||||
}
|
}
|
||||||
|
let factory = CliFactory::from_cli_options(Arc::new(cli_options));
|
||||||
|
let main_graph_container = factory.main_module_graph_container().await?;
|
||||||
let specifiers_for_typecheck = if check_flags.doc || check_flags.doc_only
|
let specifiers_for_typecheck = if check_flags.doc || check_flags.doc_only
|
||||||
{
|
{
|
||||||
let file_fetcher = factory.file_fetcher()?;
|
let file_fetcher = factory.file_fetcher()?;
|
||||||
|
@ -174,7 +162,6 @@ pub async fn check(
|
||||||
file_fetcher.insert_memory_files(snippet_file);
|
file_fetcher.insert_memory_files(snippet_file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
specifiers_for_typecheck
|
specifiers_for_typecheck
|
||||||
} else {
|
} else {
|
||||||
specifiers
|
specifiers
|
||||||
|
|
Loading…
Add table
Reference in a new issue