refactor(main): Include Tera templates into application binary
Instead of loading the templates at launch time (which requires the template folder to be present), include the template strings into the binary. This also re-enables auto-escaping in Tera.
This commit is contained in:
parent
71c55b8bb8
commit
fc0b9d7fa5
1 changed files with 15 additions and 7 deletions
22
src/main.rs
22
src/main.rs
|
@ -20,9 +20,6 @@ extern crate diesel;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate log;
|
extern crate log;
|
||||||
|
|
||||||
#[macro_use]
|
|
||||||
extern crate tera;
|
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate serde_derive;
|
extern crate serde_derive;
|
||||||
|
|
||||||
|
@ -42,6 +39,7 @@ extern crate rand;
|
||||||
extern crate reqwest;
|
extern crate reqwest;
|
||||||
extern crate serde;
|
extern crate serde;
|
||||||
extern crate serde_json;
|
extern crate serde_json;
|
||||||
|
extern crate tera;
|
||||||
extern crate tokio;
|
extern crate tokio;
|
||||||
extern crate tokio_timer;
|
extern crate tokio_timer;
|
||||||
extern crate url;
|
extern crate url;
|
||||||
|
@ -75,8 +73,9 @@ use diesel::r2d2::{ConnectionManager, Pool};
|
||||||
use handlers::*;
|
use handlers::*;
|
||||||
use oidc::OidcExecutor;
|
use oidc::OidcExecutor;
|
||||||
use rand::{OsRng, Rng};
|
use rand::{OsRng, Rng};
|
||||||
use std::env;
|
|
||||||
use render::Renderer;
|
use render::Renderer;
|
||||||
|
use std::env;
|
||||||
|
use tera::Tera;
|
||||||
|
|
||||||
fn config(name: &str) -> String {
|
fn config(name: &str) -> String {
|
||||||
env::var(name).expect(&format!("{} must be set", name))
|
env::var(name).expect(&format!("{} must be set", name))
|
||||||
|
@ -128,9 +127,18 @@ fn start_oidc_executor(base_url: &str) -> Addr<Syn, OidcExecutor> {
|
||||||
|
|
||||||
fn start_renderer() -> Addr<Syn, Renderer> {
|
fn start_renderer() -> Addr<Syn, Renderer> {
|
||||||
info!("Compiling templates ...");
|
info!("Compiling templates ...");
|
||||||
let template_path = concat!(env!("CARGO_MANIFEST_DIR"), "/templates/**/*");
|
let mut tera: Tera = Default::default();
|
||||||
let mut tera = compile_templates!(template_path);
|
|
||||||
tera.autoescape_on(vec![]);
|
// Include template strings into the binary instead of being
|
||||||
|
// location-dependent.
|
||||||
|
// Drawback is that template changes require recompilation ...
|
||||||
|
tera.add_raw_templates(vec![
|
||||||
|
("index.html", include_str!("../templates/index.html")),
|
||||||
|
("post.html", include_str!("../templates/post.html")),
|
||||||
|
("search.html", include_str!("../templates/search.html")),
|
||||||
|
("thread.html", include_str!("../templates/thread.html")),
|
||||||
|
]).expect("Could not compile templates");
|
||||||
|
|
||||||
let comrak = comrak::ComrakOptions{
|
let comrak = comrak::ComrakOptions{
|
||||||
github_pre_lang: true,
|
github_pre_lang: true,
|
||||||
ext_strikethrough: true,
|
ext_strikethrough: true,
|
||||||
|
|
Loading…
Reference in a new issue