2021-10-14 06:55:19 -07:00
|
|
|
using System.IO;
|
|
|
|
|
using NSwag;
|
|
|
|
|
using Nustache.Core;
|
|
|
|
|
|
|
|
|
|
namespace KubernetesGenerator
|
|
|
|
|
{
|
2021-10-24 08:14:22 -07:00
|
|
|
internal class ModelGenerator
|
2021-10-14 06:55:19 -07:00
|
|
|
{
|
|
|
|
|
private readonly ClassNameHelper classNameHelper;
|
|
|
|
|
|
|
|
|
|
public ModelGenerator(ClassNameHelper classNameHelper)
|
|
|
|
|
{
|
|
|
|
|
this.classNameHelper = classNameHelper;
|
|
|
|
|
}
|
|
|
|
|
|
2021-10-20 06:53:59 -07:00
|
|
|
public void Generate(OpenApiDocument swaggercooked, string outputDirectory)
|
2021-10-14 06:55:19 -07:00
|
|
|
{
|
|
|
|
|
Directory.CreateDirectory(Path.Combine(outputDirectory, "Models"));
|
|
|
|
|
|
|
|
|
|
foreach (var (_, def) in swaggercooked.Definitions)
|
|
|
|
|
{
|
|
|
|
|
var clz = classNameHelper.GetClassNameForSchemaDefinition(def);
|
2021-10-24 08:14:22 -07:00
|
|
|
Render.FileToFile(
|
|
|
|
|
Path.Combine("templates", "Model.cs.template"),
|
2021-10-14 06:55:19 -07:00
|
|
|
new { clz, def, properties = def.Properties.Values },
|
|
|
|
|
Path.Combine(outputDirectory, "Models", $"{clz}.cs"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|