Skip to main content

folk_builder/
config.rs

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}