using Core; using Core.Dto.Settings; using Core.Settings; using Generator.DataSource.Settings; namespace Generator.Mappers; public static class DotnetMapper { public static DotnetConfig Map(this DotnetConfigDto dto, ConfigManager configManager, ISpecFile file) { var specName = file.Name; var specFolder = file.Folder; var generationFolder = configManager.GetGeneral().GenerationFolder; var apiFolder = configManager.GetGeneral().ApiFolder; var templatesConfig = configManager.Templates; var baseConfig = configManager.GetBase(); var openApiConfig = configManager.OpenApi.Map(configManager, specFolder, specName); var publishConfig = configManager.Publish; var credConfig = configManager.Credentials; var d = new DotnetConfig { LocalRoot = baseConfig.LocalRoot, DockerRoot = baseConfig.DockerRoot, GenerationImage = configManager.DockerImages.OpenApiGeneratorImage, BuildImage = configManager.DockerImages.DotnetSdkImage, Invite = baseConfig.Invite, SpecFile = apiFolder.ConcatenateWith([specFolder, $"{specName}{openApiConfig.SpecExtension}"]), OpenApi = openApiConfig.Folder, PackageFolder = "src", PackageFile = file.NugetPackage, TemplateFolder = new Location(templatesConfig.Folder), CommonFolder = generationFolder.ConcatenateWith([specFolder, dto.CommonFolder, specName]), ServerFolder = generationFolder.ConcatenateWith([specFolder, dto.ServerFolder, specName]), ClientFolder = generationFolder.ConcatenateWith([specFolder, dto.ClientFolder, specName]), ConfigFile = openApiConfig.GeneratorConfigFile, IgnoreFile = openApiConfig.GeneratorIgnoreFile, ServerConfigTemplate = new Location([templatesConfig.Folder, templatesConfig.DotnetServerGeneratorConfig]), ClientConfigTemplate = new Location([templatesConfig.Folder, templatesConfig.DotnetClientGeneratorConfig]), ServerIgnoreTemplate = new Location([templatesConfig.Folder, templatesConfig.ServerIgnore]), ClientIgnoreTemplate = new Location([templatesConfig.Folder, templatesConfig.ClientIgnore]), Registry = publishConfig.NugetRegistry, AuthorizationToken = credConfig.Token }; return d; } }