Skip to content

Commit 1b85141

Browse files
committed
feat: Now need to mark all SourceGenerator AdditionalFiles with AutoSDK_OpenApiSpecification = true explicitly.
1 parent dc9cdc0 commit 1b85141

File tree

4 files changed

+15
-8
lines changed

4 files changed

+15
-8
lines changed

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,8 @@ dotnet add package AutoSDK.SourceGenerators
4343
```
4444
- Add the following optional settings to your csproj file to customize generation. You can check all settings [here](https://github.com/tryAGI/AutoSDK/blob/main/src/libs/AutoSDK.SourceGenerators/AutoSDK.SourceGenerators.props):
4545
```xml
46-
<!-- This generator automatically detects all .yaml files in the project directory and adds them to the generation -->
47-
<!-- If your yaml file is not in the project directory, you can specify it manually -->
4846
<ItemGroup Label="AutoSDK">
49-
<AdditionalFiles Include="$(MSBuildThisFileDirectory)../../../docs/openapi.yaml" />
47+
<AdditionalFiles Include="$(MSBuildThisFileDirectory)../../../docs/openapi.yaml" AutoSDK_OpenApiSpecification="true" />
5048
</ItemGroup>
5149

5250
<!-- All settings optional -->

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@
8989
</ItemGroup>
9090

9191
<ItemGroup>
92-
<AdditionalFiles Include="**\*.yaml" />
92+
<CompilerVisibleItemMetadata Include="AdditionalFiles" MetadataName="AutoSDK_OpenApiSpecification" />
9393
</ItemGroup>
9494

9595
</Project>

src/libs/AutoSDK.SourceGenerators/SdkGenerator.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,10 @@ public void Initialize(IncrementalGeneratorInitializationContext context)
3636
.AddSource(context);
3737

3838
var data = context.AdditionalTextsProvider
39-
.Where(static text => text.Path.EndsWith(".yaml", StringComparison.InvariantCultureIgnoreCase) ||
40-
text.Path.EndsWith(".json", StringComparison.InvariantCultureIgnoreCase))
41-
.Select(static (text, cancellationToken) => GetContent(text, cancellationToken))
39+
.Combine(context.AnalyzerConfigOptionsProvider)
40+
.Where(static pair =>
41+
pair.Right.GetOption(pair.Left, "OpenApiSpecification", prefix: "AutoSDK")?.ToUpperInvariant() == "TRUE")
42+
.Select(static (pair, cancellationToken) => GetContent(pair.Left, cancellationToken))
4243
.Combine(settings)
4344
.SelectAndReportExceptions(Data.Prepare, context, Id);
4445

src/tests/AutoSDK.SnapshotTests/Tests.Helpers.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,14 @@ public SourceGenerationContext(global::System.Text.Json.JsonSerializerOptions op
8585
}
8686
"));
8787
}
88+
89+
var additionalTextOptions = new Dictionary<string, Dictionary<string, string>>();
90+
foreach (var additionalText in additionalTexts)
91+
{
92+
var options = new Dictionary<string, string>();
93+
options.TryAdd("build_metadata.AdditionalFiles.AutoSDK_OpenApiSpecification", "true");
94+
additionalTextOptions.Add(additionalText.Path, options);
95+
}
8896

8997
var compilation = (Compilation)CSharpCompilation.Create(
9098
assemblyName: "Tests",
@@ -98,7 +106,7 @@ public SourceGenerationContext(global::System.Text.Json.JsonSerializerOptions op
98106
.Select(GeneratorExtensions.AsSourceGenerator)
99107
.ToArray())
100108
.AddAdditionalTexts([..additionalTexts])
101-
.WithUpdatedAnalyzerConfigOptions(new DictionaryAnalyzerConfigOptionsProvider(globalOptions))
109+
.WithUpdatedAnalyzerConfigOptions(new DictionaryAnalyzerConfigOptionsProvider(globalOptions, additionalTextOptions: additionalTextOptions))
102110
.RunGeneratorsAndUpdateCompilation(compilation, out compilation, out _, cancellationToken);
103111
var diagnostics = compilation.GetDiagnostics(cancellationToken)
104112
.Where(x => x.Id != "CS0618")

0 commit comments

Comments
 (0)