]> git.r.bdr.sh - rbdr/blog/blobdiff - src/command/add.rs
Add blog status, correctly shift
[rbdr/blog] / src / command / add.rs
index bc1bea0bb06c86f2077b374b7de68a51cbd0cb5b..02da0fb370f74d7b2936089758eae08fe5e73aa6 100644 (file)
@@ -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<Box<dyn super::Command>> {