From 0f9d0d09a38d62b80dcecb71cfbf5f0fe0b93b00 Mon Sep 17 00:00:00 2001 From: iamdanfox <iamdanfox@gmail.com> Date: Thu, 9 Jan 2020 17:47:51 +0000 Subject: [PATCH] baseline-class-uniqueness is updated by `./gradlew --write-locks` (#1153) Running `./gradlew --write-locks` will now update the baseline-class-uniqueness.lock file. --- changelog/@unreleased/pr-1153.v2.yml | 6 ++++++ .../BaselineClassUniquenessPlugin.java | 20 ++++++++++++++++--- ...lassUniquenessPluginIntegrationTest.groovy | 2 +- 3 files changed, 24 insertions(+), 4 deletions(-) create mode 100644 changelog/@unreleased/pr-1153.v2.yml diff --git a/changelog/@unreleased/pr-1153.v2.yml b/changelog/@unreleased/pr-1153.v2.yml new file mode 100644 index 000000000..4fa03fb4b --- /dev/null +++ b/changelog/@unreleased/pr-1153.v2.yml @@ -0,0 +1,6 @@ +type: fix +fix: + description: Running `./gradlew --write-locks` will now update the baseline-class-uniqueness.lock + file. + links: + - https://github.com/palantir/gradle-baseline/pull/1153 diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineClassUniquenessPlugin.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineClassUniquenessPlugin.java index b57a4ce80..69daec35c 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineClassUniquenessPlugin.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/BaselineClassUniquenessPlugin.java @@ -16,7 +16,10 @@ package com.palantir.baseline.plugins; +import com.google.common.collect.ImmutableList; import com.palantir.baseline.tasks.CheckClassUniquenessLockTask; +import java.util.List; +import org.gradle.StartParameter; import org.gradle.api.Project; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.tasks.TaskProvider; @@ -32,14 +35,25 @@ public class BaselineClassUniquenessPlugin extends AbstractBaselinePlugin { @Override public final void apply(Project project) { - TaskProvider<CheckClassUniquenessLockTask> lockTask = + TaskProvider<CheckClassUniquenessLockTask> checkClassUniqueness = project.getTasks().register("checkClassUniqueness", CheckClassUniquenessLockTask.class); project.getPlugins().apply(LifecycleBasePlugin.class); - project.getTasks().getByName(LifecycleBasePlugin.CHECK_TASK_NAME).dependsOn(lockTask); + project.getTasks().getByName(LifecycleBasePlugin.CHECK_TASK_NAME).dependsOn(checkClassUniqueness); project.getPlugins().withId("java", plugin -> { - lockTask.configure(t -> t.configurations.add( + checkClassUniqueness.configure(t -> t.configurations.add( project.getConfigurations().getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME))); }); + + // Wire up dependencies so running `./gradlew --write-locks` will update the lock file + StartParameter startParam = project.getGradle().getStartParameter(); + if (startParam.isWriteDependencyLocks() + && !startParam.getTaskNames().contains(checkClassUniqueness.getName())) { + List<String> taskNames = ImmutableList.<String>builder() + .addAll(startParam.getTaskNames()) + .add(checkClassUniqueness.getName()) + .build(); + startParam.setTaskNames(taskNames); + } } } diff --git a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineClassUniquenessPluginIntegrationTest.groovy b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineClassUniquenessPluginIntegrationTest.groovy index 61a727ecc..b314fb1fc 100644 --- a/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineClassUniquenessPluginIntegrationTest.groovy +++ b/gradle-baseline-java/src/test/groovy/com/palantir/baseline/BaselineClassUniquenessPluginIntegrationTest.groovy @@ -57,7 +57,7 @@ class BaselineClassUniquenessPluginIntegrationTest extends AbstractPluginTest { result.getOutput().contains("javax.el.ArrayELResolver"); !lockfile.exists() - with("checkClassUniqueness", "--write-locks").build() + with("--write-locks").build() lockfile.exists() File expected = new File("src/test/resources/com/palantir/baseline/baseline-class-uniqueness.expected.lock")