Skip to content

Commit 827c1c7

Browse files
committed
refactor: Proper task for muzzle printReferences
1 parent 4d88780 commit 827c1c7

File tree

4 files changed

+46
-25
lines changed

4 files changed

+46
-25
lines changed

buildSrc/src/main/kotlin/datadog/gradle/plugin/muzzle/MuzzlePlugin.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import datadog.gradle.plugin.muzzle.MuzzleMavenRepoUtils.muzzleDirectiveToArtifa
55
import datadog.gradle.plugin.muzzle.MuzzleMavenRepoUtils.resolveVersionRange
66
import datadog.gradle.plugin.muzzle.MuzzleReportUtils.dumpVersionRanges
77
import datadog.gradle.plugin.muzzle.MuzzleReportUtils.mergeReports
8+
import datadog.gradle.plugin.muzzle.tasks.MuzzleTask
9+
import datadog.gradle.plugin.muzzle.tasks.MuzzlePrintReferencesTask
810
import org.eclipse.aether.artifact.Artifact
911
import org.gradle.api.NamedDomainObjectProvider
1012
import org.gradle.api.Plugin
@@ -89,11 +91,7 @@ class MuzzlePlugin : Plugin<Project> {
8991
dependsOn(compileMuzzle)
9092
}
9193

92-
project.tasks.register<MuzzleTask>("printReferences") {
93-
description = "Print references created by instrumentation muzzle"
94-
doLast {
95-
printMuzzle(project)
96-
}
94+
project.tasks.register<MuzzlePrintReferencesTask>("printReferences") {
9795
dependsOn(compileMuzzle)
9896
}
9997

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package datadog.gradle.plugin.muzzle.tasks
2+
3+
import org.gradle.api.DefaultTask
4+
5+
abstract class AbstractMuzzleTask : DefaultTask() {
6+
init {
7+
group = "Muzzle"
8+
}
9+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package datadog.gradle.plugin.muzzle.tasks
2+
3+
import datadog.gradle.plugin.muzzle.mainSourceSet
4+
import org.gradle.api.Project
5+
import org.gradle.api.tasks.TaskAction
6+
import java.lang.reflect.Method
7+
import java.net.URLClassLoader
8+
import javax.inject.Inject
9+
10+
abstract class MuzzlePrintReferencesTask @Inject constructor(
11+
private val instrumentationProject: Project
12+
) : AbstractMuzzleTask() {
13+
init {
14+
description = "Print references created by instrumentation muzzle"
15+
}
16+
17+
@TaskAction
18+
fun printMuzzle() {
19+
val cp = instrumentationProject.mainSourceSet.runtimeClasspath
20+
val cl = URLClassLoader(cp.map { it.toURI().toURL() }.toTypedArray(), null)
21+
val printMethod: Method = cl.loadClass("datadog.trace.agent.tooling.muzzle.MuzzleVersionScanPlugin")
22+
.getMethod(
23+
"printMuzzleReferences",
24+
ClassLoader::class.java
25+
)
26+
printMethod.invoke(null, cl)
27+
}
28+
}

buildSrc/src/main/kotlin/datadog/gradle/plugin/muzzle/MuzzleTask.kt renamed to buildSrc/src/main/kotlin/datadog/gradle/plugin/muzzle/tasks/MuzzleTask.kt

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,23 @@
1-
package datadog.gradle.plugin.muzzle
1+
package datadog.gradle.plugin.muzzle.tasks
22

3+
import datadog.gradle.plugin.muzzle.MuzzleAction
4+
import datadog.gradle.plugin.muzzle.MuzzleDirective
5+
import datadog.gradle.plugin.muzzle.allMainSourceSet
6+
import datadog.gradle.plugin.muzzle.mainSourceSet
37
import org.gradle.api.DefaultTask
48
import org.gradle.api.NamedDomainObjectProvider
59
import org.gradle.api.Project
610
import org.gradle.api.artifacts.Configuration
711
import org.gradle.api.file.FileCollection
812
import org.gradle.api.invocation.BuildInvocationDetails
9-
import org.gradle.api.tasks.SourceSet
10-
import org.gradle.api.tasks.SourceSetContainer
1113
import org.gradle.jvm.toolchain.JavaLanguageVersion
1214
import org.gradle.jvm.toolchain.JavaToolchainService
13-
import org.gradle.kotlin.dsl.getByType
1415
import org.gradle.workers.WorkerExecutor
1516
import java.lang.reflect.Method
1617
import java.net.URLClassLoader
1718
import javax.inject.Inject
1819

19-
abstract class MuzzleTask : DefaultTask() {
20-
init {
21-
group = "Muzzle"
22-
}
23-
20+
abstract class MuzzleTask : AbstractMuzzleTask() {
2421
@get:Inject
2522
abstract val javaToolchainService: JavaToolchainService
2623

@@ -63,17 +60,6 @@ abstract class MuzzleTask : DefaultTask() {
6360
}
6461
}
6562

66-
fun printMuzzle(instrumentationProject: Project) {
67-
val cp = instrumentationProject.mainSourceSet.runtimeClasspath
68-
val cl = URLClassLoader(cp.map { it.toURI().toURL() }.toTypedArray(), null)
69-
val printMethod: Method = cl.loadClass("datadog.trace.agent.tooling.muzzle.MuzzleVersionScanPlugin")
70-
.getMethod(
71-
"printMuzzleReferences",
72-
ClassLoader::class.java
73-
)
74-
printMethod.invoke(null, cl)
75-
}
76-
7763
private fun createAgentClassPath(project: Project): FileCollection {
7864
project.logger.info("Creating agent classpath for $project")
7965
val cp = project.files()

0 commit comments

Comments
 (0)