X-Git-Url: https://git.r.bdr.sh/rbdr/blog/blobdiff_plain/442ebaf901a8ca686ce769325054e1f393d43b7c..5f81d796fed4e4efbaf6dbed7d3c69481afddeb3:/src/command/status/configuration_status.rs?ds=inline diff --git a/src/command/status/configuration_status.rs b/src/command/status/configuration_status.rs new file mode 100644 index 0000000..67bf277 --- /dev/null +++ b/src/command/status/configuration_status.rs @@ -0,0 +1,38 @@ +use std::fs; +use std::path::PathBuf; +use crate::configuration::Configuration; + +pub fn status() -> String { + let configuration = Configuration::new(); + let mut status_message = String::new(); + + status_message.push_str("# Configuration\n"); + status_message.push_str("## Directories\n"); + + // Main Configuration Locations + status_message.push_str(&get_directory_stats("Configuration", configuration.config_directory)); + status_message.push_str(&get_directory_stats("Data", configuration.data_directory)); + status_message.push_str(&get_directory_stats("Output", configuration.output_directory)); + + status_message.push_str("## Blog Settings\n"); + status_message.push_str(&format!("Number of posts to keep: {}\n", configuration.max_posts)); + status_message +} + +fn get_directory_stats(label: &str, directory: PathBuf) -> String { + let mut status_message = String::new(); + + status_message.push_str(&format!("{}: {}\n", label, directory.display())); + if directory.exists() { + status_message.push_str(&format!("{} directory exists.\n", label)); + if fs::read_dir(&directory).is_ok() { + status_message.push_str(&format!("{} directory is readable.\n", label)); + } else { + status_message.push_str(&format!("{} directory is not readable.\n", label)); + } + } else { + status_message.push_str(&format!("{} directory does not exist.\n", label)); + } + + status_message +}