@@ -29,9 +29,11 @@ repositories {
29
29
mavenCentral()
30
30
}
31
31
32
- val appVersion = layout.projectDirectory.file(" release/version.txt" ).asFile.readText().trim()
32
+ val releaseVersion = releaseVersion()
33
+ val releaseNotes = releaseNotes()
34
+
33
35
allprojects {
34
- version = appVersion
36
+ version = releaseVersion
35
37
}
36
38
37
39
val argbash by configurations.creating
@@ -93,16 +95,18 @@ val copyGradleScripts by tasks.registering(Copy::class) {
93
95
group = " build"
94
96
description = " Copies the Gradle source and generated scripts to output directory."
95
97
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)
98
102
99
103
from(layout.projectDirectory.file(" LICENSE" ))
100
104
from(layout.projectDirectory.dir(" release" ).file(" version.txt" ))
101
105
rename(" version.txt" , " VERSION" )
102
106
103
107
from(layout.projectDirectory.dir(" components/scripts/gradle" )) {
104
108
exclude(" gradle-init-scripts" )
105
- filter { line: String -> line.replace(" <HEAD>" , projectVersion ) }
109
+ filter { line: String -> line.replace(" <HEAD>" , releaseVersion.get() ) }
106
110
}
107
111
from(layout.projectDirectory.dir(" components/scripts/gradle" )) {
108
112
include(" gradle-init-scripts/**" )
@@ -114,7 +118,7 @@ val copyGradleScripts by tasks.registering(Copy::class) {
114
118
include(" network.settings" )
115
119
include(" lib/**" )
116
120
exclude(" lib/cli-parsers" )
117
- filter { line: String -> line.replace(" <HEAD>" , projectVersion ) }
121
+ filter { line: String -> line.replace(" <HEAD>" , releaseVersion.get() ) }
118
122
}
119
123
from(generateBashCliParsers.map { it.outputDir.file(" lib/cli-parsers/gradle" ) }) {
120
124
into(" lib/" )
@@ -129,23 +133,25 @@ val copyMavenScripts by tasks.registering(Copy::class) {
129
133
group = " build"
130
134
description = " Copies the Maven source and generated scripts to output directory."
131
135
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)
134
140
135
141
from(layout.projectDirectory.file(" LICENSE" ))
136
142
from(layout.projectDirectory.dir(" release" ).file(" version.txt" ))
137
143
rename(" version.txt" , " VERSION" )
138
144
139
145
from(layout.projectDirectory.dir(" components/scripts/maven" )) {
140
- filter { line: String -> line.replace(" <HEAD>" , projectVersion ) }
146
+ filter { line: String -> line.replace(" <HEAD>" , releaseVersion.get() ) }
141
147
}
142
148
from(layout.projectDirectory.dir(" components/scripts/" )) {
143
149
include(" README.md" )
144
150
include(" mapping.example" )
145
151
include(" network.settings" )
146
152
include(" lib/**" )
147
153
exclude(" lib/cli-parsers" )
148
- filter { line: String -> line.replace(" <HEAD>" , projectVersion ) }
154
+ filter { line: String -> line.replace(" <HEAD>" , releaseVersion.get() ) }
149
155
}
150
156
from(generateBashCliParsers.map { it.outputDir.file(" lib/cli-parsers/maven" ) }) {
151
157
into(" lib/" )
@@ -169,7 +175,7 @@ val assembleGradleScripts by tasks.registering(Zip::class) {
169
175
group = " build"
170
176
description = " Packages the Gradle experiment scripts in a zip archive."
171
177
archiveBaseName.set(" gradle-enterprise-gradle-build-validation" )
172
- archiveFileName.set(" ${archiveBaseName.get()} -${distributionVersion()} .zip" )
178
+ archiveFileName.set(" ${archiveBaseName.get()} -${distributionVersion().get() } .zip" )
173
179
from(copyGradleScripts)
174
180
into(archiveBaseName.get())
175
181
}
@@ -178,7 +184,7 @@ val assembleMavenScripts by tasks.registering(Zip::class) {
178
184
group = " build"
179
185
description = " Packages the Maven experiment scripts in a zip archive."
180
186
archiveBaseName.set(" gradle-enterprise-maven-build-validation" )
181
- archiveFileName.set(" ${archiveBaseName.get()} -${distributionVersion()} .zip" )
187
+ archiveFileName.set(" ${archiveBaseName.get()} -${distributionVersion().get() } .zip" )
182
188
from(copyMavenScripts)
183
189
into(archiveBaseName.get())
184
190
}
@@ -253,7 +259,7 @@ githubRelease {
253
259
prerelease.set(isDevelopmentRelease)
254
260
overwrite.set(isDevelopmentRelease)
255
261
generateReleaseNotes.set(false )
256
- body.set(layout.projectDirectory.file( " release/changes.md " ).asFile.readText().trim() )
262
+ body.set(releaseNotes )
257
263
releaseAssets(assembleGradleScripts, assembleMavenScripts, generateChecksums.map { it.outputs.files.asFileTree })
258
264
}
259
265
@@ -272,26 +278,24 @@ tasks.withType(Sign::class).configureEach {
272
278
notCompatibleWithConfigurationCache(" $name task does not support configuration caching" )
273
279
}
274
280
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 }
281
283
}
282
284
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 " }
289
287
}
290
288
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() }
297
301
}
0 commit comments