Skip to content

Instantly share code, notes, and snippets.

@lptr
Created November 14, 2022 13:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lptr/92d952f20b4a7ad69dee6c51ff628c82 to your computer and use it in GitHub Desktop.
Save lptr/92d952f20b4a7ad69dee6c51ff628c82 to your computer and use it in GitHub Desktop.
diff --git a/subprojects/core/src/main/java/org/gradle/plugin/use/internal/PluginRequestApplicator.java b/subprojects/core/src/main/java/org/gradle/plugin/use/internal/PluginRequestApplicator.java
index ecb1660bb12..440abb63714 100644
--- a/subprojects/core/src/main/java/org/gradle/plugin/use/internal/PluginRequestApplicator.java
+++ b/subprojects/core/src/main/java/org/gradle/plugin/use/internal/PluginRequestApplicator.java
@@ -22,6 +22,7 @@
import org.gradle.internal.service.scopes.Scopes;
import org.gradle.internal.service.scopes.ServiceScope;
import org.gradle.plugin.management.internal.PluginRequests;
+import org.gradle.plugin.use.PluginId;
import javax.annotation.Nullable;
@@ -37,4 +38,8 @@ public interface PluginRequestApplicator {
* {@link ClassLoaderScope}.
*/
void applyPlugins(PluginRequests requests, ScriptHandlerInternal scriptHandler, @Nullable PluginManagerInternal target, ClassLoaderScope classLoaderScope);
+
+ interface Listener {
+ void pluginApplied(PluginId id);
+ }
}
diff --git a/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterpriseAutoAppliedPluginRegistry.java b/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterpriseAutoAppliedPluginRegistry.java
index 854109d10f7..2211cf2706c 100644
--- a/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterpriseAutoAppliedPluginRegistry.java
+++ b/subprojects/enterprise/src/main/java/org/gradle/internal/enterprise/impl/GradleEnterpriseAutoAppliedPluginRegistry.java
@@ -25,20 +25,30 @@
import org.gradle.api.internal.artifacts.DefaultModuleIdentifier;
import org.gradle.api.internal.artifacts.DefaultModuleVersionSelector;
import org.gradle.api.invocation.Gradle;
+import org.gradle.internal.concurrent.Stoppable;
+import org.gradle.internal.event.ListenerManager;
import org.gradle.plugin.management.internal.DefaultPluginRequest;
import org.gradle.plugin.management.internal.PluginRequestInternal;
import org.gradle.plugin.management.internal.PluginRequests;
import org.gradle.plugin.management.internal.autoapply.AutoAppliedGradleEnterprisePlugin;
import org.gradle.plugin.management.internal.autoapply.AutoAppliedPluginRegistry;
+import org.gradle.plugin.use.PluginId;
+import org.gradle.plugin.use.internal.PluginRequestApplicator;
import static org.gradle.initialization.StartParameterBuildOptions.BuildScanOption;
-public class GradleEnterpriseAutoAppliedPluginRegistry implements AutoAppliedPluginRegistry {
+public class GradleEnterpriseAutoAppliedPluginRegistry implements AutoAppliedPluginRegistry, PluginRequestApplicator.Listener, Stoppable {
private final GradleEnterprisePluginAutoAppliedStatus autoAppliedStatus;
+ private final ListenerManager listenerManager;
- public GradleEnterpriseAutoAppliedPluginRegistry(GradleEnterprisePluginAutoAppliedStatus autoAppliedStatus) {
+ public GradleEnterpriseAutoAppliedPluginRegistry(
+ GradleEnterprisePluginAutoAppliedStatus autoAppliedStatus,
+ ListenerManager listenerManager
+ ) {
this.autoAppliedStatus = autoAppliedStatus;
+ this.listenerManager = listenerManager;
+ listenerManager.addListener(this);
}
@Override
@@ -76,7 +86,19 @@ private PluginRequestInternal createGradleEnterprisePluginRequest() {
);
}
+ @Override
+ public void pluginApplied(PluginId id) {
+ if (id.equals(AutoAppliedGradleEnterprisePlugin.ID)) {
+ autoAppliedStatus.markAsAutoApplied();
+ }
+ }
+
private static String getScriptDisplayName() {
return String.format("auto-applied by using --%s", BuildScanOption.LONG_OPTION);
}
+
+ @Override
+ public void stop() {
+ listenerManager.removeListener(this);
+ }
}
diff --git a/subprojects/plugin-use/src/main/java/org/gradle/plugin/use/internal/DefaultPluginRequestApplicator.java b/subprojects/plugin-use/src/main/java/org/gradle/plugin/use/internal/DefaultPluginRequestApplicator.java
index d09595738d1..2d4de30f20f 100644
--- a/subprojects/plugin-use/src/main/java/org/gradle/plugin/use/internal/DefaultPluginRequestApplicator.java
+++ b/subprojects/plugin-use/src/main/java/org/gradle/plugin/use/internal/DefaultPluginRequestApplicator.java
@@ -30,6 +30,7 @@
import org.gradle.api.plugins.UnknownPluginException;
import org.gradle.internal.classpath.CachedClasspathTransformer;
import org.gradle.internal.classpath.ClassPath;
+import org.gradle.internal.event.ListenerManager;
import org.gradle.internal.exceptions.LocationAwareException;
import org.gradle.plugin.management.internal.PluginRequestInternal;
import org.gradle.plugin.management.internal.PluginRequests;
@@ -66,8 +67,10 @@ public class DefaultPluginRequestApplicator implements PluginRequestApplicator {
private final PluginInspector pluginInspector;
private final CachedClasspathTransformer cachedClasspathTransformer;
private final PluginVersionTracker pluginVersionTracker;
+ private final Listener appliedListener;
public DefaultPluginRequestApplicator(
+ ListenerManager listenerManager,
PluginRegistry pluginRegistry,
PluginResolverFactory pluginResolverFactory,
PluginArtifactRepositoriesProvider pluginRepositoriesProvider,
@@ -83,6 +86,7 @@ public DefaultPluginRequestApplicator(
this.pluginInspector = pluginInspector;
this.cachedClasspathTransformer = cachedClasspathTransformer;
this.pluginVersionTracker = pluginVersionTracker;
+ this.appliedListener = listenerManager.getBroadcaster(Listener.class);
}
@Override
@@ -199,7 +203,7 @@ private void applyPlugin(PluginRequestInternal request, PluginId id, Runnable ap
try {
try {
applicator.run();
- request.getAcceptanceHandler().run();
+ appliedListener.pluginApplied(id);
} catch (UnknownPluginException e) {
throw couldNotApply(request, id, e);
} catch (Exception e) {
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment