From bbd3445b2c2cafe333272a8996ae3e3d8c8c01d7 Mon Sep 17 00:00:00 2001 From: Robin Salkeld Date: Sun, 2 Nov 2025 20:59:37 -0800 Subject: [PATCH 1/2] IDLPlugin --- .../smithy/build/plugins/IDLPlugin.java | 43 +++++++++++++++++++ ...ware.amazon.smithy.build.SmithyBuildPlugin | 1 + 2 files changed, 44 insertions(+) create mode 100644 smithy-build/src/main/java/software/amazon/smithy/build/plugins/IDLPlugin.java diff --git a/smithy-build/src/main/java/software/amazon/smithy/build/plugins/IDLPlugin.java b/smithy-build/src/main/java/software/amazon/smithy/build/plugins/IDLPlugin.java new file mode 100644 index 00000000000..556f7cd5cfb --- /dev/null +++ b/smithy-build/src/main/java/software/amazon/smithy/build/plugins/IDLPlugin.java @@ -0,0 +1,43 @@ +package software.amazon.smithy.build.plugins; + +import software.amazon.smithy.build.PluginContext; +import software.amazon.smithy.build.SmithyBuildPlugin; +import software.amazon.smithy.model.shapes.SmithyIdlModelSerializer; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Map; + +public class IDLPlugin implements SmithyBuildPlugin { + private static final String NAME = "idl"; + + @Override + public String getName() { + return NAME; + } + + @Override + public void execute(PluginContext context) { + boolean includePrelude = context.getSettings().getBooleanMemberOrDefault("includePreludeShapes"); + SmithyIdlModelSerializer.Builder builder = SmithyIdlModelSerializer.builder() + .basePath(context.getFileManifest().getBaseDir()); + if (includePrelude) { + builder.serializePrelude(); + } + Map serialized = builder.build().serialize(context.getModel()); + try { + Files.createDirectories(context.getFileManifest().getBaseDir()); + for (Map.Entry entry : serialized.entrySet()) { + context.getFileManifest().writeFile(entry.getKey(), entry.getValue()); + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + @Override + public boolean requiresValidModel() { + return false; + } +} diff --git a/smithy-build/src/main/resources/META-INF/services/software.amazon.smithy.build.SmithyBuildPlugin b/smithy-build/src/main/resources/META-INF/services/software.amazon.smithy.build.SmithyBuildPlugin index 877981b575f..abd745c0a44 100644 --- a/smithy-build/src/main/resources/META-INF/services/software.amazon.smithy.build.SmithyBuildPlugin +++ b/smithy-build/src/main/resources/META-INF/services/software.amazon.smithy.build.SmithyBuildPlugin @@ -3,3 +3,4 @@ software.amazon.smithy.build.plugins.ModelPlugin software.amazon.smithy.build.plugins.SourcesPlugin software.amazon.smithy.build.plugins.NullabilityReportPlugin software.amazon.smithy.build.plugins.RunPlugin +software.amazon.smithy.build.plugins.IDLPlugin From ddefa8d3a86ab7ab02502356dfd61017da3fa761 Mon Sep 17 00:00:00 2001 From: Robin Salkeld Date: Sun, 2 Nov 2025 21:14:10 -0800 Subject: [PATCH 2/2] Spotless --- .../amazon/smithy/build/plugins/IDLPlugin.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/smithy-build/src/main/java/software/amazon/smithy/build/plugins/IDLPlugin.java b/smithy-build/src/main/java/software/amazon/smithy/build/plugins/IDLPlugin.java index 556f7cd5cfb..195bd0041b4 100644 --- a/smithy-build/src/main/java/software/amazon/smithy/build/plugins/IDLPlugin.java +++ b/smithy-build/src/main/java/software/amazon/smithy/build/plugins/IDLPlugin.java @@ -1,13 +1,16 @@ +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * SPDX-License-Identifier: Apache-2.0 + */ package software.amazon.smithy.build.plugins; -import software.amazon.smithy.build.PluginContext; -import software.amazon.smithy.build.SmithyBuildPlugin; -import software.amazon.smithy.model.shapes.SmithyIdlModelSerializer; - import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Map; +import software.amazon.smithy.build.PluginContext; +import software.amazon.smithy.build.SmithyBuildPlugin; +import software.amazon.smithy.model.shapes.SmithyIdlModelSerializer; public class IDLPlugin implements SmithyBuildPlugin { private static final String NAME = "idl"; @@ -21,7 +24,7 @@ public String getName() { public void execute(PluginContext context) { boolean includePrelude = context.getSettings().getBooleanMemberOrDefault("includePreludeShapes"); SmithyIdlModelSerializer.Builder builder = SmithyIdlModelSerializer.builder() - .basePath(context.getFileManifest().getBaseDir()); + .basePath(context.getFileManifest().getBaseDir()); if (includePrelude) { builder.serializePrelude(); }