use yog_data::{Ordered, Schema, Text, Value};
#[derive(Schema)]
pub struct ModSection {
pub id: String,
pub name: Option<Text>,
pub version: Option<String>,
pub description: Option<Text>,
pub icon: Option<yog_data::Image>,
#[data(default)]
pub authors: Vec<String>,
pub license: Option<String>,
pub exports_license: Option<String>,
pub datapack: Option<String>,
pub edition: Option<String>,
}
#[derive(Schema)]
pub struct DevSection {
pub yog_api_path: Option<String>,
}
#[derive(Schema)]
pub struct RunSection {
pub name: Option<String>,
pub export_dir: Option<String>,
pub command: Option<String>,
#[data(default)]
pub args: Vec<String>,
pub cwd: Option<String>,
#[data(default)]
pub env: Vec<String>,
}
#[derive(Schema)]
pub struct ExternalSection {
#[data(default)]
pub items: Vec<String>,
#[data(default)]
pub blocks: Vec<String>,
#[data(default)]
pub entities: Vec<String>,
#[data(default)]
pub recipes: Vec<String>,
}
#[derive(Schema)]
pub struct ManifestFile {
#[data(rename = "mod")]
pub module: ModSection,
pub dev: Option<DevSection>,
#[data(default)]
pub dependencies: Ordered<Value>,
#[data(rename = "dev-dependencies", default)]
pub dev_dependencies: Ordered<Value>,
#[data(default)]
pub run: Ordered<RunSection>,
#[data(default)]
pub external: Ordered<ExternalSection>,
}