1use serde::Deserialize;
2
3#[derive(Debug, Deserialize)]
4pub struct BuildConfig {
5 pub build: BuildMeta,
6 #[serde(default)]
7 pub plugin: Vec<PluginEntry>,
8}
9
10#[derive(Debug, Deserialize)]
11pub struct BuildMeta {
12 pub output: String,
13 #[serde(default = "default_rust_version")]
14 pub rust_version: String,
15}
16
17fn default_rust_version() -> String {
18 "1.85".into()
19}
20
21#[derive(Debug, Deserialize)]
22pub struct PluginEntry {
23 pub crate_name: String,
24 pub version: Option<String>,
25 pub path: Option<String>,
26 pub git: Option<String>,
27 #[serde(default)]
28 pub config_key: String,
29}
30
31pub fn load(path: &str) -> anyhow::Result<BuildConfig> {
32 let text = std::fs::read_to_string(path)?;
33 Ok(toml::from_str(&text)?)
34}