/// <summary> /// /// </summary> /// <param name="templates"></param> /// <returns></returns> public static IList <TemplateModel> Generate(IList <TemplateItem> templates) { var models = new List <TemplateModel>(); foreach (var template in templates) { var templateModel = CodeGenTaskRunner.CreateModel(template); foreach (var section in template.Sections) { var sectionModel = new SectionModel { Item = section, Fields = section.Fields.Select(field => new FieldModel { Item = field, PropertyName = Helpers.GetPropertyName(field), PropertyType = Helpers.GetGlassFieldType(field) }).ToList() }; templateModel.Sections.Add(sectionModel); } models.Add(templateModel); } var modelLookup = models.ToDictionary(t => t.Item.Id, t => t); foreach (var template in templates.Where(m => m.BaseTemplates.Any())) { var range = template.BaseTemplates .Where(m => modelLookup.ContainsKey(m.Id)).Select(m => modelLookup[m.Id]); modelLookup[template.Id].BaseTemplates.AddRange(range); } return(models); }
static void Main(string[] args) { var settings = Program.Setup(args); if (settings == null) { return; } var templates = UnicornTaskRunner.Run(settings); var models = CodeGenTaskRunner.Generate(templates); if (!settings.Debug) { Console.WriteLine(JsonConvert.SerializeObject(models)); return; } ListTemplates(templates); Console.ReadLine(); }