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/file_fetcher.rs | |
| 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/file_fetcher.rs')
| -rw-r--r-- | cli/file_fetcher.rs | 23 |
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 { |
