use crate::configuration::Configuration; use std::fmt::Write; use std::fs::read_dir; use std::io::{Error, ErrorKind, Result}; use std::path::PathBuf; pub fn status(configuration: &Configuration) -> Result { let mut status_message = String::new(); status_message.push_str("# Blog\n"); // Main Configuration Locations let blog_count = count_entries(&configuration.posts_directory); writeln!(&mut status_message, "Number of posts in blog: {blog_count}") .map_err(|_| Error::new(ErrorKind::Other, "Unable to write status"))?; let archive_count = count_entries(&configuration.archive_directory); writeln!( &mut status_message, "Number of posts in archive: {archive_count}" ) .map_err(|_| Error::new(ErrorKind::Other, "Unable to write status"))?; Ok(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(), } }