use std::collections::HashMap;
use geoff_core::config::SiteConfig;
use geoff_graph::store::ContentStore;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PageData {
pub path: String,
pub title: Option<String>,
pub content_type: Option<String>,
pub html: String,
pub raw_body: String,
pub frontmatter: HashMap<String, serde_json::Value>,
}
pub struct InitContext<'a> {
pub config: &'a SiteConfig,
pub plugin_options: &'a HashMap<String, toml::Value>,
}
pub struct BuildContext<'a> {
pub config: &'a SiteConfig,
pub store: &'a ContentStore,
}
pub struct ContentContext<'a> {
pub config: &'a SiteConfig,
pub page: &'a mut PageData,
}
pub struct GraphContext<'a> {
pub config: &'a SiteConfig,
pub store: &'a ContentStore,
}
pub struct ValidationContext<'a> {
pub config: &'a SiteConfig,
pub store: &'a ContentStore,
pub conforms: bool,
pub violations: usize,
}
pub struct RenderContext<'a> {
pub config: &'a SiteConfig,
pub store: &'a ContentStore,
pub page: &'a mut PageData,
pub extra_vars: &'a mut HashMap<String, serde_json::Value>,
}
pub struct OutputContext<'a> {
pub config: &'a SiteConfig,
pub store: &'a ContentStore,
pub outputs: &'a HashMap<String, String>,
pub output_dir: &'a camino::Utf8Path,
}
pub struct WatchContext<'a> {
pub config: &'a SiteConfig,
pub changed_path: &'a str,
}