Files
api-generator/Generator/Mappers/DotnetMapper.cs
2025-10-11 13:08:09 +02:00

54 lines
2.4 KiB
C#

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;
}
}