summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Thiel <sthiel@thoughtworks.com>2019-06-16 11:39:40 +0800
committerSebastian Thiel <sthiel@thoughtworks.com>2019-06-16 11:39:40 +0800
commitd5867038aa8d1d216c146fe8d0a919352dce4855 (patch)
tree9fc5c9a186b40c5e5dcc659269a612ee571be75c
parenta8f595f576f164fd13e59230370b310119599f43 (diff)
Better progress display when deleting multiple items
-rw-r--r--Cargo.toml2
-rw-r--r--README.md4
-rw-r--r--src/interactive/app/handlers.rs21
3 files changed, 21 insertions, 6 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 783a1f5..4e6bdbd 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "dua-cli"
-version = "2.1.0"
+version = "2.1.1"
authors = ["Sebastian Thiel <byronimo@gmail.com>"]
edition = "2018"
include = ["src/**/*", "Cargo.toml"]
diff --git a/README.md b/README.md
index bc41e8e..d5e77d0 100644
--- a/README.md
+++ b/README.md
@@ -43,6 +43,10 @@ dua interactive
* [ ] Evaluate unit coloring - can we highlight different units better, make them stick out?
+#### ✅ v2.1.01 bug fixes and improvements
+
+* Better information about deletion progress
+
#### ✅ v2.1.0- bug fixes and improvements
* windows support
diff --git a/src/interactive/app/handlers.rs b/src/interactive/app/handlers.rs
index d65dab8..976a53b 100644
--- a/src/interactive/app/handlers.rs
+++ b/src/interactive/app/handlers.rs
@@ -180,7 +180,8 @@ impl TerminalApp {
self.state.entries = sorted_entries(&self.traversal.tree, root, self.state.sorting);
}
- pub fn delete_entry(&mut self, index: TreeIndex) -> Result<(), usize> {
+ pub fn delete_entry(&mut self, index: TreeIndex) -> Result<usize, usize> {
+ let mut entries_deleted = 0;
if let Some(_entry) = self.traversal.tree.node_weight(index) {
let path_to_delete = path_of(&self.traversal.tree, index);
delete_directory_recursively(path_to_delete)?;
@@ -194,6 +195,7 @@ impl TerminalApp {
while let Some(nx) = bfs.next(&self.traversal.tree) {
self.traversal.tree.remove_node(nx);
self.traversal.entries_traversed -= 1;
+ entries_deleted += 1;
}
self.state.entries =
sorted_entries(&self.traversal.tree, self.state.root, self.state.sorting);
@@ -209,7 +211,7 @@ impl TerminalApp {
}
self.recompute_sizes_recursively(parent_idx);
}
- Ok(())
+ Ok(entries_deleted)
}
fn recompute_sizes_recursively(&mut self, mut index: TreeIndex) {
@@ -249,15 +251,24 @@ impl TerminalApp {
self.window.mark_pane = match res {
Some((pane, mode)) => match mode {
Some(MarkMode::Delete) => {
- pane.iterate_deletable_items(|mut pane, entry_to_delete| {
+ self.state.message = Some("Deleting entries...".to_string());
+ let mut entries_deleted = 0;
+ let res = pane.iterate_deletable_items(|mut pane, entry_to_delete| {
self.window.mark_pane = Some(pane);
self.draw(terminal).ok();
pane = self.window.mark_pane.take().expect("option to be filled");
match self.delete_entry(entry_to_delete) {
- Ok(_) => Ok(pane),
+ Ok(ed) => {
+ entries_deleted += ed;
+ self.state.message =
+ Some(format!("Deleted {} entries...", entries_deleted));
+ Ok(pane)
+ }
Err(c) => Err((pane, c)),
}
- })
+ });
+ self.state.message = None;
+ res
}
None => Some(pane),
},