use serde::{Deserialize, Serialize};
use tatara_env::compile::Env;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum RenderError {
#[error("unsupported keyword `{0}` — backend has no renderer for this domain")]
Unsupported(String),
#[error("resource `{keyword}/{name}`: {message}")]
Resource {
keyword: String,
name: String,
message: String,
},
#[error("yaml emit: {0}")]
Yaml(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Manifest {
pub kind: String,
pub path: String,
pub content: String,
}
pub trait Backend {
fn render(&self, env: &Env) -> Result<Vec<Manifest>, RenderError>;
}