private string CreateReport() { var result = new StringBuilder(); result.AppendLine($"Application: {applicationInfo.ApplicationName}"); logger.LogMessage("Enumerate project files", LogMessageLevel.Trace); result.AppendLine("Files"); foreach (var file in fileSystem.EnumerateFiles( applicationInfo.ApplicationBasePath, "*.*", SearchOption.AllDirectories)) { result.AppendLine($"\t{file}"); } logger.LogMessage("Enumerate project types", LogMessageLevel.Trace); result.AppendLine("Types"); foreach (var type in modelTypesLocator.GetAllTypes()) { result.AppendLine($"\t{type.FullName}"); } return(result.ToString()); }
public void GenerateCode(AdvancedGeneratorModel model) { var types = modelTypesLocator.GetAllTypes(); if (!string.IsNullOrEmpty(model.TypeFilter)) { var regex = new Regex(model.TypeFilter); types = types.Where(t => regex.IsMatch(t.Name)); } var templateModel = new TemplateModel { Namespace = model.Namespace, Types = types.Select(t => new TemplateModelType { Name = t.Name, Properties = (t.TypeSymbol as INamedTypeSymbol) .GetMembers() .Where(m => m.Kind == SymbolKind.Property) .OfType <IPropertySymbol>() .Select(m => new TemplateModelProperty { Name = m.Name, Type = m.Type.Name }).ToArray() }).ToArray() }; var templateFolders = TemplateFoldersUtilities .GetTemplateFolders(this.GetType().Assembly.GetName().Name, applicationInfo.ApplicationBasePath, new string[] { "Advanced" }, projectContext); var outputFilePath = Path.Combine(applicationInfo.ApplicationBasePath, model.OutputFile); codeGeneratorActionsService.AddFileFromTemplateAsync(outputFilePath, TemplateName, templateFolders, templateModel); }