public virtual async Task GenerateCodes(Workspace workspace) { if (workspace == null) { throw new ArgumentNullException(nameof(workspace)); } BitConfig bitConfig = _bitConfigProvider.GetConfiguration(); foreach (BitCodeGeneratorMapping proxyGeneratorMapping in bitConfig.BitCodeGeneratorConfigs.BitCodeGeneratorMappings.Where(m => m.GenerationType == GenerationType.CSharp)) { string generatedContextName = proxyGeneratorMapping.DestinationFileName; StringBuilder generatedCs = new StringBuilder(); string generatedCSContextExtension = ".cs"; Project destProject = workspace.CurrentSolution.Projects.Where(p => p.Language == LanguageNames.CSharp) .ExtendedSingle($"Trying to find project with name: {proxyGeneratorMapping.DestinationProject.Name}", p => proxyGeneratorMapping.DestinationProject.IsThisProject(p)); IList <Project> involveableProjects = _bitCodeGeneratorOrderedProjectsProvider.GetInvolveableProjects(workspace, workspace.CurrentSolution.Projects.Where(p => p.Language == LanguageNames.CSharp).ToList(), proxyGeneratorMapping); List <DtoController> dtoControllers = new List <DtoController>(); foreach (Project p in involveableProjects) { dtoControllers.AddRange(await _dtoControllersProvider.GetProjectDtoControllersWithTheirOperations(p)); } generatedCs.AppendLine(_contextGenerator.GenerateCSharpContext(dtoControllers, proxyGeneratorMapping)); WriteFiles(generatedCs.ToString(), generatedContextName, generatedCSContextExtension, destProject); } }
public virtual async Task GenerateCodes(Solution solution, IList <Project> projects) { if (solution == null) { throw new ArgumentNullException(nameof(solution)); } if (projects == null) { throw new ArgumentNullException(nameof(projects)); } foreach (BitCodeGeneratorMapping proxyGeneratorMapping in _bitCodeGeneratorMappingsProvider.GetBitCodeGeneratorMappings(solution, projects)) { string generatedContextName = proxyGeneratorMapping.DestinationFileName; StringBuilder generatedJs = new StringBuilder(); StringBuilder generatedTs = new StringBuilder(); string generatedJsContextExtension = ".js"; string generatedTsContextExtension = ".d.ts"; Project destProject = solution.Projects .Last(p => p.Name == proxyGeneratorMapping.DestinationProject.Name); IList <Project> involveableProjects = _solutionProjectsSelector.GetInvolveableProjects(solution, solution.Projects.ToList(), proxyGeneratorMapping); List <Dto> dtos = new List <Dto>(); foreach (Project p in involveableProjects) { dtos.AddRange(await _dtosProvider.GetProjectDtos(p, involveableProjects)); } List <EnumType> enumTypes = new List <EnumType>(); foreach (Project p in involveableProjects) { enumTypes.AddRange(await _projectEnumTypesProvider.GetProjectEnumTypes(p, involveableProjects)); } List <DtoController> dtoControllers = new List <DtoController>(); foreach (Project p in involveableProjects) { dtoControllers.AddRange(await _dtoControllersProvider.GetProjectDtoControllersWithTheirOperations(p)); } generatedJs.AppendLine(_dtoGenerator.GenerateJavaScriptDtos(dtos, enumTypes)); generatedJs.AppendLine(_contextGenerator.GenerateJavaScriptContext(dtoControllers, proxyGeneratorMapping)); generatedTs.AppendLine(_dtoGenerator.GenerateTypeScriptDtos(dtos, enumTypes, proxyGeneratorMapping.TypingsPath)); generatedTs.AppendLine(_contextGenerator.GenerateTypeScriptContext(dtoControllers, proxyGeneratorMapping)); WriteResults(solution, generatedJs.ToString(), generatedContextName, generatedJsContextExtension, destProject); WriteResults(solution, generatedTs.ToString(), generatedContextName, generatedTsContextExtension, destProject); } }
public virtual async Task GenerateCodes(Workspace workspace, IList <string> projectNames) { if (workspace == null) { throw new ArgumentNullException(nameof(workspace)); } if (projectNames == null) { throw new ArgumentNullException(nameof(projectNames)); } foreach (BitCodeGeneratorMapping proxyGeneratorMapping in _bitCodeGeneratorMappingsProvider.GetBitCodeGeneratorMappings(workspace, projectNames)) { string generatedContextName = proxyGeneratorMapping.DestinationFileName; StringBuilder generatedJs = new StringBuilder(); StringBuilder generatedTs = new StringBuilder(); string generatedJsContextExtension = ".js"; string generatedTsContextExtension = ".d.ts"; Project destProject = workspace.CurrentSolution.Projects.Where(p => p.Language == LanguageNames.CSharp) .ExtendedSingle($"Trying to find project with name: {proxyGeneratorMapping.DestinationProject.Name}", p => p.Name == proxyGeneratorMapping.DestinationProject.Name); IList <Project> involveableProjects = _solutionProjectsSelector.GetInvolveableProjects(workspace, workspace.CurrentSolution.Projects.Where(p => p.Language == LanguageNames.CSharp).ToList(), proxyGeneratorMapping); List <Dto> dtos = new List <Dto>(); foreach (Project p in involveableProjects) { dtos.AddRange(await _dtosProvider.GetProjectDtos(p, involveableProjects)); } List <EnumType> enumTypes = new List <EnumType>(); foreach (Project p in involveableProjects) { enumTypes.AddRange(await _projectEnumTypesProvider.GetProjectEnumTypes(p, involveableProjects)); } List <DtoController> dtoControllers = new List <DtoController>(); foreach (Project p in involveableProjects) { dtoControllers.AddRange(await _dtoControllersProvider.GetProjectDtoControllersWithTheirOperations(p)); } generatedJs.AppendLine(_dtoGenerator.GenerateJavaScriptDtos(dtos, enumTypes)); generatedJs.AppendLine(_contextGenerator.GenerateJavaScriptContext(dtoControllers, proxyGeneratorMapping)); generatedTs.AppendLine(_dtoGenerator.GenerateTypeScriptDtos(dtos, enumTypes, proxyGeneratorMapping.TypingsPath)); generatedTs.AppendLine(_contextGenerator.GenerateTypeScriptContext(dtoControllers, proxyGeneratorMapping)); WriteFiles(workspace.CurrentSolution, generatedJs.ToString(), generatedContextName, generatedJsContextExtension, destProject); WriteFiles(workspace.CurrentSolution, generatedTs.ToString(), generatedContextName, generatedTsContextExtension, destProject); } }