+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;
-use super::{
- generate::Generate,
- sync_down::SyncDown,
- sync_up::SyncUp,
- update::Update
-};
pub struct 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, _: &str) -> 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>> {
vec![
Box::new(Update::new()),
Box::new(Generate::new()),
- Box::new(SyncUp::new())
+ Box::new(SyncUp::new()),
]
}