Config: templates dir

This commit is contained in:
Pascal Engélibert 2022-10-26 16:03:22 +02:00
parent fa306e9542
commit 81681303b2
Signed by: tuxmain
GPG key ID: 3504BC6D362F7DCA
3 changed files with 14 additions and 9 deletions

View file

@ -60,6 +60,9 @@ pub struct Config {
pub reverse_proxy: bool, pub reverse_proxy: bool,
#[serde(default = "Config::default_root_url")] #[serde(default = "Config::default_root_url")]
pub root_url: String, pub root_url: String,
/// Templates directory. May be absolute or relative to config/data directory.
#[serde(default = "Config::default_templates_dir")]
pub templates_dir: String,
} }
impl Config { impl Config {
@ -129,6 +132,9 @@ impl Config {
fn default_root_url() -> String { fn default_root_url() -> String {
"/".into() "/".into()
} }
fn default_templates_dir() -> String {
"templates".into()
}
} }
impl Default for Config { impl Default for Config {
@ -156,6 +162,7 @@ impl Default for Config {
matrix_user: Self::default_matrix_user(), matrix_user: Self::default_matrix_user(),
reverse_proxy: Self::default_reverse_proxy(), reverse_proxy: Self::default_reverse_proxy(),
root_url: Self::default_root_url(), root_url: Self::default_root_url(),
templates_dir: Self::default_templates_dir(),
} }
} }
} }

View file

@ -50,11 +50,9 @@ fn init_all(
subopt: cli::StartOpt, subopt: cli::StartOpt,
) -> (config::Config, db::Dbs, templates::Templates) { ) -> (config::Config, db::Dbs, templates::Templates) {
std::fs::create_dir_all(&opt.dir.0).expect("Cannot create dir"); std::fs::create_dir_all(&opt.dir.0).expect("Cannot create dir");
let config = config::read_config(&opt.dir.0);
let dbs = db::load_dbs((!subopt.tmp).then_some(&opt.dir.0)); let dbs = db::load_dbs((!subopt.tmp).then_some(&opt.dir.0));
let templates = templates::Templates::new(&opt.dir.0, &config);
( (config, dbs, templates)
config::read_config(&opt.dir.0),
dbs,
templates::Templates::new(&opt.dir.0),
)
} }

View file

@ -1,4 +1,4 @@
use crate::db::*; use crate::{config::Config, db::*};
use serde::Serialize; use serde::Serialize;
use std::path::Path; use std::path::Path;
@ -17,15 +17,15 @@ pub struct Templates {
} }
impl Templates { impl Templates {
pub fn new(dir: &Path) -> Self { pub fn new(dir: &Path, config: &Config) -> Self {
let dir = dir.join("templates"); let dir = dir.join(&config.templates_dir);
std::fs::create_dir_all(&dir).expect("Cannot create templates dir"); std::fs::create_dir_all(&dir).expect("Cannot create templates dir");
for &(file, default) in TEMPLATE_FILES { for &(file, default) in TEMPLATE_FILES {
let file_path = dir.join(file); let file_path = dir.join(file);
if !file_path.is_file() { if !file_path.is_file() {
std::fs::write(file_path, default) std::fs::write(file_path, default)
.unwrap_or_else(|_| panic!("Cannot write template file {}", file)); .unwrap_or_else(|_| panic!("Cannot write template file {file}"));
} }
} }