summaryrefslogtreecommitdiff
path: root/crates/typst-cli/src/package.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/typst-cli/src/package.rs')
-rw-r--r--crates/typst-cli/src/package.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/crates/typst-cli/src/package.rs b/crates/typst-cli/src/package.rs
index bec86516..51a8e4bc 100644
--- a/crates/typst-cli/src/package.rs
+++ b/crates/typst-cli/src/package.rs
@@ -3,6 +3,7 @@ use std::io::{self, Write};
use std::path::{Path, PathBuf};
use codespan_reporting::term::{self, termcolor};
+use ecow::eco_format;
use termcolor::WriteColor;
use typst::diag::{PackageError, PackageResult};
use typst::syntax::PackageSpec;
@@ -50,18 +51,19 @@ fn download_package(spec: &PackageSpec, package_dir: &Path) -> PackageResult<()>
);
print_downloading(spec).unwrap();
+
let data = match download_with_progress(&url) {
Ok(data) => data,
Err(ureq::Error::Status(404, _)) => {
return Err(PackageError::NotFound(spec.clone()))
}
- Err(_) => return Err(PackageError::NetworkFailed),
+ Err(err) => return Err(PackageError::NetworkFailed(Some(eco_format!("{err}")))),
};
let decompressed = flate2::read::GzDecoder::new(data.as_slice());
- tar::Archive::new(decompressed).unpack(package_dir).map_err(|_| {
+ tar::Archive::new(decompressed).unpack(package_dir).map_err(|err| {
fs::remove_dir_all(package_dir).ok();
- PackageError::MalformedArchive
+ PackageError::MalformedArchive(Some(eco_format!("{err}")))
})
}