use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct WorkspaceVarFiles {
#[serde(flatten)]
pub workspaces: HashMap<String, Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GlobalConfig {
#[serde(default)]
pub ignore_workspaces: Vec<String>,
pub workspace_var_files: Option<WorkspaceVarFiles>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ModuleConfig {
#[serde(default)]
pub ignore_workspaces: Vec<String>,
pub workspace_var_files: Option<WorkspaceVarFiles>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SolarboatConfig {
#[serde(default)]
pub global: GlobalConfig,
#[serde(default)]
pub modules: HashMap<String, ModuleConfig>,
}
impl WorkspaceVarFiles {
pub fn get_workspace_files(&self, workspace: &str) -> Vec<String> {
self.workspaces
.get(workspace)
.cloned()
.unwrap_or_default()
}
pub fn has_workspace(&self, workspace: &str) -> bool {
self.workspaces.contains_key(workspace)
}
}