From 5f81d796fed4e4efbaf6dbed7d3c69481afddeb3 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Sat, 24 Feb 2024 23:20:14 +0000 Subject: Add status command --- src/command/status/configuration_status.rs | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/command/status/configuration_status.rs (limited to 'src/command/status/configuration_status.rs') 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 +} -- cgit