X-Git-Url: https://git.r.bdr.sh/rbdr/blog/blobdiff_plain/d620665f6b2e1ae5db4c98a09e35bd63133ae87f..b17907faf8d9693cef94a6048d802bd4ced9102f:/src/command/add.rs?ds=sidebyside diff --git a/src/command/add.rs b/src/command/add.rs index 36f25a0..d38d077 100644 --- a/src/command/add.rs +++ b/src/command/add.rs @@ -1,3 +1,6 @@ +use super::{generate::Generate, sync_down::SyncDown, sync_up::SyncUp, update::Update}; +use crate::configuration::Configuration; +use std::fs::{create_dir_all, remove_dir_all, rename}; use std::io::Result; pub struct Add; @@ -10,16 +13,31 @@ impl Add { impl super::Command for Add { fn before_dependencies(&self) -> Vec> { - vec![] + vec![Box::new(SyncDown::new())] } - fn execute(&self, input: Option<&String>) -> Result<()> { - println!("Add: {:?}!", input); - return Ok(()) + fn execute(&self, _: Option<&String>, configuration: &Configuration, _: &str) -> Result<()> { + create_dir_all(&configuration.posts_directory)?; + for i in (0..configuration.max_posts - 1).rev() { + let source = configuration.posts_directory.join(i.to_string()); + let target = configuration.posts_directory.join((i + 1).to_string()); + + if target.exists() { + remove_dir_all(&target)?; + } + if source.exists() { + rename(&source, &target)?; + } + } + Ok(()) } fn after_dependencies(&self) -> Vec> { - vec![] + vec![ + Box::new(Update::new()), + Box::new(Generate::new()), + Box::new(SyncUp::new()), + ] } fn command(&self) -> &'static str { @@ -27,6 +45,6 @@ impl super::Command for Add { } fn help(&self) -> &'static str { - "\t\tCreates new blog post" + "\t\t\tCreates new blog post" } }