public static CompilationUnitSyntax GeneratePackageApiMetadata(string ns, SourceFileContext ctx, IEnumerable <FileDescriptor> packageFileDescriptors) { var namespaceDeclaration = Namespace(ns); using (ctx.InNamespace(namespaceDeclaration)) { var descriptorClass = GenerateClass(ns, ctx, packageFileDescriptors); namespaceDeclaration = namespaceDeclaration.AddMembers(descriptorClass); } return(ctx.CreateCompilationUnit(namespaceDeclaration)); }
public static CompilationUnitSyntax GenerateExtensions(SourceFileContext ctx, List <ServiceDetails> packageServiceDetails) { var ns = typeof(IServiceCollection).Namespace; var namespaceDeclaration = Namespace(ns); using (ctx.InNamespace(namespaceDeclaration)) { var cls = Class(Public | Static | Partial, Typ.Manual(ns, ClassName)) .WithXmlDoc(XmlDoc.Summary("Static class to provide extension methods to configure API clients.")); cls = cls.AddMembers(packageServiceDetails.Select(m => GenerateMethod(ctx, m)).ToArray()); namespaceDeclaration = namespaceDeclaration.AddMembers(cls); } return(ctx.CreateCompilationUnit(namespaceDeclaration)); }
public static CompilationUnitSyntax Generate(SourceFileContext ctx, ServiceDetails svc, HashSet <Typ> seenPaginatedResponseTyps) { var ns = Namespace(svc.Namespace); using (ctx.InNamespace(ns)) { var settingsClass = ServiceSettingsCodeGenerator.Generate(ctx, svc); var builderClass = ServiceBuilderCodeGenerator.Generate(ctx, svc); var abstractClientClass = ServiceAbstractClientClassCodeGenerator.Generate(ctx, svc); var implClientClass = ServiceImplClientClassGenerator.Generate(ctx, svc); ns = ns.AddMembers(settingsClass, builderClass, abstractClientClass, implClientClass); ns = ns.AddMembers(PaginatedPartialClasses(ctx, svc, seenPaginatedResponseTyps).ToArray()); ns = ns.AddMembers(LroPartialClasses(ctx, svc).ToArray()); } return(ctx.CreateCompilationUnit(ns)); }