X-Git-Url: https://git.r.bdr.sh/rbdr/blog/blobdiff_plain/606f82c76540a9d80366fdb943c06abe525f662e..b17907faf8d9693cef94a6048d802bd4ced9102f:/src/command/add.rs?ds=sidebyside diff --git a/src/command/add.rs b/src/command/add.rs index dbcc512..d38d077 100644 --- a/src/command/add.rs +++ b/src/command/add.rs @@ -1,12 +1,7 @@ -use std::fs::{create_dir_all, rename}; -use std::io::Result; -use super::{ - generate::Generate, - sync_down::SyncDown, - sync_up::SyncUp, - update::Update -}; +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; @@ -21,12 +16,15 @@ impl super::Command for Add { vec![Box::new(SyncDown::new())] } - fn execute(&self, _: Option<&String>, configuration: &Configuration, _: &String) -> Result<()> { + fn execute(&self, _: Option<&String>, configuration: &Configuration, _: &str) -> Result<()> { create_dir_all(&configuration.posts_directory)?; - for i in (0..configuration.max_posts).rev() { + 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)?; } @@ -38,7 +36,7 @@ impl super::Command for Add { vec![ Box::new(Update::new()), Box::new(Generate::new()), - Box::new(SyncUp::new()) + Box::new(SyncUp::new()), ] }