Skip to content

Commit 68843c2

Browse files
committed
Add some Gradle DI glue to be usable from Groovy scripts
1 parent 8f49cc5 commit 68843c2

File tree

5 files changed

+16
-9
lines changed

5 files changed

+16
-9
lines changed

main/src/kotlinx/team/infra/InfraExtension.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import kotlinx.team.infra.api.*
44
import org.gradle.api.*
55

66
open class InfraExtension(val project: Project) {
7-
val publishing = PublishingConfiguration()
7+
val publishing = project.objects.newInstance<PublishingConfiguration>()
88
private var publishingHandler: ((PublishingConfiguration) -> Unit)? = null
99
internal fun afterPublishing(handler: (PublishingConfiguration) -> Unit) {
1010
publishingHandler = handler
@@ -15,7 +15,7 @@ open class InfraExtension(val project: Project) {
1515
publishingHandler?.invoke(publishing)
1616
}
1717

18-
val teamcity = TeamCityConfiguration()
18+
val teamcity = project.objects.newInstance<TeamCityConfiguration>()
1919
private var teamcityHandler: ((TeamCityConfiguration) -> Unit)? = null
2020
internal fun afterTeamCity(handler: (TeamCityConfiguration) -> Unit) {
2121
teamcityHandler = handler
@@ -26,7 +26,7 @@ open class InfraExtension(val project: Project) {
2626
teamcityHandler?.invoke(teamcity)
2727
}
2828

29-
val apiCheck = ApiCheckConfiguration()
29+
val apiCheck = project.objects.newInstance<ApiCheckConfiguration>()
3030
private var apiCheckHandler: ((ApiCheckConfiguration) -> Unit)? = null
3131
internal fun afterApiCheck(handler: (ApiCheckConfiguration) -> Unit) {
3232
apiCheckHandler = handler

main/src/kotlinx/team/infra/Publishing.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package kotlinx.team.infra
22

33
import groovy.lang.*
44
import org.gradle.api.*
5+
import org.gradle.api.model.ObjectFactory
56
import org.gradle.api.plugins.*
67
import org.gradle.api.publish.*
78
import org.gradle.api.publish.maven.MavenPom
@@ -17,12 +18,13 @@ import org.gradle.util.*
1718
import java.net.*
1819
import java.text.*
1920
import java.util.*
21+
import javax.inject.Inject
2022

2123
@Suppress("DEPRECATION")
22-
open class PublishingConfiguration {
24+
open class PublishingConfiguration @Inject constructor(val objects: ObjectFactory) {
2325
var libraryRepoUrl: String? = null
2426

25-
val sonatype = SonatypeConfiguration()
27+
val sonatype = objects.newInstance<SonatypeConfiguration>()
2628
fun sonatype(configure: Action<SonatypeConfiguration>) {
2729
configure.execute(sonatype)
2830
sonatype.isSelected = true
@@ -58,14 +60,16 @@ open class PublishingConfiguration {
5860
}
5961
}
6062

61-
class SonatypeConfiguration {
63+
open class SonatypeConfiguration {
6264
// no things to configure here for now
6365
// all information is provided with properties or env. variables with known names:
6466
// - libs.repository.id: sonatype staging repository id, 'auto' to open staging implicitly,
6567
// - libs.sonatype.user: sonatype user name
6668
// - libs.sonatype.password: sonatype password
6769
// - libs.sign.key.id, libs.sign.key.private, libs.sign.passphrase: publication signing information
6870
internal var isSelected: Boolean = false
71+
72+
public var testProperty: String = "default"
6973
}
7074

7175
// TODO: Add space configuration

main/src/kotlinx/team/infra/TeamCity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package kotlinx.team.infra
33
import org.gradle.api.*
44
import java.io.*
55

6-
class TeamCityConfiguration {
6+
open class TeamCityConfiguration {
77
var libraryStagingRepoDescription: String? = null
88

99
@Deprecated("Avoid publishing to bintray")

main/src/kotlinx/team/infra/Utils.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package kotlinx.team.infra
33
import groovy.lang.*
44
import org.gradle.api.*
55
import org.gradle.api.logging.*
6+
import org.gradle.api.model.ObjectFactory
67
import org.gradle.api.tasks.*
78
import java.io.*
89

@@ -58,4 +59,6 @@ fun Logger.infra(message: String) {
5859
}
5960

6061
fun Project.propertyOrEnv(name: String): String? =
61-
findProperty(name) as? String ?: System.getenv(name)
62+
findProperty(name) as? String ?: System.getenv(name)
63+
64+
internal inline fun <reified T: Any> ObjectFactory.newInstance(): T = newInstance(T::class.java)

main/src/kotlinx/team/infra/api/ApiCheck.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import org.gradle.api.tasks.*
99
import org.jetbrains.kotlin.gradle.dsl.*
1010
import org.jetbrains.kotlin.gradle.plugin.*
1111

12-
class ApiCheckConfiguration {
12+
open class ApiCheckConfiguration {
1313
var includeProjects: MutableList<String> = mutableListOf()
1414
fun include(vararg name: String) {
1515
includeProjects.addAll(name)

0 commit comments

Comments
 (0)