in code/src/CoreTemplateStudio/CoreTemplateStudio.Core/Templates/TemplatesRepository.cs [523:569]
private IEnumerable<MetadataInfo> GetMetadataInfo(string type)
{
if (Sync?.CurrentContent != null)
{
var folderName = Path.Combine(Sync?.CurrentContent.Path, CurrentPlatform, Catalog);
if (Directory.Exists(folderName))
{
var metadataFile = Path.Combine(folderName, $"{type}.json");
var metadataFileLocalized = Path.Combine(folderName, $"{CultureInfo.CurrentUICulture.IetfLanguageTag}.{type}.json");
if (File.Exists(metadataFile))
{
var metadata = JsonConvert.DeserializeObject<List<MetadataInfo>>(File.ReadAllText(metadataFile));
if (metadata.Any(m => m.Languages != null))
{
metadata.RemoveAll(m => !m.Languages.Contains(CurrentLanguage));
}
if (File.Exists(metadataFileLocalized))
{
var metadataLocalized = JsonConvert.DeserializeObject<List<MetadataLocalizedInfo>>(File.ReadAllText(metadataFileLocalized));
metadataLocalized.ForEach(ml =>
{
MetadataInfo cm = metadata.FirstOrDefault(m => m.Name == ml.Name);
if (cm != null)
{
cm.DisplayName = ml.DisplayName;
cm.Summary = ml.Summary;
}
});
}
metadata.ForEach(m => SetMetadataDescription(m, folderName, type));
metadata.ForEach(m => SetMetadataIcon(m, folderName, type));
metadata.ForEach(m => m.MetadataType = type == "projectTypes" ? MetadataType.ProjectType : MetadataType.Framework);
metadata.ForEach(m => SetLicenseTerms(m));
metadata.ForEach(m => SetDefaultTags(m));
return metadata.OrderBy(m => m.Order);
}
}
}
return Enumerable.Empty<MetadataInfo>();
}