From de9443a523b4df7e9990bcbb2c6c4ceb53384539 Mon Sep 17 00:00:00 2001 From: glopesdev Date: Mon, 21 Sep 2026 10:25:29 +0100 Subject: [PATCH] Update Harp.Generators to 0.8.0 Generated interfaces change with the new version. The C# target emits an auto-generated header, clears its nullable warnings, and writes a boolean default as true or false. Reading ios.yml now also resolves YAML merge keys. --- .../Generate/GenerateCSharpInterfaceCommand.cs | 2 +- .../Generate/GenerateFirmwareCommand.cs | 4 ++-- .../Generate/GeneratePythonInterfaceCommand.cs | 2 +- src/Harp.Toolkit/Generate/GeneratorHelper.cs | 14 -------------- src/Harp.Toolkit/Harp.Toolkit.csproj | 2 +- src/Harp.Toolkit/Verify/VerifyCommand.cs | 3 +-- 6 files changed, 6 insertions(+), 21 deletions(-) diff --git a/src/Harp.Toolkit/Generate/GenerateCSharpInterfaceCommand.cs b/src/Harp.Toolkit/Generate/GenerateCSharpInterfaceCommand.cs index 67d035b..5e7ca34 100644 --- a/src/Harp.Toolkit/Generate/GenerateCSharpInterfaceCommand.cs +++ b/src/Harp.Toolkit/Generate/GenerateCSharpInterfaceCommand.cs @@ -25,7 +25,7 @@ public GenerateCSharpInterfaceCommand() var metadataPath = parseResult.GetRequiredValue(metadataPathArgument); var ns = parseResult.GetValue(namespaceOption); - var deviceMetadata = GeneratorHelper.ReadDeviceMetadata(metadataPath.FullName); + var deviceMetadata = DeviceMetadata.Load(metadataPath.FullName); var generator = new InterfaceGenerator(deviceMetadata, ns ?? $"Harp.{deviceMetadata.Device}"); var implementation = generator.GenerateImplementation(); if (GeneratorHelper.AssertNoGeneratorErrors(generator.Errors)) diff --git a/src/Harp.Toolkit/Generate/GenerateFirmwareCommand.cs b/src/Harp.Toolkit/Generate/GenerateFirmwareCommand.cs index c3b70c7..2c8d064 100644 --- a/src/Harp.Toolkit/Generate/GenerateFirmwareCommand.cs +++ b/src/Harp.Toolkit/Generate/GenerateFirmwareCommand.cs @@ -29,8 +29,8 @@ public GenerateFirmwareCommand() var iosMetadataFileName = parseResult.GetRequiredValue(iosMetadataPathOption).FullName; var generateImplementation = parseResult.GetValue(generateImplementationOption); - var deviceMetadata = GeneratorHelper.ReadDeviceMetadata(registerMetadataFileName); - var portPinMetadata = GeneratorHelper.ReadPortPinMetadata(iosMetadataFileName); + var deviceMetadata = DeviceMetadata.Load(registerMetadataFileName); + var portPinMetadata = PortPinMetadata.Load(iosMetadataFileName); var generator = new FirmwareGenerator(deviceMetadata, portPinMetadata); var headers = generator.GenerateHeaders(); var implementation = generateImplementation ? generator.GenerateImplementation() : default; diff --git a/src/Harp.Toolkit/Generate/GeneratePythonInterfaceCommand.cs b/src/Harp.Toolkit/Generate/GeneratePythonInterfaceCommand.cs index d556b2b..fbe420a 100644 --- a/src/Harp.Toolkit/Generate/GeneratePythonInterfaceCommand.cs +++ b/src/Harp.Toolkit/Generate/GeneratePythonInterfaceCommand.cs @@ -19,7 +19,7 @@ public GeneratePythonInterfaceCommand() var outputPath = parseResult.GetRequiredValue(outputPathOption); var metadataPath = parseResult.GetRequiredValue(metadataPathArgument); - var deviceMetadata = GeneratorHelper.ReadDeviceMetadata(metadataPath.FullName); + var deviceMetadata = DeviceMetadata.Load(metadataPath.FullName); var generator = new PythonGenerator(deviceMetadata); var implementation = generator.GenerateImplementation(); if (GeneratorHelper.AssertNoGeneratorErrors(generator.Errors)) diff --git a/src/Harp.Toolkit/Generate/GeneratorHelper.cs b/src/Harp.Toolkit/Generate/GeneratorHelper.cs index a4db8b6..9401dae 100644 --- a/src/Harp.Toolkit/Generate/GeneratorHelper.cs +++ b/src/Harp.Toolkit/Generate/GeneratorHelper.cs @@ -1,25 +1,11 @@ using System.CodeDom.Compiler; using System.Text; using Harp.Generators; -using YamlDotNet.Core; namespace Harp.Toolkit.Generate; public static class GeneratorHelper { - public static DeviceMetadata ReadDeviceMetadata(string path) - { - using var reader = new StreamReader(path); - var parser = new MergingParser(new Parser(reader)); - return MetadataDeserializer.Instance.Deserialize(parser); - } - - public static Dictionary ReadPortPinMetadata(string path) - { - using var reader = new StreamReader(path); - return MetadataDeserializer.Instance.Deserialize>(reader); - } - public static IEnumerable> GetPortPinsOfType(IDictionary portPins) where T : PortPinInfo { return from item in portPins diff --git a/src/Harp.Toolkit/Harp.Toolkit.csproj b/src/Harp.Toolkit/Harp.Toolkit.csproj index 5218a3c..0f9aeab 100644 --- a/src/Harp.Toolkit/Harp.Toolkit.csproj +++ b/src/Harp.Toolkit/Harp.Toolkit.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/Harp.Toolkit/Verify/VerifyCommand.cs b/src/Harp.Toolkit/Verify/VerifyCommand.cs index d236e43..a123c44 100644 --- a/src/Harp.Toolkit/Verify/VerifyCommand.cs +++ b/src/Harp.Toolkit/Verify/VerifyCommand.cs @@ -3,7 +3,6 @@ using Spectre.Console; using Harp.Generators; using Harp.Toolkit.Verify.Suites; -using Harp.Toolkit.Generate; namespace Harp.Toolkit.Verify; public class VerifyCommand : Command @@ -93,7 +92,7 @@ static async Task RunVerification(string portName, FileInfo? reportFile, bo if (metadataPath is not null) { AnsiConsole.Markup($"Loading device metadata from [bold]{metadataPath.FullName}[/]..."); - deviceMetadata = GeneratorHelper.ReadDeviceMetadata(metadataPath.FullName); + deviceMetadata = DeviceMetadata.Load(metadataPath.FullName); deviceRawYaml = await File.ReadAllTextAsync(metadataPath.FullName, cancellationToken); AnsiConsole.MarkupLine($" [green]Done![/] ({deviceMetadata.Registers.Count} registers)"); }