]> git.r.bdr.sh - rbdr/blog/blame_incremental - src/generator/mod.rs
Add tests for the archivers
[rbdr/blog] / src / generator / mod.rs
... / ...
CommitLineData
1mod html;
2mod rss;
3mod static_files;
4mod txt;
5
6use crate::post::Post;
7use crate::template::Context;
8use std::io::Result;
9use std::path::Path;
10
11type Generator = fn(&Path, &Path, &Path, &Context) -> Result<()>;
12
13pub fn generate(
14 static_directory: &Path,
15 template_directory: &Path,
16 output_directory: &Path,
17 posts: &[Post],
18) -> Result<()> {
19 let generators = available_generators();
20 let context = Post::to_template_context(posts);
21 for generator in generators {
22 generator(
23 static_directory,
24 template_directory,
25 output_directory,
26 &context,
27 )?;
28 }
29 Ok(())
30}
31
32fn available_generators() -> Vec<Generator> {
33 vec![
34 static_files::generate,
35 // These three are actually the same. Can generalize, don't know how in rust yet.
36 html::generate,
37 rss::generate,
38 txt::generate,
39 ]
40}