use std::path::PathBuf;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Config {
pub title: String,
#[serde(default, rename = "input")]
pub inputs: Vec<Input>,
#[serde(default, rename = "output")]
pub outputs: Vec<Output>,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Input {
pub name: String,
#[serde(default)]
pub kind: InputKind,
pub default: Option<String>,
pub description: Option<String>,
}
#[derive(Default, Debug, Deserialize)]
#[serde(deny_unknown_fields)]
#[serde(rename_all = "snake_case")]
pub enum InputKind {
#[default]
String,
Secret,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
#[serde(rename_all = "snake_case", tag = "kind")]
pub enum Output {
File {
path: PathBuf,
contents: Contents,
},
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
#[serde(untagged)]
pub enum Contents {
String(String),
List(Vec<String>),
}