diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-05-28 14:58:43 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-28 14:58:43 -0400 |
commit | 448fe67b7a2142f62332b651f9d215534dceb1f5 (patch) | |
tree | 3cfc763f39bf275a537e6228767b3e43866f5d0f /cli/tools | |
parent | cd8f5f53f7616e4c74de0f1ff5eadd6ef024118a (diff) |
feat(vendor): support modifying remote files in vendor folder without checksum errors (#23979)
Includes:
* https://github.com/denoland/deno_graph/pull/486
* https://github.com/denoland/deno_graph/pull/488
* https://github.com/denoland/deno_lockfile/pull/25
* https://github.com/denoland/deno_lockfile/pull/22
* https://github.com/denoland/deno_graph/pull/483
* https://github.com/denoland/deno_graph/pull/470
Diffstat (limited to 'cli/tools')
-rw-r--r-- | cli/tools/doc.rs | 7 | ||||
-rw-r--r-- | cli/tools/info.rs | 25 | ||||
-rw-r--r-- | cli/tools/installer.rs | 3 | ||||
-rw-r--r-- | cli/tools/registry/graph.rs | 4 | ||||
-rw-r--r-- | cli/tools/vendor/build.rs | 14 | ||||
-rw-r--r-- | cli/tools/vendor/mod.rs | 1 | ||||
-rw-r--r-- | cli/tools/vendor/test.rs | 1 |
7 files changed, 16 insertions, 39 deletions
diff --git a/cli/tools/doc.rs b/cli/tools/doc.rs index 0ae9a8483..696823a91 100644 --- a/cli/tools/doc.rs +++ b/cli/tools/doc.rs @@ -8,7 +8,7 @@ use crate::colors; use crate::display::write_json_to_stdout; use crate::display::write_to_stdout_ignore_sigpipe; use crate::factory::CliFactory; -use crate::graph_util::graph_lock_or_exit; +use crate::graph_util::graph_exit_lock_errors; use crate::tsc::get_types_declaration_file_text; use crate::util::fs::collect_specifiers; use deno_ast::diagnostics::Diagnostic; @@ -62,6 +62,7 @@ async fn generate_doc_nodes_for_builtin_types( executor: Default::default(), file_system: &NullFileSystem, jsr_url_provider: Default::default(), + locker: None, module_analyzer: analyzer, npm_resolver: None, reporter: None, @@ -121,8 +122,8 @@ pub async fn doc(flags: Flags, doc_flags: DocFlags) -> Result<(), AnyError> { .create_graph(GraphKind::TypesOnly, module_specifiers.clone()) .await?; - if let Some(lockfile) = maybe_lockfile { - graph_lock_or_exit(&graph, &mut lockfile.lock()); + if maybe_lockfile.is_some() { + graph_exit_lock_errors(&graph); } let doc_parser = doc::DocParser::new( diff --git a/cli/tools/info.rs b/cli/tools/info.rs index 19975571b..b023970f8 100644 --- a/cli/tools/info.rs +++ b/cli/tools/info.rs @@ -7,7 +7,6 @@ use std::fmt::Write; use deno_ast::ModuleSpecifier; use deno_core::anyhow::bail; -use deno_core::anyhow::Context; use deno_core::error::AnyError; use deno_core::resolve_url_or_path; use deno_core::serde_json; @@ -26,11 +25,12 @@ use deno_semver::npm::NpmPackageReqReference; use deno_semver::package::PackageNv; use deno_terminal::colors; +use crate::args::write_lockfile_if_has_changes; use crate::args::Flags; use crate::args::InfoFlags; use crate::display; use crate::factory::CliFactory; -use crate::graph_util::graph_lock_or_exit; +use crate::graph_util::graph_exit_lock_errors; use crate::npm::CliNpmResolver; use crate::npm::ManagedCliNpmResolver; use crate::util::checksum; @@ -68,13 +68,10 @@ pub async fn info(flags: Flags, info_flags: InfoFlags) -> Result<(), AnyError> { .create_graph_with_loader(GraphKind::All, vec![specifier], &mut loader) .await?; - // If there is a lockfile... + // write out the lockfile if there is one if let Some(lockfile) = &maybe_lockfile { - let mut lockfile = lockfile.lock(); - // validate the integrity of all the modules - graph_lock_or_exit(&graph, &mut lockfile); - // update it with anything new - lockfile.write().context("Failed writing lockfile.")?; + graph_exit_lock_errors(&graph); + write_lockfile_if_has_changes(&lockfile.lock())?; } if info_flags.json { @@ -669,18 +666,6 @@ impl<'a> GraphDisplayContext<'a> { ModuleError::Missing(_, _) | ModuleError::MissingDynamic(_, _) => { self.build_error_msg(specifier, "(missing)") } - ModuleError::MissingWorkspaceMemberExports { .. } => { - self.build_error_msg(specifier, "(missing exports)") - } - ModuleError::UnknownExport { .. } => { - self.build_error_msg(specifier, "(unknown export)") - } - ModuleError::UnknownPackage { .. } => { - self.build_error_msg(specifier, "(unknown package)") - } - ModuleError::UnknownPackageReq { .. } => { - self.build_error_msg(specifier, "(unknown package constraint)") - } } } diff --git a/cli/tools/installer.rs b/cli/tools/installer.rs index e0cb5a222..2b518f46f 100644 --- a/cli/tools/installer.rs +++ b/cli/tools/installer.rs @@ -1,6 +1,7 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. use crate::args::resolve_no_prompt; +use crate::args::write_lockfile_if_has_changes; use crate::args::AddFlags; use crate::args::CaData; use crate::args::Flags; @@ -266,7 +267,7 @@ async fn install_local( crate::module_loader::load_top_level_deps(&factory).await?; if let Some(lockfile) = factory.cli_options().maybe_lockfile() { - lockfile.lock().write()?; + write_lockfile_if_has_changes(&lockfile.lock())?; } Ok(()) diff --git a/cli/tools/registry/graph.rs b/cli/tools/registry/graph.rs index d1356df9e..b363efdb4 100644 --- a/cli/tools/registry/graph.rs +++ b/cli/tools/registry/graph.rs @@ -59,8 +59,8 @@ impl GraphDiagnosticsCollector { let maybe_version = graph .packages .mappings() - .find(|(req, _)| *req == jsr_req_ref.req()) - .map(|(_, nv)| nv.version.clone()); + .get(jsr_req_ref.req()) + .map(|nv| nv.version.clone()); diagnostics_collector.push( PublishDiagnostic::MissingConstraint { specifier: resolution.specifier.clone(), diff --git a/cli/tools/vendor/build.rs b/cli/tools/vendor/build.rs index 5435a0035..fd7401f77 100644 --- a/cli/tools/vendor/build.rs +++ b/cli/tools/vendor/build.rs @@ -9,7 +9,6 @@ use deno_core::anyhow::bail; use deno_core::anyhow::Context; use deno_core::error::AnyError; use deno_core::futures::future::LocalBoxFuture; -use deno_core::parking_lot::Mutex; use deno_graph::source::ResolutionMode; use deno_graph::JsModule; use deno_graph::Module; @@ -19,10 +18,8 @@ use import_map::ImportMap; use import_map::SpecifierMap; use crate::args::JsxImportSourceConfig; -use crate::args::Lockfile; use crate::cache::ParsedSourceCache; use crate::graph_util; -use crate::graph_util::graph_lock_or_exit; use crate::tools::vendor::import_map::BuildImportMapInput; use super::analyze::has_default_export; @@ -62,7 +59,6 @@ pub struct BuildInput< pub parsed_source_cache: &'a ParsedSourceCache, pub output_dir: &'a Path, pub maybe_original_import_map: Option<&'a ImportMap>, - pub maybe_lockfile: Option<Arc<Mutex<Lockfile>>>, pub maybe_jsx_import_source: Option<&'a JsxImportSourceConfig>, pub resolver: &'a dyn deno_graph::source::Resolver, pub environment: &'a TEnvironment, @@ -86,7 +82,6 @@ pub async fn build< parsed_source_cache, output_dir, maybe_original_import_map: original_import_map, - maybe_lockfile, maybe_jsx_import_source: jsx_import_source, resolver, environment, @@ -118,20 +113,17 @@ pub async fn build< let graph = build_graph(entry_points).await?; - // check the lockfile - if let Some(lockfile) = maybe_lockfile { - graph_lock_or_exit(&graph, &mut lockfile.lock()); - } - // surface any errors + let real_fs = Arc::new(deno_fs::RealFs) as Arc<dyn deno_fs::FileSystem>; graph_util::graph_valid( &graph, - Arc::new(deno_fs::RealFs), + &real_fs, &graph.roots, graph_util::GraphValidOptions { is_vendoring: true, check_js: true, follow_type_only: true, + exit_lockfile_errors: true, }, )?; diff --git a/cli/tools/vendor/mod.rs b/cli/tools/vendor/mod.rs index cf10b77c7..a8d8000d8 100644 --- a/cli/tools/vendor/mod.rs +++ b/cli/tools/vendor/mod.rs @@ -65,7 +65,6 @@ pub async fn vendor( parsed_source_cache: factory.parsed_source_cache(), output_dir: &output_dir, maybe_original_import_map: factory.maybe_import_map().await?.as_deref(), - maybe_lockfile: factory.maybe_lockfile().clone(), maybe_jsx_import_source: jsx_import_source.as_ref(), resolver: factory.resolver().await?.as_graph_resolver(), environment: &build::RealVendorEnvironment, diff --git a/cli/tools/vendor/test.rs b/cli/tools/vendor/test.rs index b4993565d..830d5f8f0 100644 --- a/cli/tools/vendor/test.rs +++ b/cli/tools/vendor/test.rs @@ -258,7 +258,6 @@ impl VendorTestBuilder { parsed_source_cache: &parsed_source_cache, output_dir: &output_dir, maybe_original_import_map: self.original_import_map.as_ref(), - maybe_lockfile: None, maybe_jsx_import_source: self.jsx_import_source_config.as_ref(), resolver: resolver.as_graph_resolver(), environment: &self.environment, |