use super::actions::EnvironmentActions;
use super::constrained_strings::Description;
use crate::format_string::FormatString;
use crate::types::{EndOfLine, FileType};
use serde::Deserialize;
use std::collections::HashMap;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct Environment {
pub name: String,
pub description: Option<Description>,
pub script: Option<EnvironmentScript>,
pub variables: Option<HashMap<String, FormatString>>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct EnvironmentScript {
#[serde(rename = "let")]
pub let_bindings: Option<Vec<String>>,
pub actions: EnvironmentActions,
pub embedded_files: Option<Vec<EmbeddedFile>>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase", deny_unknown_fields)]
pub struct EmbeddedFile {
pub name: String,
#[serde(rename = "type")]
pub file_type: FileType,
pub filename: Option<FormatString>,
pub data: Option<FormatString>,
pub runnable: Option<bool>,
#[serde(rename = "endOfLine")]
pub end_of_line: Option<EndOfLine>,
}