1616
1717package nebula.plugin.info.scm
1818
19- import groovy.transform.CompileDynamic
2019import nebula.plugin.info.InfoBrokerPlugin
2120import nebula.plugin.info.InfoCollectorPlugin
2221import org.gradle.api.Plugin
2322import org.gradle.api.Project
24- import org.gradle.api.internal.ConventionMapping
25- import org.gradle.api.internal.IConventionAware
2623import org.gradle.api.provider.ProviderFactory
2724
2825import javax.inject.Inject
@@ -86,7 +83,7 @@ class ScmInfoPlugin implements Plugin<Project>, InfoCollectorPlugin {
8683 private void configureWithScmProvider (Project project ) {
8784 ScmInfoExtension extension = project. extensions. create(' scminfo' , ScmInfoExtension )
8885 project. logger. debug(" Project $project . name SCM information is being collected from provider ${ selectedProvider.class.name} " )
89- configureExtMappingWithScmProvider (project, extension)
86+ configureExtensionFromProvider (project, extension)
9087 configureInfoBrokerManifest(project, extension)
9188 }
9289
@@ -97,28 +94,24 @@ class ScmInfoPlugin implements Plugin<Project>, InfoCollectorPlugin {
9794 private void configureWithoutScmProvider (Project project , ScmInfoExtension scmInfoRootProjectExtension ) {
9895 ScmInfoExtension extension = project. extensions. create(' scminfo' , ScmInfoExtension )
9996 project. logger. debug(" Project $project . name SCM information is being collected from rootProject extension" )
100- configureExtMappingWithoutScmProvider(project, extension, scmInfoRootProjectExtension)
97+ configureExtensionFromRootProject( extension, scmInfoRootProjectExtension)
10198 configureInfoBrokerManifest(project, extension)
10299 }
103100
104- @CompileDynamic
105- private void configureExtMappingWithScmProvider (Project project , ScmInfoExtension extension ) {
106- ConventionMapping extMapping = ((IConventionAware ) extension). getConventionMapping()
107- extMapping. origin = { selectedProvider. calculateOrigin(project) }
108- extMapping. source = { selectedProvider. calculateSource(project)?. replace(File . separatorChar, ' /' as char ) }
109- extMapping. change = { selectedProvider. calculateChange(project) }
110- extMapping. fullChange = { selectedProvider. calculateFullChange(project) }
111- extMapping. branch = { selectedProvider. calculateBranch(project) }
101+ private void configureExtensionFromProvider (Project project , ScmInfoExtension extension ) {
102+ extension. origin. convention(providerFactory. provider { selectedProvider. calculateOrigin(project) })
103+ extension. source. convention(providerFactory. provider { selectedProvider. calculateSource(project)?. replace(File . separatorChar, ' /' as char ) })
104+ extension. change. convention(providerFactory. provider { selectedProvider. calculateChange(project) })
105+ extension. fullChange. convention(providerFactory. provider { selectedProvider. calculateFullChange(project) })
106+ extension. branch. convention(providerFactory. provider { selectedProvider. calculateBranch(project) })
112107 }
113108
114- @CompileDynamic
115- private void configureExtMappingWithoutScmProvider (Project project , ScmInfoExtension extension , ScmInfoExtension scmInfoRootProjectExtension ) {
116- ConventionMapping extMapping = ((IConventionAware ) extension). getConventionMapping()
117- extMapping. origin = { scmInfoRootProjectExtension. origin }
118- extMapping. source = { scmInfoRootProjectExtension. source }
119- extMapping. change = { scmInfoRootProjectExtension. change }
120- extMapping. fullChange = { scmInfoRootProjectExtension. fullChange }
121- extMapping. branch = { scmInfoRootProjectExtension. branch }
109+ private void configureExtensionFromRootProject (ScmInfoExtension extension , ScmInfoExtension scmInfoRootProjectExtension ) {
110+ extension. origin. convention(scmInfoRootProjectExtension. origin)
111+ extension. source. convention(scmInfoRootProjectExtension. source)
112+ extension. change. convention(scmInfoRootProjectExtension. change)
113+ extension. fullChange. convention(scmInfoRootProjectExtension. fullChange)
114+ extension. branch. convention(scmInfoRootProjectExtension. branch)
122115 }
123116
124117 /**
@@ -128,11 +121,11 @@ class ScmInfoPlugin implements Plugin<Project>, InfoCollectorPlugin {
128121 */
129122 private void configureInfoBrokerManifest (Project project , ScmInfoExtension scmInfoExtension ) {
130123 project. plugins. withType(InfoBrokerPlugin ) { InfoBrokerPlugin manifestPlugin ->
131- manifestPlugin. add(MODULE_SOURCE_PROPERTY ) { scmInfoExtension. source }
132- manifestPlugin. add(MODULE_ORIGIN_PROPERTY ) { scmInfoExtension. origin }
133- manifestPlugin. add(CHANGE_PROPERTY ) { scmInfoExtension. change }
134- manifestPlugin. add(FULL_CHANGE_PROPERTY ) { scmInfoExtension. fullChange }
135- manifestPlugin. add(BRANCH_PROPERTY ) { scmInfoExtension. branch }
124+ manifestPlugin. add(MODULE_SOURCE_PROPERTY ) { scmInfoExtension. source. getOrNull() }
125+ manifestPlugin. add(MODULE_ORIGIN_PROPERTY ) { scmInfoExtension. origin. getOrNull() }
126+ manifestPlugin. add(CHANGE_PROPERTY ) { scmInfoExtension. change. getOrNull() }
127+ manifestPlugin. add(FULL_CHANGE_PROPERTY ) { scmInfoExtension. fullChange. getOrNull() }
128+ manifestPlugin. add(BRANCH_PROPERTY ) { scmInfoExtension. branch. getOrNull() }
136129 }
137130 }
138131
0 commit comments