Skip to content

Commit 56aa1f4

Browse files
committed
feat(Source Generators): Added parallel client generation.
1 parent f7decbe commit 56aa1f4

File tree

18,877 files changed

+654100
-603003
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

18,877 files changed

+654100
-603003
lines changed

src/libs/AutoSDK.CLI/Commands/GenerateCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ private static async Task HandleAsync(
128128
};
129129
}
130130

131-
var data = Generation.Data.Prepare((yaml, settings));
131+
var data = Generation.Data.Prepare(((yaml, settings), GlobalSettings: settings));
132132
var files = data.Enums
133133
.SelectMany(x => new []
134134
{

src/libs/AutoSDK.CLI/Commands/HttpCommand.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ private static async Task HandleAsync(
7777
};
7878
var openApiDocument = yaml.GetOpenApiDocument(settings);
7979
var schemas = openApiDocument.GetSchemas(settings);
80-
var operations = openApiDocument.GetOperations(settings, schemas);
80+
var operations = openApiDocument.GetOperations(settings, globalSettings: settings, schemas);
8181

8282
var files = new List<FileWithName>
8383
{

src/libs/AutoSDK.SourceGenerators/AutoSDK.SourceGenerators.props

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,12 @@
9696
<CompilerVisibleItemMetadata Include="AdditionalFiles" MetadataName="AutoSDK_OpenApiSpecification" />
9797
</ItemGroup>
9898

99+
<!-- Expose only those CompilerVisibleProperty items whose name starts with "AutoSDK_" -->
100+
<ItemGroup>
101+
<CompilerVisibleItemMetadata
102+
Include="@(CompilerVisibleProperty -> 'AdditionalFiles')"
103+
Condition="$([System.String]::Copy('%(CompilerVisibleProperty.Identity)').StartsWith('AutoSDK_'))"
104+
MetadataName="%(CompilerVisibleProperty.Identity)" />
105+
</ItemGroup>
106+
99107
</Project>

src/libs/AutoSDK.SourceGenerators/OptionsExtensions.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,20 @@ public static class OptionsExtensions
1212
{
1313
public static Settings GetSettings(
1414
this AnalyzerConfigOptionsProvider options,
15-
string prefix)
15+
string prefix,
16+
AdditionalText? additionalText = null)
1617
{
1718
return new Settings(
1819
TargetFramework: options.GetGlobalOption("TargetFramework", prefix) ??
1920
options.GetGlobalOption("TargetFramework") ??
2021
"netstandard2.0",
21-
Namespace: options.GetGlobalOption(nameof(Settings.Namespace), prefix) ??
22+
Namespace: GetOptionFromAdditionalText(nameof(Settings.Namespace)) ??
23+
options.GetGlobalOption(nameof(Settings.Namespace), prefix) ??
2224
options.GetGlobalOption("PackageId") ??
2325
options.GetGlobalOption("AssemblyName") ??
2426
prefix,
25-
ClassName: options.GetGlobalOption(nameof(Settings.ClassName), prefix) ??
27+
ClassName: GetOptionFromAdditionalText(nameof(Settings.ClassName)) ??
28+
options.GetGlobalOption(nameof(Settings.ClassName), prefix) ??
2629
options.GetGlobalOption("PackageId")?.WithPostfix("Api") ??
2730
options.GetGlobalOption("AssemblyName")?.WithPostfix("Api") ??
2831
"Api",
@@ -72,6 +75,16 @@ public static Settings GetSettings(
7275

7376
GenerateSdk: options.GetBoolGlobalOption(nameof(Settings.GenerateSdk), prefix, defaultValue: true),
7477
FromCli: false);
78+
79+
string? GetOptionFromAdditionalText(string name)
80+
{
81+
if (additionalText == null)
82+
{
83+
return null;
84+
}
85+
86+
return options.GetOption(additionalText, name, prefix: prefix);
87+
}
7588
}
7689

7790
public static bool GetBoolGlobalOption(

src/libs/AutoSDK.SourceGenerators/SdkGenerator.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
3838
.Combine(context.AnalyzerConfigOptionsProvider)
3939
.Where(static pair =>
4040
pair.Right.GetOption(pair.Left, "OpenApiSpecification", prefix: "AutoSDK")?.ToUpperInvariant() == "TRUE")
41-
.Select(static (pair, cancellationToken) => GetContent(pair.Left, cancellationToken))
41+
.Select((pair, cancellationToken) => (
42+
GetContent(pair.Left, cancellationToken),
43+
pair.Right.GetSettings(prefix: "AutoSDK", additionalText: pair.Left)))
4244
.Combine(settings)
4345
.SelectAndReportExceptions(Data.Prepare, context, Id);
4446

src/libs/AutoSDK/Helpers/TraversalTreeHelper.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ public static IReadOnlyList<SchemaContext> GetSchemas(
122122
public static IReadOnlyList<OperationContext> GetOperations(
123123
this OpenApiDocument openApiDocument,
124124
Settings settings,
125+
Settings globalSettings,
125126
IReadOnlyCollection<SchemaContext> filteredSchemas)
126127
{
127128
openApiDocument = openApiDocument ?? throw new ArgumentNullException(nameof(openApiDocument));
@@ -130,6 +131,7 @@ public static IReadOnlyList<OperationContext> GetOperations(
130131
.SelectMany(x => x.Value.Operations
131132
.Select(y => OperationContext.FromOperation(
132133
settings: settings,
134+
globalSettings: globalSettings,
133135
operation: y.Value,
134136
operationPath: x.Key,
135137
operationType: y.Key,

src/libs/AutoSDK/Models/Authorization.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ public record struct Authorization(
1212
string Name,
1313
string Scheme,
1414
Settings Settings,
15+
Settings GlobalSettings,
1516
EquatableArray<OAuthFlow> Flows,
1617
string OpenIdConnectUrl
1718
)
@@ -20,7 +21,8 @@ string OpenIdConnectUrl
2021

2122
public static Authorization FromOpenApiSecurityScheme(
2223
OpenApiSecurityScheme scheme,
23-
Settings settings)
24+
Settings settings,
25+
Settings globalSettings)
2426
{
2527
scheme = scheme ?? throw new ArgumentNullException(nameof(scheme));
2628

@@ -55,6 +57,7 @@ public static Authorization FromOpenApiSecurityScheme(
5557
Name: scheme.Name ?? string.Empty,
5658
Scheme: scheme.Scheme ?? string.Empty,
5759
Settings: settings,
60+
GlobalSettings: globalSettings,
5861
Flows: new []
5962
{
6063
scheme.Flows?.Implicit != null

src/libs/AutoSDK/Models/Client.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ namespace AutoSDK.Models;
44

55
public record struct Client(
66
string Id,
7-
string Namespace,
87
string ClassName,
98
string BaseUrl,
109
ImmutableArray<PropertyData> Clients,
1110
string Summary,
1211
string BaseUrlSummary,
1312
Settings Settings,
13+
Settings GlobalSettings,
1414
ImmutableArray<string> Converters
1515
)
1616
{
17-
public string FileNameWithoutExtension => $"{Namespace}.{ClassName}";
17+
public string FileNameWithoutExtension => $"{Settings.Namespace}.{ClassName}";
1818

19-
public string InterfaceFileNameWithoutExtension => $"{Namespace}.I{ClassName}";
19+
public string InterfaceFileNameWithoutExtension => $"{Settings.Namespace}.I{ClassName}";
2020
}

src/libs/AutoSDK/Models/EndPoint.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ namespace AutoSDK.Models;
88

99
public record struct EndPoint(
1010
string Id,
11-
string Namespace,
1211
string ClassName,
1312
string BaseUrl,
1413
bool Stream,
@@ -24,6 +23,7 @@ public record struct EndPoint(
2423
string Summary,
2524
string BaseUrlSummary,
2625
Settings Settings,
26+
Settings GlobalSettings,
2727
bool IsDeprecated,
2828
string ExperimentalStage,
2929
TypeData RequestType
@@ -33,23 +33,23 @@ TypeData RequestType
3333
public string NotAsyncMethodName => Id.ToPropertyName();
3434
public bool IsMultipartFormData => RequestMediaType == "multipart/form-data";
3535

36-
public string FileNameWithoutExtension => $"{Namespace}.{ClassName}.{Id.ToPropertyName()}";
36+
public string FileNameWithoutExtension => $"{Settings.Namespace}.{ClassName}.{Id.ToPropertyName()}";
3737

38-
public string InterfaceFileNameWithoutExtension => $"{Namespace}.I{ClassName}.{Id.ToPropertyName()}";
38+
public string InterfaceFileNameWithoutExtension => $"{Settings.Namespace}.I{ClassName}.{Id.ToPropertyName()}";
3939

4040
public static EndPoint FromSchema(OperationContext operation)
4141
{
4242
operation = operation ?? throw new ArgumentNullException(nameof(operation));
4343

4444
var authorizations = operation.Operation.Security
4545
.SelectMany(x => x)
46-
.Select(x => Authorization.FromOpenApiSecurityScheme(x.Key, operation.Settings))
46+
.Select(x => Authorization.FromOpenApiSecurityScheme(x.Key, operation.Settings, operation.GlobalSettings))
4747
.ToImmutableArray();
4848
if (authorizations.Length == 0)
4949
{
5050
authorizations = operation.GlobalSecurityRequirements
5151
.SelectMany(x => x)
52-
.Select(x => Authorization.FromOpenApiSecurityScheme(x.Key, operation.Settings))
52+
.Select(x => Authorization.FromOpenApiSecurityScheme(x.Key, operation.Settings, operation.GlobalSettings))
5353
.ToImmutableArray();
5454
}
5555

@@ -138,7 +138,6 @@ public static EndPoint FromSchema(OperationContext operation)
138138
var firstTag = (operation.Operation.Tags ?? []).FirstOrDefault();
139139
var endPoint = new EndPoint(
140140
Id: operation.MethodName,
141-
Namespace: operation.Settings.Namespace,
142141
ClassName: operation.Settings.GroupByTags && firstTag != null
143142
? ClientNameGenerator.Generate(operation.Settings, firstTag)
144143
: operation.Settings.ClassName.Replace(".", string.Empty),
@@ -163,6 +162,7 @@ public static EndPoint FromSchema(OperationContext operation)
163162
Summary: operation.Operation.GetXmlDocumentationSummary(),
164163
BaseUrlSummary: string.Empty,
165164
Settings: operation.Settings,
165+
GlobalSettings: operation.GlobalSettings,
166166
IsDeprecated: operation.Operation.Deprecated,
167167
ExperimentalStage: operation.Operation.GetExperimentalStage(),
168168
RequestType: requestType ?? TypeData.Default);

src/libs/AutoSDK/Models/OperationContext.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ namespace AutoSDK.Models;
55

66
public class OperationContext(
77
Settings settings,
8+
Settings globalSettings,
89
OpenApiOperation operation,
910
string operationPath,
1011
OperationType operationType)
1112
{
1213
public Settings Settings { get; set; } = settings;
14+
public Settings GlobalSettings { get; set; } = globalSettings;
1315
public OpenApiOperation Operation { get; set; } = operation;
1416
public string OperationPath { get; set; } = operationPath;
1517
public OperationType OperationType { get; set; } = operationType;
@@ -23,6 +25,7 @@ public class OperationContext(
2325

2426
public static OperationContext FromOperation(
2527
Settings settings,
28+
Settings globalSettings,
2629
OpenApiOperation operation,
2730
string operationPath,
2831
OperationType operationType,
@@ -31,7 +34,7 @@ public static OperationContext FromOperation(
3134
{
3235
operation = operation ?? throw new ArgumentNullException(nameof(operation));
3336

34-
var context = new OperationContext(settings, operation, operationPath, operationType)
37+
var context = new OperationContext(settings, globalSettings, operation, operationPath, operationType)
3538
{
3639
Schemas = filteredSchemas
3740
.Where(schema => schema.Operation == operation)

0 commit comments

Comments
 (0)