From a28f6ca5e204424e4029db4735f4dbfc149f71f2 Mon Sep 17 00:00:00 2001 From: Aiden McClelland Date: Mon, 27 Sep 2021 16:23:24 -0600 Subject: [PATCH] change dependency requirement structure --- appmgr/src/config/mod.rs | 2 +- appmgr/src/dependencies.rs | 17 +++++++++++++++-- appmgr/src/install/mod.rs | 2 +- 3 files changed, 17 insertions(+), 4 deletions(-) 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