From f7ec51f3b99d78d85d896ccb459efca7cfb0a7ed Mon Sep 17 00:00:00 2001 From: Brandon Dahler Date: Wed, 5 Apr 2023 21:04:19 -0400 Subject: [PATCH] Correclty bind extension to tasks (#72) Configures the tasks to have their first configuration action to be copying the value from the extension to the task. --- .../amazon/smithy/gradle/SmithyPlugin.java | 9 +++++++++ .../smithy/gradle/tasks/SmithyBuild.java | 10 ---------- .../smithy/gradle/tasks/SmithyBuildJar.java | 18 ------------------ .../smithy/gradle/tasks/SmithyTagsTask.java | 6 ------ 4 files changed, 9 insertions(+), 34 deletions(-) diff --git a/src/main/java/software/amazon/smithy/gradle/SmithyPlugin.java b/src/main/java/software/amazon/smithy/gradle/SmithyPlugin.java index 4330036..90baf2a 100644 --- a/src/main/java/software/amazon/smithy/gradle/SmithyPlugin.java +++ b/src/main/java/software/amazon/smithy/gradle/SmithyPlugin.java @@ -32,6 +32,7 @@ import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.TaskProvider; import org.gradle.language.jvm.tasks.ProcessResources; +import software.amazon.smithy.gradle.tasks.SmithyBuild; import software.amazon.smithy.gradle.tasks.SmithyBuildJar; import software.amazon.smithy.gradle.tasks.SmithyTagsTask; import software.amazon.smithy.gradle.tasks.Validate; @@ -84,12 +85,19 @@ public void apply(Project project) { registerSourceSets(project); addCliDependencies(project); buildJarTask.setAllowUnknownTraits(extension.getAllowUnknownTraits()); + buildJarTask.setSmithyBuildConfigs(extension.getSmithyBuildConfigs()); + buildJarTask.setProjection(extension.getProjection()); + buildJarTask.getProjectionSourceTags().addAll(extension.getProjectionSourceTags()); // We need to manually add these files as a dependency because we // dynamically inject the Smithy CLI JARs into the classpath. Configuration smithyCliFiles = project.getConfigurations().getByName("smithyCli"); buildJarTask.getInputs().files(smithyCliFiles); }); + project.getTasks().withType(SmithyBuild.class).configureEach(smithyBuild -> { + smithyBuild.setSmithyBuildConfigs(extension.getSmithyBuildConfigs()); + }); + // This plugin supports loading Smithy models from various locations, including // META-INF/smithy. It also creates a staging directory for all of the merged // resources that were found in each search location. This can cause conflicts @@ -103,6 +111,7 @@ public void apply(Project project) { Task jarTask = project.getTasks().getByName("jar"); // Only run the smithyTags task if the jar task is enabled. smithyTagsTask.setEnabled(jarTask.getEnabled()); + smithyTagsTask.getTags().addAll(extension.getTags()); }); project.getTasks().getByName("jar").dependsOn(smithyTagsProvider); diff --git a/src/main/java/software/amazon/smithy/gradle/tasks/SmithyBuild.java b/src/main/java/software/amazon/smithy/gradle/tasks/SmithyBuild.java index 4922d34..cf07ac9 100644 --- a/src/main/java/software/amazon/smithy/gradle/tasks/SmithyBuild.java +++ b/src/main/java/software/amazon/smithy/gradle/tasks/SmithyBuild.java @@ -25,7 +25,6 @@ import org.gradle.api.tasks.Optional; import org.gradle.api.tasks.OutputDirectory; import org.gradle.api.tasks.TaskAction; -import software.amazon.smithy.gradle.SmithyExtension; import software.amazon.smithy.gradle.SmithyUtils; /** @@ -101,15 +100,6 @@ public final void setSmithyBuildConfigs(FileCollection smithyBuildConfigs) { @TaskAction public void execute() { - // Configure the task from the extension if things aren't already setup. - SmithyExtension extension = SmithyUtils.getSmithyExtension(getProject()); - - if (smithyBuildConfigs == null) { - getLogger().debug("Setting smithyBuildConfigs of {} to {} from SmithyExtension", - getClass().getName(), extension.getSmithyBuildConfigs()); - setSmithyBuildConfigs(extension.getSmithyBuildConfigs()); - } - // Clear out the build directory when rebuilding. getProject().delete(getOutputDir()); diff --git a/src/main/java/software/amazon/smithy/gradle/tasks/SmithyBuildJar.java b/src/main/java/software/amazon/smithy/gradle/tasks/SmithyBuildJar.java index 1037246..93158b3 100644 --- a/src/main/java/software/amazon/smithy/gradle/tasks/SmithyBuildJar.java +++ b/src/main/java/software/amazon/smithy/gradle/tasks/SmithyBuildJar.java @@ -35,7 +35,6 @@ import org.gradle.api.tasks.TaskAction; import org.gradle.workers.WorkerExecutor; import software.amazon.smithy.cli.BuildParameterBuilder; -import software.amazon.smithy.gradle.SmithyExtension; import software.amazon.smithy.gradle.SmithyUtils; /** @@ -177,23 +176,6 @@ public File getSmithyResourceStagingDir() { @TaskAction public void execute() { - // Configure the task from the extension if things aren't already setup. - SmithyExtension extension = SmithyUtils.getSmithyExtension(getProject()); - - if (projection == null) { - getLogger().debug("Setting SmithyBuildJar projection from extension: {}", extension.getProjection()); - setProjection(extension.getProjection()); - } - - // Merge tags from the extension into the task. - projectionSourceTags.addAll(extension.getProjectionSourceTags()); - - // Merge or overwrite? - if (smithyBuildConfigs == null) { - setSmithyBuildConfigs(extension.getSmithyBuildConfigs()); - getLogger().debug("Setting SmithyBuildJar smithyBuildConfigs from extension: {}", smithyBuildConfigs); - } - writeHeading("Running smithy build"); // Clear out the directories when rebuilding. diff --git a/src/main/java/software/amazon/smithy/gradle/tasks/SmithyTagsTask.java b/src/main/java/software/amazon/smithy/gradle/tasks/SmithyTagsTask.java index 14ea3a7..bf50697 100644 --- a/src/main/java/software/amazon/smithy/gradle/tasks/SmithyTagsTask.java +++ b/src/main/java/software/amazon/smithy/gradle/tasks/SmithyTagsTask.java @@ -24,8 +24,6 @@ import org.gradle.internal.logging.text.StyledTextOutput; import org.gradle.internal.logging.text.StyledTextOutputFactory; import org.gradle.jvm.tasks.Jar; -import software.amazon.smithy.gradle.SmithyExtension; -import software.amazon.smithy.gradle.SmithyUtils; /** * Adds Smithy-Tags to the JAR built by the {@link Jar} Task. @@ -69,10 +67,6 @@ public void execute() { return; } - // Configure the task from the extension if things aren't already setup. - SmithyExtension extension = SmithyUtils.getSmithyExtension(getProject()); - tags.addAll(extension.getTags()); - // Always add the group, the group + ":" + name, and the group + ":" + name + ":" + version as tags. if (!getProject().getGroup().toString().isEmpty()) { tags.add(getProject().getGroup().toString());