Files
csharp/src/LibKubernetesGenerator/KubernetesClientSourceGenerator.cs
Boshi Lian 5de1c25cf1 migrate to record (#1665)
* migrate to record

* chore: update project files and clean up unused references

* refactor: convert classes to records and simplify constructors for IntOrString, ResourceQuantity, and V1Patch

* fix: define IsExternalInit to resolve CS0518 error in IntOrString

* refactor: change IntOrString and ResourceQuantity from records to structs, update implicit conversions, and simplify null checks

* refactor: add JsonPropertyName attribute to Value property in IntOrString struct

* refactor: simplify V1Patch constructor and improve argument validation

* refactor: remove unnecessary CultureInfo parameter in ToInt method

* Update src/KubernetesClient/Models/ResourceQuantity.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/KubernetesClient/Models/IntOrString.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Revert "Update src/KubernetesClient/Models/ResourceQuantity.cs"

This reverts commit 62b20a691554659e28d419067220dc1a0620133b.

* refactor: remove commented-out formatting check and simplify build command

* refactor: remove IValidate.cs from project references in Aot and Classic

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-22 14:20:13 -07:00

89 lines
2.8 KiB
C#

using Autofac;
using Microsoft.CodeAnalysis;
using NSwag;
namespace LibKubernetesGenerator
{
[Generator]
public class KubernetesClientSourceGenerator : IIncrementalGenerator
{
private static (OpenApiDocument, IContainer) BuildContainer()
{
var swagger = OpenApiDocument.FromJsonAsync(EmbedResource.GetResource("swagger.json")).GetAwaiter().GetResult();
var container = BuildContainer(swagger);
return (swagger, container);
}
private static IContainer BuildContainer(OpenApiDocument swagger)
{
var builder = new ContainerBuilder();
builder.RegisterType<ClassNameHelper>()
.WithParameter(new NamedParameter(nameof(swagger), swagger))
.AsSelf()
.AsImplementedInterfaces()
;
builder.RegisterType<StringHelpers>()
.AsImplementedInterfaces()
;
builder.RegisterType<MetaHelper>()
.AsImplementedInterfaces()
;
builder.RegisterType<PluralHelper>()
.WithParameter(new TypedParameter(typeof(OpenApiDocument), swagger))
.AsImplementedInterfaces()
;
builder.RegisterType<GeneralNameHelper>()
.AsSelf()
.AsImplementedInterfaces()
;
builder.RegisterType<TypeHelper>()
.AsSelf()
.AsImplementedInterfaces()
;
builder.RegisterType<ParamHelper>()
.AsImplementedInterfaces()
;
builder.RegisterType<UtilHelper>()
.AsImplementedInterfaces()
;
builder.RegisterType<ScriptObjectFactory>()
;
builder.RegisterType<SourceGenerationContextGenerator>();
builder.RegisterType<ModelGenerator>();
builder.RegisterType<ApiGenerator>();
builder.RegisterType<ClientSetGenerator>();
builder.RegisterType<VersionGenerator>();
return builder.Build();
}
public void Initialize(IncrementalGeneratorInitializationContext generatorContext)
{
#if GENERATE_BASIC
generatorContext.RegisterPostInitializationOutput(ctx =>
{
var (swagger, container) = BuildContainer();
container.Resolve<VersionGenerator>().Generate(swagger, ctx);
container.Resolve<ModelGenerator>().Generate(swagger, ctx);
container.Resolve<SourceGenerationContextGenerator>().Generate(swagger, ctx);
container.Resolve<ApiGenerator>().Generate(swagger, ctx);
container.Resolve<ClientSetGenerator>().Generate(swagger, ctx);
});
#endif
}
}
}