tempura 0.5.2

Pipeline-based Static site generator
Documentation
use std::{collections::HashMap, path::PathBuf};

use serde::{Deserialize, Serialize};

use crate::transformer::{JsonPathQuery, JsonPathQueryAll, Reloader, TemplateRenderer};

#[derive(Debug, Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum Step {
    Load {
        path: PathBuf,
        key: String,
        with: EnumLoader,
    },
    Transform {
        input: InputKey,
        output: String,
        with: EnumTransformer,
    },
    DumpStore,
}

#[derive(Debug, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord, Clone, Copy)]
#[serde(tag = "loader")]
pub enum EnumLoader {
    TextWithFrontmatter,
    Text,
    Template,
    Json,
    Blob,
    Yaml,
}

#[derive(Debug, Deserialize, Serialize)]
#[serde(tag = "transformer")]
pub enum EnumTransformer {
    TemplateRenderer(TemplateRenderer),
    JsonPath(JsonPathQuery),
    JsonPathAll(JsonPathQueryAll),
    Reloader(Reloader),
}

#[derive(Debug, Deserialize, Serialize)]
#[serde(untagged)]
pub enum InputKey {
    Single(String),
    List(Vec<String>),
    Map(HashMap<String, String>),
}