diff --git a/appmgr/src/config/mod.rs b/appmgr/src/config/mod.rs index 8a8b829ba..c4c4462ea 100644 --- a/appmgr/src/config/mod.rs +++ b/appmgr/src/config/mod.rs @@ -336,7 +336,7 @@ pub fn configure<'a, Db: DbHandle>( .0 .iter() .filter_map(|(id, info)| { - if info.optional.is_none() { + if info.requirement.required() { Some((id.clone(), CurrentDependencyInfo::default())) } else { None diff --git a/appmgr/src/dependencies.rs b/appmgr/src/dependencies.rs index f8a080506..d762b5f81 100644 --- a/appmgr/src/dependencies.rs +++ b/appmgr/src/dependencies.rs @@ -116,12 +116,25 @@ impl HasModel for Dependencies { type Model = MapModel; } +#[derive(Clone, Debug, Deserialize, Serialize)] +#[serde(rename_all = "kebab-case")] +#[serde(tag = "type")] +pub enum DependencyRequirement { + OptIn { how: String }, + OptOut { how: String }, + Required, +} +impl DependencyRequirement { + pub fn required(&self) -> bool { + matches!(self, &DependencyRequirement::Required) + } +} + #[derive(Clone, Debug, Deserialize, Serialize, HasModel)] #[serde(rename_all = "kebab-case")] pub struct DepInfo { pub version: VersionRange, - pub optional: Option, - pub recommended: bool, + pub requirement: DependencyRequirement, pub description: Option, pub critical: bool, #[serde(default)] diff --git a/appmgr/src/install/mod.rs b/appmgr/src/install/mod.rs index 84e88615f..935eab1ce 100644 --- a/appmgr/src/install/mod.rs +++ b/appmgr/src/install/mod.rs @@ -532,7 +532,7 @@ pub async fn install_s9pk( .0 .iter() .filter_map(|(id, info)| { - if info.optional.is_none() { + if info.requirement.required() { Some((id.clone(), CurrentDependencyInfo::default())) } else { None