2022-08-10 12:34:04 +02:00
|
|
|
use std::collections::HashMap;
|
|
|
|
|
|
|
|
use serde::Deserialize;
|
|
|
|
|
|
|
|
#[derive(Debug, Clone, PartialEq, Deserialize)]
|
|
|
|
#[serde(untagged)]
|
|
|
|
pub enum CuddleBase {
|
|
|
|
Bool(bool),
|
|
|
|
String(String),
|
|
|
|
}
|
|
|
|
|
2022-08-12 00:54:22 +02:00
|
|
|
#[derive(Debug, Clone, PartialEq, Deserialize)]
|
|
|
|
pub struct CuddleShellScriptArgEnv {
|
|
|
|
pub key: String,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, Clone, PartialEq, Deserialize)]
|
|
|
|
#[serde(tag = "type")]
|
|
|
|
pub enum CuddleShellScriptArg {
|
|
|
|
#[serde(alias = "env")]
|
|
|
|
Env(CuddleShellScriptArgEnv),
|
|
|
|
}
|
|
|
|
|
2022-08-10 12:34:04 +02:00
|
|
|
#[derive(Debug, Clone, PartialEq, Deserialize)]
|
|
|
|
pub struct CuddleShellScript {
|
|
|
|
pub description: Option<String>,
|
2022-08-12 00:54:22 +02:00
|
|
|
pub args: Option<HashMap<String, CuddleShellScriptArg>>,
|
2022-08-10 12:34:04 +02:00
|
|
|
}
|
|
|
|
#[derive(Debug, Clone, PartialEq, Deserialize)]
|
|
|
|
pub struct CuddleDaggerScript {
|
|
|
|
pub description: Option<String>,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, Clone, PartialEq, Deserialize)]
|
|
|
|
#[serde(tag = "type")]
|
|
|
|
pub enum CuddleScript {
|
|
|
|
#[serde(alias = "shell")]
|
|
|
|
Shell(CuddleShellScript),
|
|
|
|
#[serde(alias = "dagger")]
|
|
|
|
Dagger(CuddleDaggerScript),
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, Clone, PartialEq, Deserialize)]
|
|
|
|
pub struct CuddlePlan {
|
|
|
|
pub base: CuddleBase,
|
2022-08-11 02:03:19 +02:00
|
|
|
pub vars: Option<HashMap<String, String>>,
|
2022-08-10 12:34:04 +02:00
|
|
|
pub scripts: Option<HashMap<String, CuddleScript>>,
|
|
|
|
}
|