From d001ee4731b616f10e7a2cea2eaf00e8b060b67d Mon Sep 17 00:00:00 2001 From: messense Date: Sun, 12 Jan 2025 19:10:15 +0800 Subject: [PATCH] Include elapsed time in non-interactive download message (#146) --- Cargo.lock | 7 +++++++ Cargo.toml | 1 + src/compiler/clang.rs | 9 +++++++-- src/compiler/clang_cl.rs | 9 +++++++-- 4 files changed, 22 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4d8cfda..1973df6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -176,6 +176,7 @@ dependencies = [ "clap", "dirs", "fs-err", + "humantime", "indicatif", "native-tls", "paste", @@ -571,6 +572,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + [[package]] name = "icu_collections" version = "1.5.0" diff --git a/Cargo.toml b/Cargo.toml index 56d039a..8ab56c9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,6 +26,7 @@ clap = { version = "4.3.0", features = [ ] } dirs = "5.0.0" fs-err = "3.0.0" +humantime = "2.1.0" indicatif = "0.17.2" native-tls-crate = { package = "native-tls", version = "0.2.11", optional = true } paste = "1.0.12" diff --git a/src/compiler/clang.rs b/src/compiler/clang.rs index 084251b..59911e7 100644 --- a/src/compiler/clang.rs +++ b/src/compiler/clang.rs @@ -1,6 +1,7 @@ use std::env; use std::path::{Path, PathBuf}; use std::process::Command; +use std::time::{Duration, Instant}; use anyhow::{Context, Result}; use fs_err as fs; @@ -202,15 +203,19 @@ impl Clang { pb.set_prefix("sysroot"); pb.set_message("📥 downloading"); if pb.is_hidden() { - eprintln!("📥 Start downloading MSVC sysroot..."); + eprintln!("📥 Downloading MSVC sysroot..."); } + let start_time = Instant::now(); let reader = pb.wrap_read(response.into_reader()); let tar = XzDecoder::new(reader); let mut archive = tar::Archive::new(tar); archive.unpack(cache_dir)?; pb.finish_with_message("Download completed"); if pb.is_hidden() { - eprintln!("✅ Finished downloading MSVC sysroot."); + // Display elapsed time in human-readable format to seconds only + let elapsed = + humantime::format_duration(Duration::from_secs(start_time.elapsed().as_secs())); + eprintln!("✅ Downloaded MSVC sysroot in {elapsed}."); } Ok(()) } diff --git a/src/compiler/clang_cl.rs b/src/compiler/clang_cl.rs index 7c314ff..940c1c2 100644 --- a/src/compiler/clang_cl.rs +++ b/src/compiler/clang_cl.rs @@ -4,6 +4,7 @@ use std::env; use std::ffi::OsStr; use std::path::{Path, PathBuf}; use std::process::Command; +use std::time::{Duration, Instant}; use anyhow::{Context, Result}; use fs_err as fs; @@ -248,8 +249,9 @@ impl<'a> ClangCl<'a> { mp.set_move_cursor(true); if mp.is_hidden() { - eprintln!("⏬ Start downloading MSVC CRT..."); + eprintln!("⏬ Downloading MSVC CRT..."); } + let start_time = Instant::now(); ctx.execute( pkgs, work_items, @@ -277,7 +279,10 @@ impl<'a> ClangCl<'a> { let _ = fs::remove_dir_all(unpack); } if mp.is_hidden() { - eprintln!("✅ Finished downloading MSVC CRT."); + // Display elapsed time in human-readable format to seconds only + let elapsed = + humantime::format_duration(Duration::from_secs(start_time.elapsed().as_secs())); + eprintln!("✅ Downloaded MSVC CRT in {elapsed}."); } Ok(()) }