diff --git a/src/fomod.rs b/src/fomod.rs index 3cfa0f9..65b0c53 100644 --- a/src/fomod.rs +++ b/src/fomod.rs @@ -118,6 +118,7 @@ pub enum PluginTypeDescriptorEnum { #[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct DependencyPluginType { + #[serde(rename = "defaultType")] pub default_type: PluginType, pub patterns: DependencyPatternList, } @@ -129,7 +130,7 @@ pub struct DependencyPatternList { #[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct DependencyPattern { - pub dependencies: CompositeDependency, + pub dependencies: Vec, #[serde(rename = "type")] pub typ: PluginType, } diff --git a/src/mod_config_installer.rs b/src/mod_config_installer.rs index cedcae8..40d7f6e 100644 --- a/src/mod_config_installer.rs +++ b/src/mod_config_installer.rs @@ -176,7 +176,11 @@ fn resolve_plugin_type( PluginTypeDescriptorEnum::PluginType(plugin_type) => plugin_type.name, PluginTypeDescriptorEnum::DependencyType(dependency_plugin_type) => { for dep in &dependency_plugin_type.patterns.pattern { - if evaluate_dependency(&dep.dependencies, state, installed_plugins) { + if dep + .dependencies + .iter() + .all(|e| evaluate_dependency(e, state, installed_plugins)) + { return dep.typ.name; } }