From 5f34cb2dd5c602575dd4aba62e8793666d7ddcaa Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 22 Oct 2023 16:10:41 -0400 Subject: [PATCH] Creating a SiteRenderer struct to handle the logic for invoking dust. --- src/command/build/mod.rs | 1 + src/command/build/render.rs | 21 +++++++++++++++++++++ src/command/build/runner.rs | 13 ++++++------- 3 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 src/command/build/render.rs diff --git a/src/command/build/mod.rs b/src/command/build/mod.rs index 2b7c076..8edcb15 100644 --- a/src/command/build/mod.rs +++ b/src/command/build/mod.rs @@ -1,3 +1,4 @@ +mod render; mod runner; pub(crate) use runner::build_site; diff --git a/src/command/build/render.rs b/src/command/build/render.rs new file mode 100644 index 0000000..cc47f27 --- /dev/null +++ b/src/command/build/render.rs @@ -0,0 +1,21 @@ +use std::path::PathBuf; + +use crate::blog_post::convert_blog_post_to_render_context; +use crate::blog_post::BlogPost; +use crate::error::CustomError; + +pub(crate) struct SiteRenderer { + pub(crate) output_directory: PathBuf, + pub(crate) blog_posts: Vec, +} + +impl SiteRenderer { + pub(crate) async fn render_blog_posts(&self) -> Result<(), CustomError> { + for blog_post in &self.blog_posts { + let render_context = convert_blog_post_to_render_context(blog_post); + println!("{}", serde_json::to_string(&render_context)?); + } + + Ok(()) + } +} diff --git a/src/command/build/runner.rs b/src/command/build/runner.rs index f665bc5..8b859e5 100644 --- a/src/command/build/runner.rs +++ b/src/command/build/runner.rs @@ -1,20 +1,19 @@ use std::path::PathBuf; -use crate::blog_post::convert_blog_post_to_render_context; use crate::blog_post::BlogPost; use crate::cli::parameters::BuildArgs; +use crate::command::build::render::SiteRenderer; use crate::config::Config; use crate::error::CustomError; pub(crate) async fn build_site(args: BuildArgs) -> Result<(), CustomError> { let config = Config::load_from_file(args.config).await?; let blog_posts = load_blog_posts(&config).await?; - println!("{:?}", blog_posts); - - for blog_post in &blog_posts { - let render_context = convert_blog_post_to_render_context(blog_post); - println!("{}", serde_json::to_string(&render_context)?); - } + let renderer = SiteRenderer { + output_directory: get_output_directory(&config).await?, + blog_posts, + }; + renderer.render_blog_posts().await?; Ok(()) }