summaryrefslogtreecommitdiff
path: root/cli/tools
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tools')
-rw-r--r--cli/tools/registry/mod.rs18
-rw-r--r--cli/tools/registry/tar.rs18
2 files changed, 24 insertions, 12 deletions
diff --git a/cli/tools/registry/mod.rs b/cli/tools/registry/mod.rs
index d9d0663c6..3b8ffcd04 100644
--- a/cli/tools/registry/mod.rs
+++ b/cli/tools/registry/mod.rs
@@ -27,6 +27,7 @@ use crate::args::deno_registry_url;
use crate::args::CliOptions;
use crate::args::Flags;
use crate::args::PublishFlags;
+use crate::cache::ParsedSourceCache;
use crate::factory::CliFactory;
use crate::graph_util::ModuleGraphBuilder;
use crate::http_util::HttpClient;
@@ -84,6 +85,7 @@ fn get_deno_json_package_name(
async fn prepare_publish(
deno_json: &ConfigFile,
+ source_cache: Arc<ParsedSourceCache>,
import_map: Arc<ImportMap>,
) -> Result<Rc<PreparedPublishPackage>, AnyError> {
let config_path = deno_json.specifier.to_file_path().unwrap();
@@ -132,8 +134,13 @@ async fn prepare_publish(
let tarball = deno_core::unsync::spawn_blocking(move || {
let unfurler = ImportMapUnfurler::new(&import_map);
- tar::create_gzipped_tarball(&dir_path, &unfurler, &exclude_patterns)
- .context("Failed to create a tarball")
+ tar::create_gzipped_tarball(
+ &dir_path,
+ &*source_cache,
+ &unfurler,
+ &exclude_patterns,
+ )
+ .context("Failed to create a tarball")
})
.await??;
@@ -683,6 +690,7 @@ async fn prepare_packages_for_publishing(
> {
let maybe_workspace_config = deno_json.to_workspace_config()?;
let module_graph_builder = cli_factory.module_graph_builder().await?.as_ref();
+ let source_cache = cli_factory.parsed_source_cache();
let type_checker = cli_factory.type_checker().await?;
let cli_options = cli_factory.cli_options();
@@ -700,7 +708,8 @@ async fn prepare_packages_for_publishing(
)
.await?;
let mut prepared_package_by_name = HashMap::with_capacity(1);
- let package = prepare_publish(&deno_json, import_map).await?;
+ let package =
+ prepare_publish(&deno_json, source_cache.clone(), import_map).await?;
let package_name = format!("@{}/{}", package.scope, package.package);
let publish_order_graph =
PublishOrderGraph::new_single(package_name.clone());
@@ -731,8 +740,9 @@ async fn prepare_packages_for_publishing(
.cloned()
.map(|member| {
let import_map = import_map.clone();
+ let source_cache = source_cache.clone();
deno_core::unsync::spawn(async move {
- let package = prepare_publish(&member.config_file, import_map)
+ let package = prepare_publish(&member.config_file, source_cache, import_map)
.await
.with_context(|| {
format!("Failed preparing '{}'.", member.package_name)
diff --git a/cli/tools/registry/tar.rs b/cli/tools/registry/tar.rs
index 6eaaf1095..0f6edbc3a 100644
--- a/cli/tools/registry/tar.rs
+++ b/cli/tools/registry/tar.rs
@@ -31,8 +31,7 @@ pub struct PublishableTarball {
pub fn create_gzipped_tarball(
dir: &Path,
- // TODO(bartlomieju): this is too specific, factor it out into a callback that
- // returns data
+ source_cache: &dyn deno_graph::ParsedSourceStore,
unfurler: &ImportMapUnfurler,
exclude_patterns: &PathOrPatternSet,
) -> Result<PublishableTarball, AnyError> {
@@ -71,12 +70,15 @@ pub fn create_gzipped_tarball(
path: relative_path.to_path_buf(),
size: data.len(),
});
- let (content, unfurl_diagnostics) =
- unfurler.unfurl(&url, data).with_context(|| {
- format!("Unable to unfurl file '{}'", entry.path().display())
- })?;
-
- diagnostics.extend_from_slice(&unfurl_diagnostics);
+ let content = match source_cache.get_parsed_source(&url) {
+ Some(parsed_source) => {
+ let (content, unfurl_diagnostics) =
+ unfurler.unfurl(&url, &parsed_source);
+ diagnostics.extend_from_slice(&unfurl_diagnostics);
+ content.into_bytes()
+ }
+ None => data,
+ };
tar
.add_file(relative_path_str.to_string(), &content)
.with_context(|| {