Skip to content

Commit 0078047

Browse files
committed
Construct DependencyFileWriter only when required
1 parent 61b94dd commit 0078047

File tree

3 files changed

+19
-41
lines changed

3 files changed

+19
-41
lines changed

plugin/src/main/kotlin/org/gradle/github/dependencygraph/GitHubDependencyExtractorPlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class GitHubDependencyExtractorPlugin : Plugin<Gradle> {
5050
gradle.rootProject { project ->
5151
dependencyExtractorProvider
5252
.get()
53-
.setRootProjectBuildDirectory(project.buildDir)
53+
.rootProjectBuildDirectory = project.buildDir
5454
}
5555

5656
// Register the service to listen for Build Events

plugin/src/main/kotlin/org/gradle/github/dependencygraph/internal/DependencyExtractor.kt

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import org.gradle.api.artifacts.result.ResolvedComponentResult
55
import org.gradle.api.artifacts.result.ResolvedDependencyResult
66
import org.gradle.api.internal.artifacts.DefaultProjectComponentIdentifier
77
import org.gradle.api.internal.artifacts.configurations.ResolveConfigurationDependenciesBuildOperationType
8+
import org.gradle.api.logging.Logging
89
import org.gradle.github.GitHubDependencyGraphPlugin
910
import org.gradle.github.dependencygraph.internal.model.ComponentCoordinates
1011
import org.gradle.github.dependencygraph.internal.model.ResolvedComponent
@@ -28,11 +29,7 @@ abstract class DependencyExtractor :
2829
protected abstract val gitRef: String
2930
protected abstract val gitWorkspaceDirectory: Path
3031

31-
/**
32-
* Can't use this as a proper input:
33-
* https://github.com/gradle/gradle/issues/19562
34-
*/
35-
private var fileWriter: DependencyFileWriter = DependencyFileWriter.create()
32+
var rootProjectBuildDirectory: File? = null
3633

3734
private val gitHubRepositorySnapshotBuilder by lazy {
3835
GitHubRepositorySnapshotBuilder(
@@ -50,10 +47,6 @@ abstract class DependencyExtractor :
5047
println("Creating: DependencyExtractorService")
5148
}
5249

53-
internal fun setRootProjectBuildDirectory(rootProjectBuildDirectory: File) {
54-
fileWriter = DependencyFileWriter.create(rootProjectBuildDirectory, dependencyGraphJobCorrelator)
55-
}
56-
5750
override fun started(buildOperation: BuildOperationDescriptor, startEvent: OperationStartEvent) {
5851
// This method will never be called when registered in a `BuildServiceRegistry` (ie. Gradle 6.1 & higher)
5952
// No-op
@@ -182,8 +175,19 @@ abstract class DependencyExtractor :
182175
}
183176
}
184177

185-
private fun writeAndGetSnapshotFile(): File =
178+
private fun writeAndGetSnapshotFile() {
179+
if (rootProjectBuildDirectory == null) {
180+
LOGGER.warn("Unable to write dependency graph snapshot: target directory not known")
181+
return
182+
}
183+
val outputFile = File(
184+
rootProjectBuildDirectory,
185+
"reports/github-dependency-graph-plugin/github-dependency-snapshot-${dependencyGraphJobCorrelator}.json"
186+
)
187+
188+
val fileWriter = DependencyFileWriter(outputFile)
186189
fileWriter.writeDependencyManifest(gitHubRepositorySnapshotBuilder.build())
190+
}
187191

188192
override fun close() {
189193
if (thrownExceptions.isNotEmpty()) {
@@ -203,6 +207,9 @@ abstract class DependencyExtractor :
203207
)
204208
}
205209
}
210+
companion object {
211+
private val LOGGER = Logging.getLogger(DependencyExtractor::class.java)
212+
}
206213
}
207214

208215
private inline fun <reified D, reified R> handleBuildOperationTypeRaw(

plugin/src/main/kotlin/org/gradle/github/dependencygraph/internal/DependencyFileWriter.kt

Lines changed: 1 addition & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,13 @@ import org.gradle.api.logging.Logging
44
import org.gradle.github.dependencygraph.internal.json.GitHubRepositorySnapshot
55
import java.io.File
66

7-
class DependencyFileWriter
8-
private constructor(
9-
private val manifestFile: File,
10-
private val loggerWarning: () -> Unit
11-
) {
12-
7+
class DependencyFileWriter(val manifestFile: File) {
138
private var writtenFile: Boolean = false
149

1510
fun writeDependencyManifest(graph: GitHubRepositorySnapshot): File {
1611
if (writtenFile) {
1712
return manifestFile
1813
}
19-
loggerWarning()
2014
manifestFile.parentFile.mkdirs()
2115
manifestFile.writeText(JacksonJsonSerializer.serializeToJson(graph))
2216
writtenFile = true
@@ -26,28 +20,5 @@ private constructor(
2620

2721
companion object {
2822
private val LOGGER = Logging.getLogger(DependencyFileWriter::class.java)
29-
30-
fun create(buildDirectory: File, jobCorrelator:String): DependencyFileWriter =
31-
create(buildDirectory, jobCorrelator) {
32-
// No-op
33-
}
34-
35-
fun create(): DependencyFileWriter =
36-
create(File("."), "UNKNOWN") {
37-
LOGGER.warn(
38-
"[WARNING] Something went wrong configuring the GithubDependencyExtractorPlugin. " +
39-
"Using JVM working directory as root of build"
40-
)
41-
}
42-
43-
private fun create(buildDirectory: File, jobCorrelator: String, loggerWarning: () -> Unit): DependencyFileWriter {
44-
return DependencyFileWriter(
45-
File(
46-
buildDirectory,
47-
"reports/github-dependency-graph-plugin/github-dependency-snapshot-${jobCorrelator}.json"
48-
),
49-
loggerWarning
50-
)
51-
}
5223
}
5324
}

0 commit comments

Comments
 (0)