]> git.r.bdr.sh - rbdr/blog/blobdiff - src/command/add.rs
Deal with all lints
[rbdr/blog] / src / command / add.rs
index dbcc512c5f343199345785eaaf1255f503c0f37b..d38d077931d85717ffcceca594e75c1b5875cb74 100644 (file)
@@ -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()),
         ]
     }