aboutsummaryrefslogtreecommitdiff
path: root/htmlua-parser/src/serve.rs
diff options
context:
space:
mode:
Diffstat (limited to 'htmlua-parser/src/serve.rs')
-rw-r--r--htmlua-parser/src/serve.rs32
1 files changed, 21 insertions, 11 deletions
diff --git a/htmlua-parser/src/serve.rs b/htmlua-parser/src/serve.rs
index cfb3811..9821210 100644
--- a/htmlua-parser/src/serve.rs
+++ b/htmlua-parser/src/serve.rs
@@ -1,19 +1,29 @@
-use crate::helpers::read_doc_from_file;
-
-use super::render::{execute_lua, expand_template, process_markdown, process_syntax_highlighting};
+use crate::{
+ config::Config,
+ helpers::read_doc_from_file,
+ render::{execute_lua, expand_template, process_markdown, process_syntax_highlighting},
+};
use anyhow::Result;
-use std::path::{Path, PathBuf};
+use std::{path::Path, sync::OnceLock};
+
+static CONFIG: OnceLock<Config> = OnceLock::new();
+
+pub fn get_config() -> &'static Config {
+ CONFIG.get_or_init(|| {
+ Config::load().unwrap_or_else(|e| {
+ eprintln!("Warning: Failed to load config: {}", e);
+ eprintln!("Using default configuration");
+ Config::default()
+ })
+ })
+}
pub fn serve_content(request_uri: &str) -> Result<String> {
- // TODO: read from config
- let pages = PathBuf::from("/var/www/htmlua/pages");
- let components = PathBuf::from("/var/www/htmlua/components");
+ let config = get_config();
let safe_path = Path::new(request_uri).strip_prefix("/")?;
- let page_path = pages.join(safe_path);
-
+ let page_path = config.paths.pages.join(safe_path);
let doc = read_doc_from_file(page_path)?;
-
- let full_doc = expand_template(doc, &components, None)?;
+ let full_doc = expand_template(doc, &config.paths.components, None)?;
let markdown_doc = process_markdown(full_doc)?;
let highlighted_doc = process_syntax_highlighting(markdown_doc)?;
let executed_doc = execute_lua(highlighted_doc)?;