]> git.r.bdr.sh - rbdr/blog/blobdiff - src/command/status/blog_status.rs
Add blog status, correctly shift
[rbdr/blog] / src / command / status / blog_status.rs
diff --git a/src/command/status/blog_status.rs b/src/command/status/blog_status.rs
new file mode 100644 (file)
index 0000000..df5256e
--- /dev/null
@@ -0,0 +1,24 @@
+use std::fs::read_dir;
+use std::path::PathBuf;
+use crate::configuration::Configuration;
+
+pub fn status(configuration: &Configuration) -> String {
+    let mut status_message = String::new();
+
+    status_message.push_str("# Blog\n");
+
+    // Main Configuration Locations
+    let blog_count = count_entries(&configuration.posts_directory);
+    status_message.push_str(&format!("Number of posts in blog: {}\n", blog_count));
+
+    let archive_count = count_entries(&configuration.archive_directory);
+    status_message.push_str(&format!("Number of posts in archive: {}\n", archive_count));
+    status_message
+}
+
+fn count_entries(path: &PathBuf) -> String {
+    match read_dir(path) {
+        Ok(entries) => entries.filter_map(Result::ok).count().to_string(),
+        Err(_) => "0".to_string()
+    }
+}