private PackageInformationMapping LoadPackageInformationMapping(string folder) { var pkgInfoDir = Path.Combine(folder, "PackageInformation"); var pkgInfoMapping = new PackageInformationMapping(); foreach (var file in ListFiles(pkgInfoDir, "*.json")) { try { var mapping = JsonConvert.DeserializeObject <PackageInformationMapping>(_fileAccessor.ReadAllText(file.AbsolutePath)); pkgInfoMapping.Merge(mapping); } catch (Exception ex) { OPSLogger.LogUserError(LogCode.ECMA2Yaml_PackageInformation_LoadFailed, file.AbsolutePath, ex); } } return(pkgInfoMapping); }
public static IEnumerable <VersionedString> MonikerizePackageStrings(ReflectionItem item, PackageInformationMapping pkgInfoMapping) { if (item.VersionedAssemblyInfo == null) { return(null); } var monikerPackagePairs = item.VersionedAssemblyInfo.ValuesPerMoniker .Select(pair => ( moniker: pair.Key, pkgStr: string.Join(", ", pair.Value.Select(asm => pkgInfoMapping.TryGetPackageDisplayString(pair.Key, asm.Name)) .Where(str => str != null) .Distinct() .OrderBy(str => str)) )) .Where(pair => pair.pkgStr != "") .ToList(); var versionedList = monikerPackagePairs .GroupBy(p => p.pkgStr) .Select(g => new VersionedString() { Value = g.Key, Monikers = g.Select(p => p.moniker).ToHashSet() }) .ToList(); if (versionedList.Count == 1) { versionedList.First().Monikers = null; } return(versionedList.NullIfEmpty()); }