Import from internal git

This commit is contained in:
2025-10-11 13:08:09 +02:00
commit 97aaa715dc
175 changed files with 7014 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
using Core.Actions;
using Core.Dto.Settings;
using Core.Settings;
namespace Generator.Mappers;
public static class CredentialsMapper
{
public static CredentialsConfig Map(this CredentialsConfigDto dto)
=> new()
{
Email = dto.Email,
Token = dto.Token,
Username = dto.Username,
Password = dto.Password,
AlwaysAuth = dto.AlwaysAuth
};
public static PackageDeletion ToPackageDeletion(this CredentialsConfigDto dto)
{
return new PackageDeletion
{
Username = dto.Username,
Password = dto.Password
};
}
}

View File

@@ -0,0 +1,54 @@
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;
}
}

View File

@@ -0,0 +1,49 @@
using Core;
using Core.Dto.Settings;
using Core.Settings;
using Generator.DataSource.Settings;
namespace Generator.Mappers;
public static class JavaMapper
{
public static JavaConfig Map(this JavaConfigDto dto, ConfigManager configManager, ISpecFile file)
{
var apiFolder = configManager.GetGeneral().ApiFolder;
var specFolder = file.Folder;
var specName = file.Name;
var templatesConfig = configManager.Templates;
var pubConfig = configManager.Publish;
var credConfig = configManager.Credentials;
var openApiConfig = configManager.OpenApi.Map(configManager, specFolder, specName);;
var generationFolder = configManager.GetGeneral().GenerationFolder;
var baseConfig = configManager.GetBase();
var j = new JavaConfig
{
LocalRoot = baseConfig.LocalRoot,
DockerRoot = baseConfig.DockerRoot,
Invite = baseConfig.Invite,
BuildImage = configManager.DockerImages.MavenImage,
GenerationImage = configManager.DockerImages.OpenApiGeneratorImage,
ServerFolder = generationFolder.ConcatenateWith([specFolder, dto.Folder, specName]),
ConfigOutput = generationFolder.ConcatenateWith(openApiConfig.GeneratorConfigFile),
SpecFile = apiFolder.ConcatenateWith([specFolder, $"{specName}{openApiConfig.SpecExtension}"]),
ConfigFile = openApiConfig.GeneratorConfigFile,
OpenApi = configManager.OpenApi.Map(configManager, specFolder, specName).Folder,
TemplateFolder = new Location(templatesConfig.Folder),
ServerConfigTemplate = new Location([templatesConfig.Folder, templatesConfig.JavaGeneratorConfig]),
Registry = pubConfig.MavenRegistry,
Artifact = $"{file.Name}-api",
Version = file.Version,
Username = credConfig.Username,
Password = credConfig.Password,
};
return j;
}
}

View File

@@ -0,0 +1,36 @@
using Core;
using Core.Dto.Settings;
using Core.Settings;
using Generator.DataSource.Settings;
namespace Generator.Mappers;
public static class JavascriptMapper
{
public static JavascriptConfig Map(this JavascriptConfigDto dto, ConfigManager configManager, ISpecFile file)
{
var apiFolder = configManager.GetGeneral().ApiFolder;
var specFolder = file.Folder;
var specName = file.Name;
var templatesConfig = configManager.Templates;
var openApiConfig = configManager.OpenApi.Map(configManager, specFolder, specName);
var generationFolder = configManager.GetGeneral().GenerationFolder;
var baseConfig = configManager.GetBase();
return new JavascriptConfig
{
LocalRoot = baseConfig.LocalRoot,
DockerRoot = baseConfig.DockerRoot,
GenerationImage = configManager.DockerImages.OpenApiGeneratorImage,
BuildImage = configManager.DockerImages.JavascriptImage,
Invite = baseConfig.Invite,
ClientFolder = generationFolder.ConcatenateWith([specFolder, dto.Folder, specName]),
SpecFile = apiFolder.ConcatenateWith([specFolder, $"{specName}{openApiConfig.SpecExtension}"]),
PackageName = file.NpmPackage,
OpenApiVersion = file.Version,
Registry = configManager.Publish.NpmRegistry,
TemplateFolder = new Location(templatesConfig.Folder),
OpenApi = configManager.OpenApi.Map(configManager, specFolder, specName).Folder
};
}
}

View File

@@ -0,0 +1,92 @@
using Core.Dto.Yaml;
using Core.Exceptions;
using Core.SpecConfig;
using Core.Yaml;
namespace Generator.Mappers;
public static class OpenApiYamlMapper
{
public static OpenApiYaml ToModel(this OpenApiYamlDto dto, string loc)
{
ISet<string> models = new HashSet<string>();
if (dto.Components is not null && dto.Components.TryGetValue("schemas", out var component))
{
models = component.Keys.ToHashSet();
}
return new OpenApiYaml(loc)
{
Info = dto.Info,
Openapi = dto.Openapi,
Tags = dto.Tags,
Models = models,
IgnoredModels = new HashSet<string>(),
};
}
public static Dictionary<string, YamlConfig> Map(this SpecConfigDto dto)
{
var result = new Dictionary<string, YamlConfig>();
foreach (var config in dto.Packages)
{
var yaml = new YamlConfig
{
Priority = config.Priority,
ModelSuffix = dto.ModelSuffix,
JavaGroup = dto.JavaGroup,
NugetPackage = config.DotnetPackage,
NpmPackage = config.JavascriptPackage,
KeepModels = config.KeepModels,
Type = ConvertSpecType(config.Type),
PackageTypes = ConvertPackagesTypes(dto.PackageTypes)
};
result.Add(config.Name, yaml);
}
return result;
}
private static PackageTypes ConvertPackagesTypes(Dictionary<string, List<string>> dto)
{
var res = new PackageTypes();
foreach (var d in dto)
{
var language = d.Key.ToLower() switch
{
"dotnet" => Language.Dotnet,
"java" => Language.Java,
"javascript" => Language.Javascript,
_ => throw new ConfigException($"Currently supported languages are dotnet, java and javascript. {d.Key} is not one of them. Fix it or consequences")
};
var generationTypes = d.Value.Select(t => t.ToLower() switch
{
"server" => GenerationType.Server,
"common" => GenerationType.Common,
"client" => GenerationType.Client,
_ => throw new ConfigException($"Currently supported generation types are server, common and client. {t} is not one of them. Fix it or consequences")
}).ToList();
generationTypes.ForEach(gt =>
{
if (!res.TryAdd(language, gt))
res.Add(language, [gt]);
});
}
return res;
}
private static SpecType ConvertSpecType(string type)
{
return type.ToLower() switch
{
"api" => SpecType.Api,
"model" => SpecType.Model,
_ => throw new ConfigException($"Currently supported spec types are api and model. {type} is not one of them. Fix it or consequences")
};
}
}

View File

@@ -0,0 +1,18 @@
using Core;
using Core.Dto;
namespace Generator.Mappers;
public static class PackageDataMapper
{
public static List<PackageData> Map(this List<PackageDataDto> dto)
{
return dto.Select(pdd
=> new PackageData()
{
Id = pdd.Id,
Name = pdd.Name,
Version = pdd.Version
}).ToList();
}
}

View File

@@ -0,0 +1,76 @@
using Core;
using Core.Dto;
using Core.Dto.Settings;
using Core.Settings;
using Generator.DataSource.Settings;
namespace Generator.Mappers;
public static class SettingsMapper
{
public static DefaultArgumentsConfig Map(this DefaultArgumentsConfigDto dto, ArgumentsDto args)
{
var identifier = args.SpecName ?? dto.SpecIdentifier;
return new DefaultArgumentsConfig
{
SpecIdentifier = identifier,
};
}
public static DockerImagesConfig Map(this DockerImagesConfigDto dto)
=> new()
{
JavaImage = dto.MavenImage,
DotnetSdkImage = dto.DotnetSdkImage,
OpenApiGeneratorImage = dto.OpenApiGeneratorImage,
JavascriptImage = dto.JavascriptImage,
};
public static BaseConfig Map(this EnvironmentConfigDto dto)
=> new()
{
Invite = dto.Invite,
LocalRoot = new Location(dto.LocalRoot),
DockerRoot = new Location(dto.DockerRoot),
TemplateFolder = null,
};
public static PublishConfig Map(this PublishConfigDto dto)
=> new()
{
MavenRegistry = dto.MavenRegistry,
NpmRegistry = dto.NpmRegistry,
NugetRegistry = dto.NugetRegistry
};
public static OpenApiConfig Map(this OpenApiConfigDto dto, ConfigManager configManager, string folder, string name)
{
var apiFolder = configManager.GetGeneral().ApiFolder;
var config = new OpenApiConfig
{
Folder = new Location(dto.OutputFolder),
GeneratorConfigFile = new Location(dto.GeneratorConfigFile),
GeneratorIgnoreFile = new Location(dto.GeneratorIgnoreFile),
SpecFile = apiFolder.ConcatenateWith([folder, $"{name}{dto.SpecExtension}"]),
SpecConfig = apiFolder.ConcatenateWith([folder, $"{name}{dto.ConfigIdentifier}{dto.ConfigExtension}"]),
SpecExtension = dto.SpecExtension,
SchemasIdentifier = dto.SchemasIdentifier,
ConfigIdentifier = $"{dto.ConfigIdentifier}{dto.ConfigExtension}",
};
return config;
}
public static GeneralConfig Map(this GeneralConfigDto dto)
=> new()
{
ApiFolder = new Location(dto.ApiFolder),
GenerationFolder = new Location(dto.OutputFolder),
};
}

View File

@@ -0,0 +1,21 @@
using Core;
using Core.Dto.Settings;
using Core.Settings;
namespace Generator.Mappers;
public static class TemplateMapper
{
public static TemplatesConfig Map(this TemplatesConfigDto dto)
=> new()
{
Folder = new Location(dto.Folder),
PlantUml = new Location([dto.Folder, dto.PlantUml]),
DotnetServerGeneratorConfig = new Location(dto.DotnetServerGeneratorConfig),
DotnetClientGeneratorConfig = new Location(dto.DotnetClientGeneratorConfig),
JavaGeneratorConfig = new Location(dto.JavaGeneratorConfig),
ServerIgnore = new Location(dto.ServerIgnore),
ClientIgnore = new Location(dto.ClientIgnore),
};
}