Serialize the RenderBlogPost to JSON.

This struct still does not contain anything, but I'm just setting up the skeleton for this code.
This commit is contained in:
Tom Alexander
2023-10-22 16:01:42 -04:00
parent b72aec9d20
commit 0b6900eeca
6 changed files with 40 additions and 12 deletions

View File

@@ -1,5 +1,6 @@
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::config::Config;
@@ -7,17 +8,14 @@ use crate::error::CustomError;
pub(crate) async fn build_site(args: BuildArgs) -> Result<(), CustomError> {
let config = Config::load_from_file(args.config).await?;
let root_directory = config.get_root_directory().to_owned();
let output_directory = get_output_directory(&config).await?;
let post_directories = get_post_directories(&config).await?;
let load_jobs = post_directories
.into_iter()
.map(|path| tokio::spawn(BlogPost::load_blog_post(root_directory.clone(), path)));
let mut blog_posts = Vec::new();
for job in load_jobs {
blog_posts.push(job.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)?);
}
Ok(())
}
@@ -51,3 +49,16 @@ async fn get_post_directories(config: &Config) -> Result<Vec<PathBuf>, CustomErr
}
Ok(ret)
}
async fn load_blog_posts(config: &Config) -> Result<Vec<BlogPost>, CustomError> {
let root_directory = config.get_root_directory().to_owned();
let post_directories = get_post_directories(&config).await?;
let load_jobs = post_directories
.into_iter()
.map(|path| tokio::spawn(BlogPost::load_blog_post(root_directory.clone(), path)));
let mut blog_posts = Vec::new();
for job in load_jobs {
blog_posts.push(job.await??);
}
Ok(blog_posts)
}