aboutsummaryrefslogtreecommitdiffstats
path: root/src/util.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.rs')
-rw-r--r--src/util.rs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/util.rs b/src/util.rs
new file mode 100644
index 0000000..c3d573c
--- /dev/null
+++ b/src/util.rs
@@ -0,0 +1,37 @@
+use std::fs;
+use std::io;
+use std::io::Write;
+use std::path::Path;
+
+pub fn dir_size(path: &Path) -> std::io::Result<u64> {
+ let mut size = 0;
+ if path.is_dir() {
+ for entry in fs::read_dir(path)? {
+ let entry = entry?;
+ let metadata = entry.metadata()?;
+ if metadata.is_file() {
+ size += metadata.len();
+ } else if metadata.is_dir() {
+ size += dir_size(&entry.path())?;
+ }
+ }
+ }
+ Ok(size)
+}
+
+pub fn yn_prompt(prompt: &str) -> bool {
+ print!("{} [y/n]: ", prompt);
+ io::stdout().flush().unwrap();
+
+ // Read input from user
+ let mut input = String::new();
+ io::stdin().read_line(&mut input).unwrap();
+
+ // Normalize input
+ let input = input.trim().to_lowercase();
+
+ match input.as_str() {
+ "y" | "yes" | "" => true,
+ _ => false,
+ }
+}