]> git.r.bdr.sh - rbdr/blog/blobdiff - src/command/add.rs
Add mac
[rbdr/blog] / src / command / add.rs
index 3e0e9876cbb5268aacace5762a202ea74de38a98..02da0fb370f74d7b2936089758eae08fe5e73aa6 100644 (file)
@@ -1,5 +1,5 @@
 use std::fs::{create_dir_all, remove_dir_all, rename};
-use std::io::{Result, Error};
+use std::io::Result;
 use super::{
     generate::Generate,
     sync_down::SyncDown,
@@ -14,24 +14,6 @@ impl Add {
     pub fn new() -> Self {
         Add
     }
-
-    // moves posts to their next
-    fn shift(&self, configuration: &Configuration) -> Result<()> {
-        for i in (0..configuration.max_posts).rev() {
-            let source = configuration.posts_directory.join(i.to_string());
-            let target = configuration.posts_directory.join((i + 1).to_string());
-
-            println!("Moving {} source to {}", source.display(), target.display());
-
-            if source.exists() {
-                match rename(&source, &target) {
-                    Ok(_) => continue,
-                    Err(e) => return Err(Error::new(e.kind(), format!("Could not shift post {} to {}", source.display(), target.display())))
-                }
-            }
-        }
-        Ok(())
-    }
 }
 
 impl super::Command for Add {
@@ -40,22 +22,19 @@ impl super::Command for Add {
     }
 
     fn execute(&self, _: Option<&String>, configuration: &Configuration, _: &String) -> Result<()> {
-        match create_dir_all(&configuration.posts_directory) {
-            Ok(_) => {
-                match self.shift(configuration) {
-                    Ok(_) => {
-                        let first_directory = configuration.posts_directory.join("0");
-                        let _ = remove_dir_all(&first_directory);
-                        match create_dir_all(&configuration.posts_directory) {
-                            Ok(_) => Ok(()),
-                            Err(e) => Err(Error::new(e.kind(), format!("Could not create first post directory")))
-                        }
-                    },
-                    Err(e) => Err(e)
-                }
-            },
-            Err(e) => Err(Error::new(e.kind(), format!("Could not create posts directory")))
+        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<Box<dyn super::Command>> {