summaryrefslogtreecommitdiff
path: root/src/backup_progress.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/backup_progress.rs')
-rw-r--r--src/backup_progress.rs45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/backup_progress.rs b/src/backup_progress.rs
new file mode 100644
index 0000000..d65f104
--- /dev/null
+++ b/src/backup_progress.rs
@@ -0,0 +1,45 @@
+use indicatif::{ProgressBar, ProgressStyle};
+use std::path::Path;
+
+pub struct BackupProgress {
+ progress: ProgressBar,
+}
+
+impl BackupProgress {
+ pub fn new() -> Self {
+ let progress = if true {
+ ProgressBar::new(0)
+ } else {
+ ProgressBar::hidden()
+ };
+ let parts = vec![
+ "{wide_bar}",
+ "elapsed: {elapsed}",
+ "files: {pos}/{len}",
+ "current: {wide_msg}",
+ "{spinner}",
+ ];
+ progress.set_style(ProgressStyle::default_bar().template(&parts.join("\n")));
+ progress.enable_steady_tick(100);
+
+ Self { progress }
+ }
+
+ pub fn files_in_previous_generation(&self, count: u64) {
+ self.progress.set_length(count);
+ }
+
+ pub fn found_problem(&self) {
+ self.progress.inc(1);
+ }
+
+ pub fn found_live_file(&self, filename: &Path) {
+ self.progress.inc(1);
+ self.progress
+ .set_message(&format!("{}", filename.display()));
+ }
+
+ pub fn finish(&self) {
+ self.progress.set_length(self.progress.position());
+ }
+}