summaryrefslogtreecommitdiff
path: root/cli/tools
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-05-28 14:58:43 -0400
committerGitHub <noreply@github.com>2024-05-28 14:58:43 -0400
commit448fe67b7a2142f62332b651f9d215534dceb1f5 (patch)
tree3cfc763f39bf275a537e6228767b3e43866f5d0f /cli/tools
parentcd8f5f53f7616e4c74de0f1ff5eadd6ef024118a (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.rs7
-rw-r--r--cli/tools/info.rs25
-rw-r--r--cli/tools/installer.rs3
-rw-r--r--cli/tools/registry/graph.rs4
-rw-r--r--cli/tools/vendor/build.rs14
-rw-r--r--cli/tools/vendor/mod.rs1
-rw-r--r--cli/tools/vendor/test.rs1
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,