stencilr 0.5.30

Template engine for Ordinary Framework.
Documentation
use std::{collections::BTreeMap, error::Error, path::Path, sync::Arc};

use cbwaw::Auth;
use configinator::TemplateConfig;
use stencilr::Template;
use stewball::{
    Storage,
    saferlmdb::{self, EnvBuilder},
};
use wasmtime::Engine;

#[test]
fn integration() -> Result<(), Box<dyn Error>> {
    let store_dir = Path::new(".ordinary").join("store");

    if std::fs::read_dir(&store_dir).is_ok() {
        std::fs::remove_dir_all(&store_dir)?;
    }

    std::fs::create_dir_all(&store_dir)?;

    let env = Arc::new(unsafe {
        let mut env_builder = EnvBuilder::new()?;
        env_builder.set_maxreaders(126)?;
        env_builder.set_mapsize(16384 * 2560)?;
        env_builder.set_maxdbs(13)?;
        env_builder.open(
            store_dir.to_str().expect("store dir to str"),
            saferlmdb::open::Flags::empty(),
            0o600,
        )?
    });

    let auth = Arc::new(Auth::new(
        "example.com".into(),
        None,
        [0u8; 32],
        env.clone(),
    )?);

    let model_configs = vec![];
    let content_defs = vec![];

    let storage = Arc::new(Storage::new(
        model_configs.clone(),
        content_defs.clone(),
        [0u8; 32],
        env,
        store_dir.join("search"),
        false,
    )?);

    let mut model_map = BTreeMap::new();
    for model_config in &model_configs {
        model_map.insert(model_config.name.clone(), model_config);
    }

    let mut content_map = BTreeMap::new();
    for content_def in &content_defs {
        content_map.insert(content_def.name.clone(), content_def);
    }

    let config = TemplateConfig {
        idx: 0,
        name: "test".into(),
        mime: "text/html".into(),
        minify: None,
        path: None,
        route: "/test".into(),
        protected: None,
        cache: None,
        fields: None,
        globals: None,
        params: None,
        flags: None,
        models: None,
        content: None,
        actions: None,
    };

    let _template = Template::new(
        None,
        config,
        auth,
        &model_map,
        &content_map,
        Engine::default(),
        storage,
    )?;

    // todo

    Ok(())
}