X-Git-Url: https://git.r.bdr.sh/rbdr/blog/blobdiff_plain/5f81d796fed4e4efbaf6dbed7d3c69481afddeb3..refs/heads/rust:/src/command/add.rs?ds=sidebyside diff --git a/src/command/add.rs b/src/command/add.rs index bc1bea0..02da0fb 100644 --- a/src/command/add.rs +++ b/src/command/add.rs @@ -1,3 +1,4 @@ +use std::fs::{create_dir_all, remove_dir_all, rename}; use std::io::Result; use super::{ generate::Generate, @@ -5,6 +6,7 @@ use super::{ sync_up::SyncUp, update::Update }; +use crate::configuration::Configuration; pub struct Add; @@ -19,9 +21,20 @@ impl super::Command for Add { vec![Box::new(SyncDown::new())] } - fn execute(&self, input: Option<&String>) -> Result<()> { - println!("Add: {:?}!", input); - return Ok(()) + fn execute(&self, _: Option<&String>, configuration: &Configuration, _: &String) -> 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> {