#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Profile {
pub chip: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub devkit: Option<String>,
pub shared: String,
pub deploy_root: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sysroot: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kernel_recipe: Option<String>,
#[serde(default = "default_true")]
pub time_driver: bool,
#[serde(default)]
pub workspace: Workspace,
}
pub const CSTI_MANIFEST_PATH_ENV: &str = "CSTI_MANIFEST_PATH";
pub const CSTI_MCU_PATH_ENV: &str = "CSTI_MCU_PATH";
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Workspace {
Unified,
#[default]
Nested,
}
impl Workspace {
pub fn firmware_target_base_env(self) -> &'static str {
match self {
Self::Unified => CSTI_MANIFEST_PATH_ENV,
Self::Nested => CSTI_MCU_PATH_ENV,
}
}
}
fn default_true() -> bool {
true
}