summaryrefslogtreecommitdiff
path: root/crates/typst-cli/src/package.rs
diff options
context:
space:
mode:
authorjimvdl <jimvdlind@gmail.com>2023-08-31 10:02:53 +0200
committerGitHub <noreply@github.com>2023-08-31 10:02:53 +0200
commitaea20670d8418e434bc47e673fdcb2b79c7cd039 (patch)
tree74d484cac3a9fb5da43cddcba63300a821cfa33b /crates/typst-cli/src/package.rs
parent6b7db851e99120bb7295d285e061add4535fad82 (diff)
Display download progress for self-updating and packages (#2031)
Diffstat (limited to 'crates/typst-cli/src/package.rs')
-rw-r--r--crates/typst-cli/src/package.rs7
1 files changed, 4 insertions, 3 deletions
diff --git a/crates/typst-cli/src/package.rs b/crates/typst-cli/src/package.rs
index cbec1da0..bec86516 100644
--- a/crates/typst-cli/src/package.rs
+++ b/crates/typst-cli/src/package.rs
@@ -8,6 +8,7 @@ use typst::diag::{PackageError, PackageResult};
use typst::syntax::PackageSpec;
use super::color_stream;
+use crate::download::download_with_progress;
/// Make a package available in the on-disk cache.
pub fn prepare_package(spec: &PackageSpec) -> PackageResult<PathBuf> {
@@ -49,15 +50,15 @@ fn download_package(spec: &PackageSpec, package_dir: &Path) -> PackageResult<()>
);
print_downloading(spec).unwrap();
- let reader = match ureq::get(&url).call() {
- Ok(response) => response.into_reader(),
+ 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),
};
- let decompressed = flate2::read::GzDecoder::new(reader);
+ let decompressed = flate2::read::GzDecoder::new(data.as_slice());
tar::Archive::new(decompressed).unpack(package_dir).map_err(|_| {
fs::remove_dir_all(package_dir).ok();
PackageError::MalformedArchive