Skip to content

Commit 7c7f5a6

Browse files
committed
Use Provider API to read version and changes files
Add release notes to githubRelease body * Leverage Provider.fileContents() to support configuration caching when reading release notes file Use configuration-cache-compatible Provider API to read version file * Use configuration-cache-compatible Provider.fileContents() to read version file
1 parent 2f68f96 commit 7c7f5a6

File tree

1 file changed

+35
-31
lines changed

1 file changed

+35
-31
lines changed

build.gradle.kts

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@ repositories {
2929
mavenCentral()
3030
}
3131

32-
val appVersion = layout.projectDirectory.file("release/version.txt").asFile.readText().trim()
32+
val releaseVersion = releaseVersion()
33+
val releaseNotes = releaseNotes()
34+
3335
allprojects {
34-
version = appVersion
36+
version = releaseVersion
3537
}
3638

3739
val argbash by configurations.creating
@@ -93,16 +95,18 @@ val copyGradleScripts by tasks.registering(Copy::class) {
9395
group = "build"
9496
description = "Copies the Gradle source and generated scripts to output directory."
9597

96-
val projectVersion = appVersion // local variable required for configuration cache compatibility
97-
inputs.property("project.version", projectVersion)
98+
// local variable required for configuration cache compatibility
99+
// https://docs.gradle.org/current/userguide/configuration_cache.html#config_cache:not_yet_implemented:accessing_top_level_at_execution
100+
val releaseVersion = releaseVersion
101+
inputs.property("project.version", releaseVersion)
98102

99103
from(layout.projectDirectory.file("LICENSE"))
100104
from(layout.projectDirectory.dir("release").file("version.txt"))
101105
rename("version.txt", "VERSION")
102106

103107
from(layout.projectDirectory.dir("components/scripts/gradle")) {
104108
exclude("gradle-init-scripts")
105-
filter { line: String -> line.replace("<HEAD>", projectVersion) }
109+
filter { line: String -> line.replace("<HEAD>", releaseVersion.get()) }
106110
}
107111
from(layout.projectDirectory.dir("components/scripts/gradle")) {
108112
include("gradle-init-scripts/**")
@@ -114,7 +118,7 @@ val copyGradleScripts by tasks.registering(Copy::class) {
114118
include("network.settings")
115119
include("lib/**")
116120
exclude("lib/cli-parsers")
117-
filter { line: String -> line.replace("<HEAD>", projectVersion) }
121+
filter { line: String -> line.replace("<HEAD>", releaseVersion.get()) }
118122
}
119123
from(generateBashCliParsers.map { it.outputDir.file("lib/cli-parsers/gradle") }) {
120124
into("lib/")
@@ -129,23 +133,25 @@ val copyMavenScripts by tasks.registering(Copy::class) {
129133
group = "build"
130134
description = "Copies the Maven source and generated scripts to output directory."
131135

132-
val projectVersion = appVersion // local variable required for configuration cache compatibility
133-
inputs.property("project.version", projectVersion)
136+
// local variable required for configuration cache compatibility
137+
// https://docs.gradle.org/current/userguide/configuration_cache.html#config_cache:not_yet_implemented:accessing_top_level_at_execution
138+
val releaseVersion = releaseVersion
139+
inputs.property("project.version", releaseVersion)
134140

135141
from(layout.projectDirectory.file("LICENSE"))
136142
from(layout.projectDirectory.dir("release").file("version.txt"))
137143
rename("version.txt", "VERSION")
138144

139145
from(layout.projectDirectory.dir("components/scripts/maven")) {
140-
filter { line: String -> line.replace("<HEAD>", projectVersion) }
146+
filter { line: String -> line.replace("<HEAD>", releaseVersion.get()) }
141147
}
142148
from(layout.projectDirectory.dir("components/scripts/")) {
143149
include("README.md")
144150
include("mapping.example")
145151
include("network.settings")
146152
include("lib/**")
147153
exclude("lib/cli-parsers")
148-
filter { line: String -> line.replace("<HEAD>", projectVersion) }
154+
filter { line: String -> line.replace("<HEAD>", releaseVersion.get()) }
149155
}
150156
from(generateBashCliParsers.map { it.outputDir.file("lib/cli-parsers/maven") }) {
151157
into("lib/")
@@ -169,7 +175,7 @@ val assembleGradleScripts by tasks.registering(Zip::class) {
169175
group = "build"
170176
description = "Packages the Gradle experiment scripts in a zip archive."
171177
archiveBaseName.set("gradle-enterprise-gradle-build-validation")
172-
archiveFileName.set("${archiveBaseName.get()}-${distributionVersion()}.zip")
178+
archiveFileName.set("${archiveBaseName.get()}-${distributionVersion().get()}.zip")
173179
from(copyGradleScripts)
174180
into(archiveBaseName.get())
175181
}
@@ -178,7 +184,7 @@ val assembleMavenScripts by tasks.registering(Zip::class) {
178184
group = "build"
179185
description = "Packages the Maven experiment scripts in a zip archive."
180186
archiveBaseName.set("gradle-enterprise-maven-build-validation")
181-
archiveFileName.set("${archiveBaseName.get()}-${distributionVersion()}.zip")
187+
archiveFileName.set("${archiveBaseName.get()}-${distributionVersion().get()}.zip")
182188
from(copyMavenScripts)
183189
into(archiveBaseName.get())
184190
}
@@ -253,7 +259,7 @@ githubRelease {
253259
prerelease.set(isDevelopmentRelease)
254260
overwrite.set(isDevelopmentRelease)
255261
generateReleaseNotes.set(false)
256-
body.set(layout.projectDirectory.file("release/changes.md").asFile.readText().trim())
262+
body.set(releaseNotes)
257263
releaseAssets(assembleGradleScripts, assembleMavenScripts, generateChecksums.map { it.outputs.files.asFileTree })
258264
}
259265

@@ -272,26 +278,24 @@ tasks.withType(Sign::class).configureEach {
272278
notCompatibleWithConfigurationCache("$name task does not support configuration caching")
273279
}
274280

275-
fun gitHubReleaseName(): String {
276-
if (isDevelopmentRelease) {
277-
return "Development Build"
278-
} else {
279-
return version.toString()
280-
}
281+
fun gitHubReleaseName(): Provider<String> {
282+
return releaseVersion.map { if (isDevelopmentRelease) "Development release" else it }
281283
}
282284

283-
fun gitReleaseTag(): String {
284-
if (isDevelopmentRelease) {
285-
return "development-latest"
286-
} else {
287-
return "v${version}"
288-
}
285+
fun gitReleaseTag(): Provider<String> {
286+
return releaseVersion.map { if (isDevelopmentRelease) "development-latest" else "v$it" }
289287
}
290288

291-
fun distributionVersion(): String {
292-
if (isDevelopmentRelease) {
293-
return "dev"
294-
} else {
295-
return version.toString()
296-
}
289+
fun distributionVersion(): Provider<String> {
290+
return releaseVersion.map { if (isDevelopmentRelease) "dev" else it }
291+
}
292+
293+
fun releaseVersion(): Provider<String> {
294+
val versionFile = layout.projectDirectory.file("release/version.txt")
295+
return providers.fileContents(versionFile).asText.map { it.trim() }
296+
}
297+
298+
fun releaseNotes(): Provider<String> {
299+
val releaseNotesFile = layout.projectDirectory.file("release/changes.md")
300+
return providers.fileContents(releaseNotesFile).asText.map { it.trim() }
297301
}

0 commit comments

Comments
 (0)