diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-03-21 14:42:23 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-21 21:42:23 +0000 |
commit | f96f167dc8cc733b43d67801f568b2d546bc2fb9 (patch) | |
tree | 5647b96beaa94da10bf73a29a55bdf7ed2018a62 /cli/tools/registry/mod.rs | |
parent | ffbcad3800ef086bad791c1c640b62fd72d60172 (diff) |
feat(unstable/publish): error when a package's module is excluded from publishing (#22948)
Closes #22657
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> { |