Skip to content

Commit 4949625

Browse files
authored
Merge pull request #112 from nebula-plugins/provider-api-improvements-from-main
Migrate info plugin extensions to Gradle Provider API
2 parents 7cce4bd + b959d6f commit 4949625

17 files changed

Lines changed: 98 additions & 97 deletions

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
*.iml
33
.gradle/
44
build/
5-
out/
5+
out/
6+
.claude/

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ plugins {
2121

2222
compileGroovy.groovyOptions.configurationScript = file('src/groovyCompile/groovycConfig.groovy')
2323

24-
description 'Gradle plugin collect and provide information about the environment'
24+
description = 'Gradle plugin collect and provide information about the environment'
2525

2626
contacts {
2727
'nebula-plugins-oss@netflix.com' {

src/main/groovy/nebula/plugin/info/InfoBrokerPlugin.groovy

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,25 +57,28 @@ class InfoBrokerPlugin implements Plugin<Project> {
5757
}
5858

5959
private void filterManifestEntries(InfoBrokerPluginExtension extension) {
60-
if (extension.includedManifestProperties && extension.excludedManifestProperties) {
60+
List<String> includedProperties = extension.includedManifestProperties.getOrElse([])
61+
List<String> excludedProperties = extension.excludedManifestProperties.getOrElse([])
62+
boolean hasIncluded = !includedProperties.isEmpty()
63+
boolean hasExcluded = !excludedProperties.isEmpty()
64+
65+
if (hasIncluded && hasExcluded) {
6166
throw new GradleException("includedManifestProperties and excludedManifestProperties are mutually exclusive. Only one should be provided")
62-
} else if (extension.excludedManifestProperties) {
63-
removeExcludedProperties(extension)
64-
} else if (extension.includedManifestProperties) {
65-
filterOnlyIncludedProperties(extension)
67+
} else if (hasExcluded) {
68+
removeExcludedProperties(excludedProperties)
69+
} else if (hasIncluded) {
70+
filterOnlyIncludedProperties(includedProperties)
6671
}
6772
}
6873

69-
private void filterOnlyIncludedProperties(InfoBrokerPluginExtension extension) {
70-
List<String> includedProperties = extension.includedManifestProperties
74+
private void filterOnlyIncludedProperties(List<String> includedProperties) {
7175
List<ManifestEntry> filteredManifestEntries = manifestEntries.findAll { entry ->
7276
(entry.name in includedProperties)
7377
}
7478
manifestEntries = filteredManifestEntries
7579
}
7680

77-
private void removeExcludedProperties(InfoBrokerPluginExtension extension) {
78-
List<String> excludedProperties = extension.excludedManifestProperties
81+
private void removeExcludedProperties(List<String> excludedProperties) {
7982
List<ManifestEntry> filteredManifestEntries = manifestEntries.findAll { entry ->
8083
!(entry.name in excludedProperties)
8184
}
Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package nebula.plugin.info
22

3-
class InfoBrokerPluginExtension {
4-
List<String> includedManifestProperties = []
5-
List<String> excludedManifestProperties = []
3+
import org.gradle.api.provider.ListProperty
4+
5+
abstract class InfoBrokerPluginExtension {
6+
abstract ListProperty<String> getIncludedManifestProperties()
7+
abstract ListProperty<String> getExcludedManifestProperties()
68
}

src/main/groovy/nebula/plugin/info/basic/BasicInfoPlugin.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,8 +100,8 @@ class BasicInfoPlugin implements Plugin<Project>, InfoCollectorPlugin {
100100
manifestPlugin.add(IMPLEMENTATION_VERSION.toString(), { projectVersion.get() })
101101
manifestPlugin.add(BUILD_STATUS_PROPERTY, { projectStatus.get() }) // Could be promoted, so this is the actual status necessarily
102102

103-
String builtBy = providers.systemProperty("user.name").get()
104-
String builtOs = providers.systemProperty("os.name").get()
103+
String builtBy = providers.systemProperty("user.name").getOrElse("unknown")
104+
String builtOs = providers.systemProperty("os.name").getOrElse("unknown")
105105
manifestPlugin.add(BUILT_BY_PROPERTY, builtBy)
106106
manifestPlugin.add(BUILT_OS_PROPERTY, builtOs)
107107

src/main/groovy/nebula/plugin/info/ci/AbstractContinuousIntegrationProvider.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ abstract class AbstractContinuousIntegrationProvider implements ContinuousIntegr
3333
}
3434

3535
protected String getEnvironmentVariable(String envKey) {
36-
return providerFactory.environmentVariable(envKey).present ? providerFactory.environmentVariable(envKey).get() : null
36+
return providerFactory.environmentVariable(envKey).getOrElse(null)
3737
}
3838

3939
protected static String hostname() {

src/main/groovy/nebula/plugin/info/ci/ContinuousIntegrationInfoExtension.groovy

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616

1717
package nebula.plugin.info.ci
1818

19-
class ContinuousIntegrationInfoExtension {
20-
String host
21-
String job
22-
String buildNumber
23-
String buildId
24-
String buildUrl
19+
import org.gradle.api.provider.Property
20+
21+
abstract class ContinuousIntegrationInfoExtension {
22+
abstract Property<String> getHost()
23+
abstract Property<String> getJob()
24+
abstract Property<String> getBuildNumber()
25+
abstract Property<String> getBuildId()
26+
abstract Property<String> getBuildUrl()
2527
}

src/main/groovy/nebula/plugin/info/ci/ContinuousIntegrationInfoPlugin.groovy

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,10 @@
1616

1717
package nebula.plugin.info.ci
1818

19-
import groovy.transform.CompileDynamic
2019
import nebula.plugin.info.InfoBrokerPlugin
2120
import nebula.plugin.info.InfoCollectorPlugin
2221
import org.gradle.api.Plugin
2322
import org.gradle.api.Project
24-
import org.gradle.api.internal.ConventionMapping
25-
import org.gradle.api.internal.IConventionAware
2623
import org.gradle.api.provider.ProviderFactory
2724

2825
import javax.inject.Inject
@@ -55,22 +52,20 @@ class ContinuousIntegrationInfoPlugin implements Plugin<Project>, InfoCollectorP
5552
configureExtMapping(project, extension)
5653

5754
project.plugins.withType(InfoBrokerPlugin) { InfoBrokerPlugin manifestPlugin ->
58-
manifestPlugin.add('Build-Host') { extension.host }
59-
manifestPlugin.add('Build-Job') { extension.job }
60-
manifestPlugin.add('Build-Number') { extension.buildNumber }
61-
manifestPlugin.add('Build-Id') { extension.buildId }
62-
manifestPlugin.add('Build-Url') { extension.buildUrl }
55+
manifestPlugin.add('Build-Host') { extension.host.getOrNull() }
56+
manifestPlugin.add('Build-Job') { extension.job.getOrNull() }
57+
manifestPlugin.add('Build-Number') { extension.buildNumber.getOrNull() }
58+
manifestPlugin.add('Build-Id') { extension.buildId.getOrNull() }
59+
manifestPlugin.add('Build-Url') { extension.buildUrl.getOrNull() }
6360
}
6461
}
6562

66-
@CompileDynamic
6763
private void configureExtMapping(Project project, ContinuousIntegrationInfoExtension extension) {
68-
ConventionMapping extMapping = ((IConventionAware) extension).getConventionMapping()
69-
extMapping.host = { selectedProvider.calculateHost(project) }
70-
extMapping.job = { selectedProvider.calculateJob(project) }
71-
extMapping.buildNumber = { selectedProvider.calculateBuildNumber(project) }
72-
extMapping.buildId = { selectedProvider.calculateBuildId(project) }
73-
extMapping.buildUrl = { selectedProvider.calculateBuildUrl(project) }
64+
extension.host.convention(providerFactory.provider { selectedProvider.calculateHost(project) })
65+
extension.job.convention(providerFactory.provider { selectedProvider.calculateJob(project) })
66+
extension.buildNumber.convention(providerFactory.provider { selectedProvider.calculateBuildNumber(project) })
67+
extension.buildId.convention(providerFactory.provider { selectedProvider.calculateBuildId(project) })
68+
extension.buildUrl.convention(providerFactory.provider { selectedProvider.calculateBuildUrl(project) })
7469
}
7570

7671
ContinuousIntegrationInfoProvider findProvider(Project project) {

src/main/groovy/nebula/plugin/info/java/InfoJavaPlugin.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ class InfoJavaPlugin implements Plugin<Project>, InfoCollectorPlugin {
5959
void apply(Project project) {
6060
// This can't change, so we can commit it early
6161
project.plugins.withType(InfoBrokerPlugin) { InfoBrokerPlugin manifestPlugin ->
62-
String javaRuntimeVersion = providers.systemProperty("java.runtime.version").get()
63-
String javaVmVendor = providers.systemProperty("java.vm.vendor").get()
62+
String javaRuntimeVersion = providers.systemProperty("java.runtime.version").getOrElse("unknown")
63+
String javaVmVendor = providers.systemProperty("java.vm.vendor").getOrElse("unknown")
6464

6565
manifestPlugin.add(CREATED_PROPERTY, "$javaRuntimeVersion ($javaVmVendor)")
6666
}
@@ -77,7 +77,7 @@ class InfoJavaPlugin implements Plugin<Project>, InfoCollectorPlugin {
7777
if (javaLauncher.isPresent()) {
7878
manifestPlugin.add(JDK_PROPERTY, javaLauncher.get().metadata.languageVersion.toString())
7979
} else {
80-
String javaVersionFromSystemProperty = providers.systemProperty("java.version").get()
80+
String javaVersionFromSystemProperty = providers.systemProperty("java.version").getOrElse("unknown")
8181
manifestPlugin.add(JDK_PROPERTY, javaVersionFromSystemProperty)
8282
}
8383
}

src/main/groovy/nebula/plugin/info/reporting/InfoJarPropertiesFilePlugin.groovy

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ class InfoJarPropertiesFilePlugin implements Plugin<Project>, InfoReporterPlugin
6767

6868
jarTask.doFirst {
6969
//when we are after all caching decisions we fill the file with all the data
70-
PropertiesWriter.writeProperties(propertiesFile.get().asFile, manifestPlugin)
70+
File propFile = propertiesFile.get().asFile
71+
PropertiesWriter.writeProperties(propFile, manifestPlugin)
7172
}
7273
jarTask.doLast {
7374
//we need to cleanup file in case we got multiple jar tasks

0 commit comments

Comments
 (0)