private bool allDependenciesCompatible(CkanModule mod, KspVersionCriteria ksp_version) { // we need to check that we can get everything we depend on if (mod.depends != null) { foreach (RelationshipDescriptor dependency in mod.depends) { try { if (!dependency.MatchesAny(null, InstalledDlls.ToHashSet(), InstalledDlc) && !LatestAvailableWithProvides(dependency.name, ksp_version).Any()) { return(false); } } catch (KeyNotFoundException e) { log.ErrorFormat("Cannot find available version with provides for {0} in registry", dependency.name); throw e; } catch (ModuleNotFoundKraken) { return(false); } } } return(true); }
/// <summary> /// Partition all CkanModules in available_modules into /// compatible and incompatible groups. /// </summary> /// <param name="versCrit">Version criteria to determine compatibility</param> public void SetCompatibleVersion(KspVersionCriteria versCrit) { if (!versCrit.Equals(sorter?.CompatibleVersions)) { sorter = new CompatibilitySorter( versCrit, available_modules, providers, InstalledDlls.ToHashSet(), _installedDlcModules ); } }