Skip to content

Commit 0da95c8

Browse files
committed
migrate deprecated logging to EndOfBuildLoggerService
1 parent baae36a commit 0da95c8

2 files changed

Lines changed: 54 additions & 13 deletions

File tree

build-logic/convention/src/main/kotlin/Github.kt

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
@file:Suppress("unused")
22

33
import java.util.*
4+
import buildlogic.EndOfBuildLoggerService.Companion.buildLogger
45
import buildlogic.git.getAllCommitsPushed
56
import buildlogic.git.getCommitCount
67
import buildlogic.git.getWorkingTreeClean
78
import com.android.build.api.dsl.ApplicationExtension
8-
import org.gradle.BuildAdapter
9-
import org.gradle.BuildResult
109
import org.gradle.api.DefaultTask
1110
import org.gradle.api.Plugin
1211
import org.gradle.api.Project
@@ -76,11 +75,7 @@ abstract class GithubCreateReleaseTask : Github() {
7675
if (repository.getReleaseByTagName(tagName) != null) {
7776
val logString = "Release $name already exists"
7877

79-
project.gradle.addBuildListener(object : BuildAdapter() {
80-
override fun buildFinished(result: BuildResult) {
81-
println(logString)
82-
}
83-
})
78+
buildLogger.addMessage(logString)
8479
return
8580
}
8681

@@ -95,11 +90,7 @@ abstract class GithubCreateReleaseTask : Github() {
9590

9691
val logString = "Created release ${release.name}: ${release.htmlUrl}"
9792

98-
project.gradle.addBuildListener(object : BuildAdapter() {
99-
override fun buildFinished(result: BuildResult) {
100-
println(logString)
101-
}
102-
})
93+
buildLogger.addMessage(logString)
10394
}
10495
}
10596

@@ -114,7 +105,7 @@ abstract class GithubClearReleaseTask : Github() {
114105
repository.listReleases().filter { it.isDraft }.forEach { release ->
115106
val name = release.name
116107
release.delete()
117-
println("Deleted release $name")
108+
buildLogger.addMessage("Deleted release $name")
118109
}
119110
}
120111
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package buildlogic
2+
3+
import buildlogic.EndOfBuildLoggerService.Companion.buildLogger
4+
import org.gradle.api.Project
5+
import org.gradle.api.Task
6+
import org.gradle.api.services.BuildService
7+
import org.gradle.api.services.BuildServiceParameters
8+
9+
/**
10+
* A Gradle build service that accumulates messages during the build and prints them all at the end.
11+
*
12+
* Use the [Project.buildLogger] or [Task.buildLogger] extension properties to access the service.
13+
*/
14+
abstract class EndOfBuildLoggerService : BuildService<BuildServiceParameters.None>, AutoCloseable {
15+
private val messages = mutableListOf<String>()
16+
17+
/**
18+
* Adds a message to be printed at the end of the build.
19+
*
20+
* @param message The message to log
21+
*/
22+
@Synchronized
23+
fun addMessage(message: String) {
24+
messages.add(message)
25+
}
26+
27+
/**
28+
* Prints all accumulated messages and clears the message list.
29+
* Called automatically by Gradle when the build completes.
30+
*/
31+
@Synchronized
32+
override fun close() {
33+
messages.forEach { println(it) }
34+
messages.clear()
35+
}
36+
37+
companion object {
38+
/**
39+
* Extension property to access the [EndOfBuildLoggerService] from a [Task].
40+
*/
41+
val Task.buildLogger: EndOfBuildLoggerService
42+
get() = project.buildLogger
43+
44+
/**
45+
* Extension property to access the [EndOfBuildLoggerService] from a [Project].
46+
*/
47+
val Project.buildLogger: EndOfBuildLoggerService
48+
get() = gradle.sharedServices.registerIfAbsent(EndOfBuildLoggerService::class.java.name, EndOfBuildLoggerService::class.java).get()
49+
}
50+
}

0 commit comments

Comments
 (0)