+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
+};
+use crate::configuration::Configuration;
pub struct Add;
impl super::Command for Add {
fn before_dependencies(&self) -> Vec<Box<dyn super::Command>> {
- vec![]
+ 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>> {
- vec![]
+ vec![
+ Box::new(Update::new()),
+ Box::new(Generate::new()),
+ Box::new(SyncUp::new())
+ ]
}
fn command(&self) -> &'static str {
}
fn help(&self) -> &'static str {
- "<path_to_post>\t\tCreates new blog post"
+ "<path_to_post>\t\t\tCreates new blog post"
}
}