Skip to content

Commit 0c828c9

Browse files
committed
chore(build): Port includeClassDirectories support to Kotlin
1 parent 3ce9534 commit 0c828c9

5 files changed

Lines changed: 21 additions & 1 deletion

File tree

buildSrc/src/main/kotlin/datadog/gradle/plugin/instrument/BuildTimeInstrumentationExtension.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package datadog.gradle.plugin.instrument
22

3+
import org.gradle.api.file.ConfigurableFileCollection
34
import org.gradle.api.file.DirectoryProperty
45
import org.gradle.api.provider.ListProperty
56

@@ -23,4 +24,9 @@ abstract class BuildTimeInstrumentationExtension {
2324
* Additional classpath entries required to resolve instrumentation plugins and their dependencies.
2425
*/
2526
abstract val additionalClasspath: ListProperty<DirectoryProperty>
27+
28+
/**
29+
* Additional class directories to include in instrumentation processing.
30+
*/
31+
abstract val includeClassDirectories: ConfigurableFileCollection
2632
}

buildSrc/src/main/kotlin/datadog/gradle/plugin/instrument/BuildTimeInstrumentationPlugin.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ class BuildTimeInstrumentationPlugin : Plugin<Project> {
130130
inputs.property("javaVersion", resolvedJavaVersion)
131131
inputs.property("plugins", extension.plugins)
132132
inputs.files(extension.additionalClasspath)
133+
inputs.files(extension.includeClassDirectories)
133134

134135
// Temporary location for raw (un-instrumented) classes.
135136
val tmpUninstrumentedClasses = project.objects.directoryProperty().value(
@@ -154,6 +155,7 @@ class BuildTimeInstrumentationPlugin : Plugin<Project> {
154155
instrumentingClassPath,
155156
destinationDirectory,
156157
tmpUninstrumentedClasses,
158+
extension.includeClassDirectories,
157159
)
158160
)
159161

buildSrc/src/main/kotlin/datadog/gradle/plugin/instrument/InstrumentAction.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ abstract class InstrumentAction : WorkAction<InstrumentWorkParameters> {
4444
from(originalClassesDirectory)
4545
into(tmpUninstrumentedDir)
4646
}
47+
// Merge any additional class directories (e.g. unpacked dependency JARs) to be processed
48+
parameters.includeClassDirectories.files.forEach { classesDir ->
49+
if (classesDir.exists()) {
50+
fileSystemOperations.copy {
51+
from(classesDir)
52+
into(tmpUninstrumentedDir)
53+
}
54+
}
55+
}
4756
fileSystemOperations.delete {
4857
delete(objects.fileTree().from(originalClassesDirectory))
4958
}

buildSrc/src/main/kotlin/datadog/gradle/plugin/instrument/InstrumentPostProcessingAction.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ abstract class InstrumentPostProcessingAction @Inject constructor(
2121
val plugins: ListProperty<String>,
2222
val instrumentingClassPath: FileCollection,
2323
val compilerOutputDirectory: DirectoryProperty,
24-
val tmpDirectory: DirectoryProperty
24+
val tmpDirectory: DirectoryProperty,
25+
val includeClassDirectories: FileCollection
2526
) : Action<Task> {
2627
private val logger = Logging.getLogger(InstrumentPostProcessingAction::class.java)
2728
private val resolvedJavaVersion: JavaLanguageVersion = when (javaVersion) {
@@ -61,6 +62,7 @@ abstract class InstrumentPostProcessingAction @Inject constructor(
6162
instrumentingClassPath.setFrom(action.instrumentingClassPath)
6263
compilerOutputDirectory.set(action.compilerOutputDirectory)
6364
tmpDirectory.set(action.tmpDirectory)
65+
includeClassDirectories.setFrom(action.includeClassDirectories)
6466
}
6567
}
6668

buildSrc/src/main/kotlin/datadog/gradle/plugin/instrument/InstrumentWorkParameters.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ interface InstrumentWorkParameters : WorkParameters {
1313
val instrumentingClassPath: ConfigurableFileCollection
1414
val compilerOutputDirectory: DirectoryProperty
1515
val tmpDirectory: DirectoryProperty
16+
val includeClassDirectories: ConfigurableFileCollection
1617
}

0 commit comments

Comments
 (0)