use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct PackageConfig {
pub package: Option<String>,
pub version: Option<String>,
#[serde(default)]
pub path_arguments: HashMap<String, Vec<String>>,
#[serde(default)]
pub non_path_arguments: HashMap<String, Vec<String>>,
pub runtime: Option<RuntimeOverride>,
#[serde(default)]
pub env: HashMap<String, String>,
#[serde(default)]
pub env_passthrough: Vec<String>,
pub storage: Option<StorageConfig>,
#[serde(default)]
pub mounts: Vec<MountConfig>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct RuntimeOverride {
pub memory: Option<String>,
pub cpus: Option<String>,
pub network: Option<String>,
}
#[derive(Debug, Default, Clone, Serialize, Deserialize)]
pub struct StorageConfig {
#[serde(default)]
pub persist: bool,
#[serde(default)]
pub writable: Vec<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MountConfig {
pub host: String,
pub container: String,
#[serde(default = "default_mount_mode")]
pub mode: String,
}
fn default_mount_mode() -> String {
"ro".to_string()
}