aboutsummaryrefslogtreecommitdiff
path: root/vendor/indicatif/examples/cargowrap.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/indicatif/examples/cargowrap.rs')
-rw-r--r--vendor/indicatif/examples/cargowrap.rs41
1 files changed, 41 insertions, 0 deletions
diff --git a/vendor/indicatif/examples/cargowrap.rs b/vendor/indicatif/examples/cargowrap.rs
new file mode 100644
index 0000000..354b6e0
--- /dev/null
+++ b/vendor/indicatif/examples/cargowrap.rs
@@ -0,0 +1,41 @@
+use std::io::{BufRead, BufReader};
+use std::process;
+use std::time::{Duration, Instant};
+
+use indicatif::{HumanDuration, ProgressBar, ProgressStyle};
+
+pub fn main() {
+ let started = Instant::now();
+
+ println!("Compiling package in release mode...");
+
+ let pb = ProgressBar::new_spinner();
+ pb.enable_steady_tick(Duration::from_millis(200));
+ pb.set_style(
+ ProgressStyle::with_template("{spinner:.dim.bold} cargo: {wide_msg}")
+ .unwrap()
+ .tick_chars("/|\\- "),
+ );
+
+ let mut p = process::Command::new("cargo")
+ .arg("build")
+ .arg("--release")
+ .stderr(process::Stdio::piped())
+ .spawn()
+ .unwrap();
+
+ for line in BufReader::new(p.stderr.take().unwrap()).lines() {
+ let line = line.unwrap();
+ let stripped_line = line.trim();
+ if !stripped_line.is_empty() {
+ pb.set_message(stripped_line.to_owned());
+ }
+ pb.tick();
+ }
+
+ p.wait().unwrap();
+
+ pb.finish_and_clear();
+
+ println!("Done in {}", HumanDuration(started.elapsed()));
+}