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