From c65781da80cc92ef4afd81b655767ec7cde08d4a Mon Sep 17 00:00:00 2001 From: Edoardo Marangoni Date: Tue, 14 May 2024 18:28:04 +0200 Subject: [PATCH 1/2] feat(cli): Reimplement the webc upload progress bar --- lib/cli/src/commands/package/common/mod.rs | 8 ++++++++ lib/cli/src/commands/package/push.rs | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/cli/src/commands/package/common/mod.rs b/lib/cli/src/commands/package/common/mod.rs index 842df8a34e1..b2a9b7a9f18 100644 --- a/lib/cli/src/commands/package/common/mod.rs +++ b/lib/cli/src/commands/package/common/mod.rs @@ -5,6 +5,7 @@ use crate::{ }; use colored::Colorize; use dialoguer::Confirm; +use indicatif::{ProgressBar, ProgressStyle}; use std::{ collections::BTreeMap, path::{Path, PathBuf}, @@ -41,6 +42,7 @@ pub(super) async fn upload( hash: &PackageHash, timeout: humantime::Duration, package: &Package, + pb: &ProgressBar, ) -> anyhow::Result { let hash_str = hash.to_string(); let hash_str = hash_str.trim_start_matches("sha256:"); @@ -114,6 +116,11 @@ pub(super) async fn upload( let bytes = package.serialize()?; let total_bytes = bytes.len(); + pb.set_length(total_bytes.try_into().unwrap()); + pb.set_style(ProgressStyle::with_template("{spinner:.green} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})") + .unwrap() + .progress_chars("█▓▒░ ") + .tick_strings(&["✶", "✸", "✹", "✺", "✹", "✷"])); tracing::info!("webc is {total_bytes} bytes long"); let chunk_size = 1_048_576; // 1MB - 315s / 100MB @@ -144,6 +151,7 @@ pub(super) async fn upload( })??; total_bytes_sent += n; + pb.set_position(total_bytes_sent.try_into().unwrap()); } Ok(url) diff --git a/lib/cli/src/commands/package/push.rs b/lib/cli/src/commands/package/push.rs index 10303dc5d83..9ac40a345f3 100644 --- a/lib/cli/src/commands/package/push.rs +++ b/lib/cli/src/commands/package/push.rs @@ -119,7 +119,7 @@ impl PackagePush { ) -> anyhow::Result<()> { let pb = make_spinner!(self.quiet, "Uploading the package to the registry.."); - let signed_url = upload(client, package_hash, self.timeout, package).await?; + let signed_url = upload(client, package_hash, self.timeout, package, &pb).await?; let id = match wasmer_api::query::push_package_release( client, From f44686f8ec99b687b2a588509c1c99117a6cfb87 Mon Sep 17 00:00:00 2001 From: Edoardo Marangoni Date: Tue, 14 May 2024 23:36:56 +0200 Subject: [PATCH 2/2] feat(cli): change the style of the upload progress bar --- lib/cli/src/commands/package/common/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/cli/src/commands/package/common/mod.rs b/lib/cli/src/commands/package/common/mod.rs index b2a9b7a9f18..16254b7b91a 100644 --- a/lib/cli/src/commands/package/common/mod.rs +++ b/lib/cli/src/commands/package/common/mod.rs @@ -117,9 +117,9 @@ pub(super) async fn upload( let total_bytes = bytes.len(); pb.set_length(total_bytes.try_into().unwrap()); - pb.set_style(ProgressStyle::with_template("{spinner:.green} [{elapsed_precise}] [{wide_bar:.cyan/blue}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})") + pb.set_style(ProgressStyle::with_template("{spinner:.green} [{elapsed_precise}] [{bar:.cyan/blue}] {bytes}/{total_bytes} ({bytes_per_sec}, {eta})") .unwrap() - .progress_chars("█▓▒░ ") + .progress_chars("█▉▊▋▌▍▎▏ ") .tick_strings(&["✶", "✸", "✹", "✺", "✹", "✷"])); tracing::info!("webc is {total_bytes} bytes long");