lib_defs/app_env/src/module.rs

64 lines
1.5 KiB
Rust

use serde::{Deserialize};
#[derive(Clone, Debug, Deserialize, Default)]
pub struct Module {
pub name: String,
pub title: String,
pub key: String,
pub dflt_lang: String,
#[serde(default = "default_empty")]
pub template_path: String,
pub logo_url: String,
pub css_url: String,
pub bg_url: String,
pub color: String,
pub main_color: String,
pub main_bg: String,
pub css_color: String,
#[serde(default = "default_empty")]
pub captcha_color: String,
#[serde(default = "default_empty")]
pub manifesto: String,
pub stores: String,
#[serde(default = "default_bool")]
pub init_load: bool,
#[serde(default = "default_empty")]
pub store_root: String,
#[serde(default = "default_empty")]
pub store_path: String,
#[serde(default = "default_empty")]
pub store_frmt: String,
#[serde(default = "default_empty")]
pub upload_path: String,
}
fn default_empty() -> String {
"".to_string()
}
fn default_bool() -> bool {
false
}
impl Module {
pub fn load_fs_content(path: &std::path::PathBuf) -> String {
std::fs::read_to_string(path)
.unwrap_or_else(|e| {
eprintln!("{}",e);
String::from("")
})
}
pub fn new(content: String) -> Self {
// let modul_def: toml::Value = toml::from_str(&content)?;
// if let Some(name) = modul_def["name"].as_str() {
match toml::from_str(&content) {
Ok(cfg) => {
println!("Module Loaded successfully");
cfg
},
Err(e) => {
println!("Module error: {}",e);
Module::default()
}
}
}
}