always use dist directory
Some checks are pending
ci/woodpecker/push/publish Pipeline is pending
ci/woodpecker/pr/publish Pipeline is pending

This commit is contained in:
Mylloon 2023-04-09 17:35:15 +02:00
parent c42238a624
commit d1568f406d
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 36 additions and 34 deletions

View file

@ -1,3 +1,2 @@
[general] [general]
# Directories to search for templates, relative to the crate root. dirs = ["dist/templates"]
dirs = ["dist/templates", "templates"]

View file

@ -89,10 +89,17 @@ pub fn get_config(file_path: &str) -> Config {
let internal_config = get_file_config(file_path); let internal_config = get_file_config(file_path);
let static_dir = "static".to_string(); let static_dir = "static".to_string();
// TODO: Check if templates dir is coherent with the whole list let templates_dirs = get_askama_config().general.dirs;
let templates_dir = get_askama_config().general.dirs.last().unwrap().to_string(); if templates_dirs.len() != 1 {
// TODO: Check dist by askama config file panic!("Too many templates directories")
let files_root = init("dist".to_string(), static_dir.clone(), templates_dir); }
let mut template_data = templates_dirs[0].split('/');
let files_root = init(
template_data.next().unwrap().to_string(),
static_dir.clone(),
template_data.next().unwrap().to_string(),
);
Config { Config {
fc: internal_config, fc: internal_config,
@ -101,40 +108,35 @@ pub fn get_config(file_path: &str) -> Config {
} }
fn init(dist_dir: String, static_dir: String, templates_dir: String) -> String { fn init(dist_dir: String, static_dir: String, templates_dir: String) -> String {
// The static folder is minimized only in release mode // Be sure that we not gonna use the dist folder by deleting it
if cfg!(debug_assertions) { remove_dir_all(&dist_dir).unwrap_or_default();
// Be sure that we not gonna use the dist folder by deleting it
remove_dir_all(dist_dir).unwrap_or_default();
".".to_string() let cfg = Cfg::spec_compliant();
} else {
let cfg = Cfg::spec_compliant();
// Static files // Static files
for entry in glob(&format!("{static_dir}/**/*.*")).unwrap() { for entry in glob(&format!("{static_dir}/**/*.*")).unwrap() {
let path = entry.unwrap(); let path = entry.unwrap();
let path_with_dist = path let path_with_dist = path
.to_string_lossy() .to_string_lossy()
.replace(&static_dir, &format!("{dist_dir}/{static_dir}")); .replace(&static_dir, &format!("{dist_dir}/{static_dir}"));
minify_and_copy(&cfg, path, path_with_dist); copy_to_dist(&cfg, path, path_with_dist);
}
// Template files
for entry in glob(&format!("{templates_dir}/**/*.*")).unwrap() {
let path = entry.unwrap();
let path_with_dist = path
.to_string_lossy()
.replace(&templates_dir, &format!("{dist_dir}/{templates_dir}"));
minify_and_copy(&cfg, path, path_with_dist);
}
dist_dir
} }
// Template files
for entry in glob(&format!("{templates_dir}/**/*.*")).unwrap() {
let path = entry.unwrap();
let path_with_dist = path
.to_string_lossy()
.replace(&templates_dir, &format!("{dist_dir}/{templates_dir}"));
copy_to_dist(&cfg, path, path_with_dist);
}
dist_dir
} }
fn minify_and_copy(cfg: &Cfg, path: PathBuf, path_with_dist: String) { fn copy_to_dist(cfg: &Cfg, path: PathBuf, path_with_dist: String) {
// Create folders // Create folders
let new_path = Path::new(&path_with_dist); let new_path = Path::new(&path_with_dist);
fs::create_dir_all(new_path.parent().unwrap()).unwrap(); fs::create_dir_all(new_path.parent().unwrap()).unwrap();
@ -145,6 +147,7 @@ fn minify_and_copy(cfg: &Cfg, path: PathBuf, path_with_dist: String) {
if ["html", "css", "js", "svg", "webmanifest", "xml"] if ["html", "css", "js", "svg", "webmanifest", "xml"]
.iter() .iter()
.any(|item| ext.to_string_lossy().to_lowercase().contains(item)) .any(|item| ext.to_string_lossy().to_lowercase().contains(item))
&& !cfg!(debug_assertions)
{ {
// We won't copy, we'll minify // We won't copy, we'll minify
copy = false; copy = false;