use std::path::PathBuf;
use crate::contracts::Task;
use crate::template::variables::TemplateWarning;
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TemplateSource {
Custom(PathBuf),
Builtin(String),
}
#[derive(Debug, Clone)]
pub struct TemplateInfo {
pub name: String,
pub source: TemplateSource,
pub description: String,
}
#[derive(Debug, Clone)]
pub struct LoadedTemplate {
pub task: Task,
pub source: TemplateSource,
pub warnings: Vec<TemplateWarning>,
}
#[derive(Debug, thiserror::Error)]
pub enum TemplateError {
#[error("Template not found: {0}")]
NotFound(String),
#[error("Failed to read template file: {0}")]
ReadError(String),
#[error("Invalid template JSON: {0}")]
InvalidJson(String),
#[error("Template validation failed: {0}")]
ValidationError(String),
}