Preserve elapsed time in store path listing after build

Fixes #36.
This commit is contained in:
Zhaofeng Li 2021-11-16 21:36:37 -08:00
parent b751209f60
commit e5665775b2
5 changed files with 27 additions and 8 deletions

6
Cargo.lock generated
View file

@ -174,6 +174,7 @@ dependencies = [
"encode_unicode", "encode_unicode",
"libc", "libc",
"once_cell", "once_cell",
"regex",
"terminal_size", "terminal_size",
"winapi", "winapi",
] ]
@ -370,12 +371,11 @@ checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed"
[[package]] [[package]]
name = "indicatif" name = "indicatif"
version = "0.17.0-beta.1" version = "0.17.0-beta.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "git+https://github.com/mitsuhiko/indicatif?rev=5a38ab70b75be5fc9f4a00c4d9d58adabb817398#5a38ab70b75be5fc9f4a00c4d9d58adabb817398"
checksum = "500f7e5a63596852b9bf7583fe86f9ad08e0df9b4eb58d12e9729071cb4952ca"
dependencies = [ dependencies = [
"console 0.15.0", "console 0.15.0",
"lazy_static",
"number_prefix", "number_prefix",
"once_cell",
"regex", "regex",
] ]

View file

@ -16,7 +16,6 @@ env_logger = "0.8.2"
futures = "0.3.8" futures = "0.3.8"
glob = "0.3.0" glob = "0.3.0"
hostname = "0.3.1" hostname = "0.3.1"
indicatif = "0.17.0-beta.1"
lazy_static = "1.4.0" lazy_static = "1.4.0"
libc = "0.2.81" libc = "0.2.81"
log = "0.4.11" log = "0.4.11"
@ -32,6 +31,10 @@ tokio-test = "0.4.0"
users = "0.11.0" users = "0.11.0"
validator = { version = "0.12", features = ["derive"] } validator = { version = "0.12", features = ["derive"] }
# For https://github.com/mitsuhiko/indicatif/pull/325
# Change back to 0.17.0-beta.2 when it releases
indicatif = { git = "https://github.com/mitsuhiko/indicatif", rev = "5a38ab70b75be5fc9f4a00c4d9d58adabb817398" }
[dependencies.tokio] [dependencies.tokio]
version = "1.0.0" version = "1.0.0"
features = [ features = [

View file

@ -19,9 +19,7 @@ in rustPlatform.buildRustPackage {
src = lib.cleanSource ./.; src = lib.cleanSource ./.;
}; };
cargoLock = { cargoSha256 = "sha256-JDJQnKO0j1DegOyuZi3WU4wVnotucSVPbwbn25R8Jb8=";
lockFile = ./Cargo.lock;
};
postInstall = lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) '' postInstall = lib.optionalString (stdenv.hostPlatform == stdenv.buildPlatform) ''
mkdir completions mkdir completions

View file

@ -379,10 +379,15 @@ impl Deployment {
} }
}; };
let build_elapsed = bar.get_elapsed();
bar.success_quiet(); bar.success_quiet();
if goal == Goal::Build { if goal == Goal::Build {
for (node, profile) in profiles.iter() { for (node, profile) in profiles.iter() {
let bar = progress.create_task_progress(node.to_string()); let mut bar = progress.create_task_progress(node.to_string());
if let Some(elapsed) = build_elapsed {
bar.set_elapsed(elapsed);
}
bar.success(&format!("Built {:?}", profile.as_path())); bar.success(&format!("Built {:?}", profile.as_path()));
} }
} }

View file

@ -2,6 +2,7 @@
use std::future::Future; use std::future::Future;
use std::sync::Arc; use std::sync::Arc;
use std::time::Duration;
use atty::Stream; use atty::Stream;
use console::Style; use console::Style;
@ -192,6 +193,18 @@ impl TaskProgress {
} }
} }
/// Returns the time spent on this task so far.
pub fn get_elapsed(&self) -> Option<Duration> {
self.bar.as_ref().map(|bar| bar.elapsed())
}
/// Sets the time spent on this task so far.
pub fn set_elapsed(&mut self, elapsed: Duration) {
if let Some(bar) = self.bar.take() {
self.bar.replace(bar.with_elapsed(elapsed));
}
}
pub fn failure_err<E: std::error::Error>(self, error: &E) { pub fn failure_err<E: std::error::Error>(self, error: &E) {
self.failure(&error.to_string()) self.failure(&error.to_string())
} }