* 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>
89 lines
2.8 KiB
C#
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
|
|
|
|
}
|
|
}
|
|
}
|