From c3da02b2a1e205a48cafcfc8d7bc61a47f5dcba3 Mon Sep 17 00:00:00 2001 From: Teascade Date: Thu, 19 Apr 2018 01:42:12 +0300 Subject: [PATCH] Add output folder path --- src/builder.rs | 35 ++++++++++++++++++++++++++++++----- src/config.rs | 2 +- src/config_toml.rs | 2 ++ src/main.rs | 2 ++ 4 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/builder.rs b/src/builder.rs index 7ff4332..2fd5ffc 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -33,7 +33,15 @@ pub fn build(logger: &Logger, opt: &Opt, _: &BuildOpt) -> Result<(), Error> { let config = fetch_config()?; if config.global_config.website.use_default_css { - let css_path = file_writer::add_to_beginning(PathBuf::from("css/default.css"), "public")?; + let css_path = file_writer::add_to_beginning( + PathBuf::from("css/default.css"), + config + .clone() + .global_config + .website + .output + .unwrap_or("public".to_owned()), + )?; logger.log(LogLevel::DETAIL, format!("Adding {:?}", css_path)); file_writer::write_file(&css_path, DEFAULT_CSS, opt.overwrite)?; } @@ -112,7 +120,15 @@ pub fn build(logger: &Logger, opt: &Opt, _: &BuildOpt) -> Result<(), Error> { logger.log(LogLevel::INFO, "Writing"); for (idx, config) in configs.clone().iter().enumerate() { let html_path = config.clone().page_config.page.html_path; - let html_path = file_writer::add_to_beginning(PathBuf::from(html_path), "public")?; + let html_path = file_writer::add_to_beginning( + PathBuf::from(html_path), + config + .clone() + .global_config + .website + .output + .unwrap_or("public".to_owned()), + )?; logger.log(LogLevel::DETAILER, format!("Writing {:?}", html_path)); if let Some(render) = renders.get(idx) { file_writer::write_file(&html_path, render.clone(), opt.overwrite)?; @@ -125,11 +141,12 @@ pub fn build(logger: &Logger, opt: &Opt, _: &BuildOpt) -> Result<(), Error> { } logger.log(LogLevel::INFO, "Copying resources"); - if let Some(resources) = config.global_config.resources { + if let Some(resources) = config.global_config.resources.clone() { for resource in resources.values() { let path = Path::new(&resource.source); if path.exists() { match write_recursive_resource( + config.clone(), path.to_path_buf(), PathBuf::from(resource.source.clone()), PathBuf::from(resource.destination.clone()), @@ -152,6 +169,7 @@ pub fn build(logger: &Logger, opt: &Opt, _: &BuildOpt) -> Result<(), Error> { } fn write_recursive_resource( + config: Config, resource_path: PathBuf, source: PathBuf, destination: PathBuf, @@ -162,6 +180,7 @@ fn write_recursive_resource( match item { Ok(item) => { match write_recursive_resource( + config.clone(), item.path(), source.clone(), destination.clone(), @@ -179,8 +198,14 @@ fn write_recursive_resource( Ok(mut read_file) => { let mut contents = String::new(); read_file.read_to_string(&mut contents)?; - let mut dest_path = - file_writer::add_to_beginning(destination.clone(), "public")?; + let mut dest_path = file_writer::add_to_beginning( + destination.clone(), + config + .global_config + .website + .output + .unwrap_or("public".to_owned()), + )?; if source.is_dir() { dest_path = dest_path.join(relative.clone()); diff --git a/src/config.rs b/src/config.rs index 3f7c33a..66b4627 100644 --- a/src/config.rs +++ b/src/config.rs @@ -10,7 +10,7 @@ pub struct SinglePageConfigs { pub page_config_path: PathBuf, } -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct Config { pub global_config: GlobalConfigToml, pub page_config_paths: Vec, diff --git a/src/config_toml.rs b/src/config_toml.rs index 9c9cd6e..433a6fe 100644 --- a/src/config_toml.rs +++ b/src/config_toml.rs @@ -42,6 +42,8 @@ pub struct WebsiteConfig { pub meta_description: Option, pub charset: Option, pub meta_og: Option, + + pub output: Option, } #[derive(Deserialize, Serialize, Clone, Debug)] diff --git a/src/main.rs b/src/main.rs index 700b3de..f2f92c8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -113,6 +113,8 @@ fn run() -> Result<(), ()> { meta_description: None, charset: Some("utf-8".to_owned()), meta_og: None, + + output: None, }, navbar: navbar, resources: None,