diff options
Diffstat (limited to 'cli/tools/registry/mod.rs')
-rw-r--r-- | cli/tools/registry/mod.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/cli/tools/registry/mod.rs b/cli/tools/registry/mod.rs index cb3428b60..e323c6c79 100644 --- a/cli/tools/registry/mod.rs +++ b/cli/tools/registry/mod.rs @@ -9,6 +9,8 @@ use std::sync::Arc; use base64::prelude::BASE64_STANDARD; use base64::Engine; +use deno_ast::ModuleSpecifier; +use deno_config::glob::FilePatterns; use deno_config::ConfigFile; use deno_config::WorkspaceMemberConfig; use deno_core::anyhow::bail; @@ -151,6 +153,14 @@ async fn prepare_publish( sloppy_imports_resolver.as_ref(), bare_node_builtins, ); + let root_specifier = + ModuleSpecifier::from_directory_path(&dir_path).unwrap(); + collect_excluded_module_diagnostics( + &root_specifier, + &graph, + file_patterns.as_ref(), + &diagnostics_collector, + ); tar::create_gzipped_tarball( &dir_path, &cli_options, @@ -192,6 +202,28 @@ async fn prepare_publish( })) } +fn collect_excluded_module_diagnostics( + root: &ModuleSpecifier, + graph: &deno_graph::ModuleGraph, + file_patterns: Option<&FilePatterns>, + diagnostics_collector: &PublishDiagnosticsCollector, +) { + let Some(file_patterns) = file_patterns else { + return; + }; + let specifiers = graph + .specifiers() + .map(|(s, _)| s) + .filter(|s| s.as_str().starts_with(root.as_str())); + for specifier in specifiers { + if !file_patterns.matches_specifier(specifier) { + diagnostics_collector.push(PublishDiagnostic::ExcludedModule { + specifier: specifier.clone(), + }); + } + } +} + #[derive(Serialize)] #[serde(tag = "permission")] pub enum Permission<'s> { |