Skip to content

Commit

Permalink
imp - Used IIncrementalGenerator
Browse files Browse the repository at this point in the history
---

There was a breaking change between Microsoft.CodeAnalysis.Analyzers 3.3.4 and 3.11.0 that necessitated the usage of IIncrementalGenerator according to https://github.com/dotnet/roslyn/blob/main/docs/features/source-generators.cookbook.md, https://github.com/dotnet/roslyn/blob/main/docs/features/incremental-generators.md, and dotnet/roslyn-analyzers#7419. As a result, we've made necessary changes to achieve the same result, cleaning up clutter in the process.

---

Type: imp
Breaking: False
Doc Required: False
Backport Required: False
Part: 1/1
  • Loading branch information
AptiviCEO committed Oct 6, 2024
1 parent 8f753a7 commit ca6ac8e
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 50 deletions.
33 changes: 20 additions & 13 deletions Terminaux.ColorDataGen/ColorPropGen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
//

using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.IO;
Expand All @@ -28,12 +29,12 @@
namespace Terminaux.ColorDataGen
{
[Generator]
public class ColorPropGen : ISourceGenerator
public class ColorPropGen : IIncrementalGenerator
{
private string colorContent = "";
private string webSafeColorsContent = "";

public void Execute(GeneratorExecutionContext context)
public void Initialize(IncrementalGeneratorInitializationContext context)
{
// Get the color data content
var asm = typeof(ColorPropGen).Assembly;
Expand All @@ -54,10 +55,7 @@ public void Execute(GeneratorExecutionContext context)
PopulateWebSafeColorData(context);
}

public void Initialize(GeneratorInitializationContext context)
{ }

private void PopulateColorData(GeneratorExecutionContext context)
private void PopulateColorData(IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -149,10 +147,13 @@ public static partial ConsoleColorData[] GetColorData()

// Add the source code to the compilation
builder.AppendLine(footer);
context.AddSource("ConsoleColorData.g.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("ConsoleColorData.g.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}

private void PopulateColorEnums(GeneratorExecutionContext context)
private void PopulateColorEnums(IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -203,11 +204,11 @@ public enum ConsoleColors
{
string colorHex = colorData.HexString;
string colorName = colorData.Name;
var colorRgb = colorData.RGB;
var (r, g, b) = colorData.RGB;
builder.AppendLine(
$$"""
/// <summary>
/// [{{colorHex}}] Represents the {{colorName}} color with the RGB value of {{colorRgb.r}};{{colorRgb.g}};{{colorRgb.b}}
/// [{{colorHex}}] Represents the {{colorName}} color with the RGB value of {{r}};{{g}};{{b}}
/// </summary>
{{colorName}},
"""
Expand All @@ -216,10 +217,13 @@ public enum ConsoleColors

// Add the source code to the compilation
builder.AppendLine(footer);
context.AddSource("ConsoleColors.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("ConsoleColors.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}

private void PopulateWebSafeColorData(GeneratorExecutionContext context)
private void PopulateWebSafeColorData(IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -347,7 +351,10 @@ public static string[] GetColorNames()

// Add the source code to the compilation
builder.AppendLine(footer);
context.AddSource("WebSafeColors.g.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("WebSafeColors.g.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}
}
}
29 changes: 18 additions & 11 deletions Terminaux.NerdFontGen/NerdFontListGen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
//

using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
using Newtonsoft.Json;
using System.IO;
using System.Text;
Expand All @@ -26,9 +27,9 @@
namespace Terminaux.NerdFontGen
{
[Generator]
public class NerdFontListGen : ISourceGenerator
public class NerdFontListGen : IIncrementalGenerator
{
public void Execute(GeneratorExecutionContext context)
public void Initialize(IncrementalGeneratorInitializationContext context)
{
// Get the color data content
var asm = typeof(NerdFontListGen).Assembly;
Expand All @@ -45,10 +46,7 @@ public void Execute(GeneratorExecutionContext context)
NerdFontsDictionaryGenerator(list, context);
}

public void Initialize(GeneratorInitializationContext context)
{ }

private void NerdFontsEnumGenerator(NerdFontInfo[] list, GeneratorExecutionContext context)
private void NerdFontsEnumGenerator(NerdFontInfo[] list, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -108,10 +106,13 @@ public enum NerdFontsTypes

// Add the footer
builder.AppendLine(footer);
context.AddSource("NerdFontsTypes.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("NerdFontsTypes.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}

private void NerdFontsClassGenerator(NerdFontInfo[] list, GeneratorExecutionContext context)
private void NerdFontsClassGenerator(NerdFontInfo[] list, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -190,11 +191,14 @@ public static class {{name}}Icons

// Add the footer
builder.AppendLine(footer);
context.AddSource($"{name}Icons.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource($"{name}Icons.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}
}

private void NerdFontsDictionaryGenerator(NerdFontInfo[] list, GeneratorExecutionContext context)
private void NerdFontsDictionaryGenerator(NerdFontInfo[] list, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -281,7 +285,10 @@ public static partial class NerdFontsTools

// Add the footer
builder.AppendLine(footer);
context.AddSource($"NerdFontsTools.g.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("NerdFontsTools.g.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}
}
}
50 changes: 33 additions & 17 deletions Terminaux.SequenceTypesGen/SequenceTypeGen.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
//

using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
Expand All @@ -28,9 +29,9 @@
namespace Terminaux.SequenceTypesGen
{
[Generator]
public class SequenceTypeGen : ISourceGenerator
public class SequenceTypeGen : IIncrementalGenerator
{
public void Execute(GeneratorExecutionContext context)
public void Initialize(IncrementalGeneratorInitializationContext context)
{
// Get the color data content
var asm = typeof(SequenceTypeGen).Assembly;
Expand All @@ -50,10 +51,7 @@ public void Execute(GeneratorExecutionContext context)
SequencesToolsGenerator(list, context);
}

public void Initialize(GeneratorInitializationContext context)
{ }

private void SequencesGeneralEnumGenerator(SequenceTypeInfo[] list, GeneratorExecutionContext context)
private void SequencesGeneralEnumGenerator(SequenceTypeInfo[] list, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -126,10 +124,13 @@ public enum VtSequenceType
}
""";
builder.AppendLine(footer);
context.AddSource($"VtSequenceType.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("VtSequenceType.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}

private void SequencesGeneralClassGenerator(SequenceTypeInfo[] list, GeneratorExecutionContext context)
private void SequencesGeneralClassGenerator(SequenceTypeInfo[] list, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -244,10 +245,13 @@ public static class VtSequenceRegexes

// Add the footer
builder.AppendLine(footer);
context.AddSource($"VtSequenceRegexes.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("VtSequenceRegexes.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}

private void SequencesEnumGenerator(SequenceTypeInfo[] list, GeneratorExecutionContext context)
private void SequencesEnumGenerator(SequenceTypeInfo[] list, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -315,10 +319,13 @@ public enum VtSequenceSpecificTypes

// Add the footer
builder.AppendLine(footer);
context.AddSource($"VtSequenceSpecificTypes.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("VtSequenceSpecificTypes.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}

private void SequencesClassGenerator(SequenceTypeInfo[] list, GeneratorExecutionContext context)
private void SequencesClassGenerator(SequenceTypeInfo[] list, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -455,11 +462,14 @@ public static class {{typeName}}Sequences

// Add the footer
builder.AppendLine(footer);
context.AddSource($"{typeName}Sequences.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource($"{typeName}Sequences.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}
}

private void SequencesDictionaryGenerator(SequenceTypeInfo[] list, GeneratorExecutionContext context)
private void SequencesDictionaryGenerator(SequenceTypeInfo[] list, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -597,10 +607,13 @@ private static string DeterministicExecution(Delegate generator, params object[]

// Add the footer
builder.AppendLine(footer);
context.AddSource($"VtSequenceBuilderTools.g.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("VtSequenceBuilderTools.g.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}

private void SequencesToolsGenerator(SequenceTypeInfo[] list, GeneratorExecutionContext context)
private void SequencesToolsGenerator(SequenceTypeInfo[] list, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -675,7 +688,10 @@ public static partial Regex GetSequenceFilterRegexFromType(VtSequenceType type)

// Add the footer
builder.AppendLine(footer);
context.AddSource($"VtSequenceTools.g.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("VtSequenceTools.g.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}
}
}
22 changes: 13 additions & 9 deletions Terminaux.TermInfoGen/CapabilityGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

using Humanizer;
using Microsoft.CodeAnalysis;
using Microsoft.CodeAnalysis.Text;
using System;
using System.Collections.Generic;
using System.IO;
Expand All @@ -27,11 +28,11 @@
namespace Terminaux.TermInfoGen
{
[Generator]
public class CapabilityGenerator : ISourceGenerator
public class CapabilityGenerator : IIncrementalGenerator
{
private string capabilityContent = "";

public void Execute(GeneratorExecutionContext context)
public void Initialize(IncrementalGeneratorInitializationContext context)
{
// Get the color data content
var asm = typeof(CapabilityGenerator).Assembly;
Expand All @@ -47,10 +48,7 @@ public void Execute(GeneratorExecutionContext context)
GenerateDescriptions(capabilities, context);
}

public void Initialize(GeneratorInitializationContext context)
{ }

private void GenerateCapabilities(Capabilities capabilities, GeneratorExecutionContext context)
private void GenerateCapabilities(Capabilities capabilities, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -167,10 +165,13 @@ public enum String

// End the file
builder.AppendLine(footer);
context.AddSource($"TermInfoCaps.g.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("TermInfoCaps.g.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}

private void GenerateDescriptions(Capabilities capabilities, GeneratorExecutionContext context)
private void GenerateDescriptions(Capabilities capabilities, IncrementalGeneratorInitializationContext context)
{
string header =
$$"""
Expand Down Expand Up @@ -258,7 +259,10 @@ public sealed partial class TermInfoDesc

// End the file
builder.AppendLine(footer);
context.AddSource($"TermInfoDesc.g.cs", builder.ToString());
context.RegisterPostInitializationOutput(ctx =>
{
ctx.AddSource("TermInfoDesc.g.cs", SourceText.From(builder.ToString(), Encoding.UTF8));
});
}

private Capabilities ReadCapabilities()
Expand Down

0 comments on commit ca6ac8e

Please sign in to comment.