diff options
Diffstat (limited to 'cli/disk_cache.rs')
-rw-r--r-- | cli/disk_cache.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/cli/disk_cache.rs b/cli/disk_cache.rs index a6689c6ec..bfef8ab64 100644 --- a/cli/disk_cache.rs +++ b/cli/disk_cache.rs @@ -13,6 +13,13 @@ pub struct DiskCache { pub location: PathBuf, } +fn with_io_context<T: AsRef<str>>( + e: &std::io::Error, + context: T, +) -> std::io::Error { + std::io::Error::new(e.kind(), format!("{} (for '{}')", e, context.as_ref())) +} + impl DiskCache { pub fn new(location: &Path) -> Self { // TODO: ensure that 'location' is a directory @@ -107,10 +114,12 @@ impl DiskCache { pub fn set(&self, filename: &Path, data: &[u8]) -> std::io::Result<()> { let path = self.location.join(filename); match path.parent() { - Some(ref parent) => fs::create_dir_all(parent), + Some(ref parent) => fs::create_dir_all(parent) + .map_err(|e| with_io_context(&e, format!("{:#?}", &path))), None => Ok(()), }?; deno_fs::write_file(&path, data, 0o666) + .map_err(|e| with_io_context(&e, format!("{:#?}", &path))) } pub fn remove(&self, filename: &Path) -> std::io::Result<()> { |