/// <summary> /// <see cref="IRegistryQuerier.LatestAvailableWithProvides" /> /// </summary> public List <CkanModule> LatestAvailableWithProvides( string identifier, KspVersionCriteria ksp_version, RelationshipDescriptor relationship_descriptor = null, IEnumerable <CkanModule> toInstall = null) { if (providers.TryGetValue(identifier, out HashSet <AvailableModule> provs)) { // For each AvailableModule, we want the latest one matching our constraints return(provs .Select(am => am.Latest( ksp_version, relationship_descriptor, InstalledModules.Select(im => im.Module), toInstall )) .Where(m => m?.ProvidesList?.Contains(identifier) ?? false) .ToList()); } else { // Nothing provides this, return empty list return(new List <CkanModule>()); } }
internal static async Task <string> GetAreaNameFromGuidAsync(bool newMods, Guid?moduleGuid) { if (moduleGuid != null && moduleGuid != Guid.Empty) { if (newMods) { InstalledModules.ModuleTypeEntry modEntry = InstalledModules.TryFindModuleEntry((Guid)moduleGuid); if (modEntry != null) { return(modEntry.Package.AreaName); } else { moduleGuid = null; } } else { return((from m in await DesignedModules.LoadDesignedModulesAsync() where m.ModuleGuid == (Guid)moduleGuid select m.AreaName).FirstOrDefault()); } } return(null); }