mirror of
https://github.com/typst/typst
synced 2025-08-15 07:28:32 +08:00
Fix incorrect directory being removed
This commit is contained in:
parent
77632cd4bd
commit
5dd70d8d2d
@ -218,14 +218,6 @@ impl PackageStorage {
|
|||||||
create_dir(package_download_dir.as_path(), "download")?;
|
create_dir(package_download_dir.as_path(), "download")?;
|
||||||
create_dir(package_dir, "package")?;
|
create_dir(package_dir, "package")?;
|
||||||
|
|
||||||
let decompressed = flate2::read::GzDecoder::new(data.as_slice());
|
|
||||||
tar::Archive::new(decompressed)
|
|
||||||
.unpack(&package_download_dir)
|
|
||||||
.map_err(|err| {
|
|
||||||
fs::remove_dir_all(package_dir).ok();
|
|
||||||
PackageError::MalformedArchive(Some(eco_format!("{err}")))
|
|
||||||
})?;
|
|
||||||
|
|
||||||
let removed_download_dir = || {
|
let removed_download_dir = || {
|
||||||
fs::remove_dir_all(&package_download_dir).map_err(|err| {
|
fs::remove_dir_all(&package_download_dir).map_err(|err| {
|
||||||
PackageError::Other(Some(eco_format!(
|
PackageError::Other(Some(eco_format!(
|
||||||
@ -234,6 +226,17 @@ impl PackageStorage {
|
|||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let decompressed = flate2::read::GzDecoder::new(data.as_slice());
|
||||||
|
tar::Archive::new(decompressed)
|
||||||
|
.unpack(&package_download_dir)
|
||||||
|
.map_err(|err| {
|
||||||
|
let message = match removed_download_dir() {
|
||||||
|
Err(PackageError::Other(Some(str))) => eco_format!("{err}\n{str}"),
|
||||||
|
_ => eco_format!("{err}"),
|
||||||
|
};
|
||||||
|
PackageError::MalformedArchive(Some(message))
|
||||||
|
})?;
|
||||||
|
|
||||||
// As to not overcomplicate the code base to combat an already rare case
|
// As to not overcomplicate the code base to combat an already rare case
|
||||||
// where multiple instances try to download the same package version
|
// where multiple instances try to download the same package version
|
||||||
// concurrently, we are abusing the behavior of the `rename` FS
|
// concurrently, we are abusing the behavior of the `rename` FS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user