summaryrefslogtreecommitdiff
path: root/cli/file_fetcher.rs
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/file_fetcher.rs
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/file_fetcher.rs')
-rw-r--r--cli/file_fetcher.rs23
1 files changed, 19 insertions, 4 deletions
diff --git a/cli/file_fetcher.rs b/cli/file_fetcher.rs
index eda579b2b..a8d835d0e 100644
--- a/cli/file_fetcher.rs
+++ b/cli/file_fetcher.rs
@@ -253,15 +253,30 @@ impl FileFetcher {
deno_core::resolve_import(redirect_to, specifier.as_str())?;
return Ok(Some(FileOrRedirect::Redirect(redirect)));
}
- let Some(bytes) = self.http_cache.read_file_bytes(
+ let result = self.http_cache.read_file_bytes(
&cache_key,
maybe_checksum
.as_ref()
.map(|c| deno_cache_dir::Checksum::new(c.as_str())),
deno_cache_dir::GlobalToLocalCopy::Allow,
- )?
- else {
- return Ok(None);
+ );
+ let bytes = match result {
+ Ok(Some(bytes)) => bytes,
+ Ok(None) => return Ok(None),
+ Err(err) => match err {
+ deno_cache_dir::CacheReadFileError::Io(err) => return Err(err.into()),
+ deno_cache_dir::CacheReadFileError::ChecksumIntegrity(err) => {
+ // convert to the equivalent deno_graph error so that it
+ // enhances it if this is passed to deno_graph
+ return Err(
+ deno_graph::source::ChecksumIntegrityError {
+ actual: err.actual,
+ expected: err.expected,
+ }
+ .into(),
+ );
+ }
+ },
};
Ok(Some(FileOrRedirect::File(File {