diff options
Diffstat (limited to 'crates/typst-cli/src/package.rs')
| -rw-r--r-- | crates/typst-cli/src/package.rs | 8 |
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}"))) }) } |
