mirror of
https://github.com/denoland/deno.git
synced 2025-08-03 18:38:33 +00:00
Do not panic and improve error message on cache failure (#3784)
This commit is contained in:
parent
5e32c5ea44
commit
514cdd941c
2 changed files with 60 additions and 18 deletions
|
@ -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<()> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue