summaryrefslogtreecommitdiff
path: root/src/backup_progress.rs
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-01-05 12:13:01 +0000
committerLars Wirzenius <liw@liw.fi>2021-01-05 12:13:01 +0000
commitfee70c974049560164d8950dabc63554f55671b1 (patch)
tree7c2d38852e6f1eec5c357b2304a04dc332b8d953 /src/backup_progress.rs
parent678e65c57ae983ef66d16e92965814b0f3f0d73f (diff)
parent8a42fc1c9dc3da6936fe8e1d0d16fbe8a60ec520 (diff)
downloadobnam2-fee70c974049560164d8950dabc63554f55671b1.tar.gz
Merge branch 'policy' into 'main'
refactor: move policy on whether to back up a file into a module Closes #38 See merge request larswirzenius/obnam!62
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());
+ }
+}