1*68017707SAndroid Build Coastguard Worker /* 2*68017707SAndroid Build Coastguard Worker * Copyright 2016-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3*68017707SAndroid Build Coastguard Worker */ 4*68017707SAndroid Build Coastguard Worker 5*68017707SAndroid Build Coastguard Worker @file:Suppress("UnstableApiUsage") 6*68017707SAndroid Build Coastguard Worker 7*68017707SAndroid Build Coastguard Worker import org.gradle.api.* 8*68017707SAndroid Build Coastguard Worker import org.gradle.api.artifacts.dsl.* 9*68017707SAndroid Build Coastguard Worker import org.gradle.api.provider.* 10*68017707SAndroid Build Coastguard Worker import org.gradle.api.publish.maven.* 11*68017707SAndroid Build Coastguard Worker import org.gradle.plugins.signing.* 12*68017707SAndroid Build Coastguard Worker import java.net.* 13*68017707SAndroid Build Coastguard Worker 14*68017707SAndroid Build Coastguard Worker // Pom configuration 15*68017707SAndroid Build Coastguard Worker bynull16*68017707SAndroid Build Coastguard Workerinfix fun <T> Property<T>.by(value: T) { 17*68017707SAndroid Build Coastguard Worker set(value) 18*68017707SAndroid Build Coastguard Worker } 19*68017707SAndroid Build Coastguard Worker configureMavenCentralMetadatanull20*68017707SAndroid Build Coastguard Workerfun MavenPom.configureMavenCentralMetadata(project: Project) { 21*68017707SAndroid Build Coastguard Worker name by project.name 22*68017707SAndroid Build Coastguard Worker description by "AtomicFU utilities" 23*68017707SAndroid Build Coastguard Worker url by "https://github.com/Kotlin/kotlinx.atomicfu" 24*68017707SAndroid Build Coastguard Worker 25*68017707SAndroid Build Coastguard Worker licenses { 26*68017707SAndroid Build Coastguard Worker license { 27*68017707SAndroid Build Coastguard Worker name by "The Apache Software License, Version 2.0" 28*68017707SAndroid Build Coastguard Worker url by "https://www.apache.org/licenses/LICENSE-2.0.txt" 29*68017707SAndroid Build Coastguard Worker distribution by "repo" 30*68017707SAndroid Build Coastguard Worker } 31*68017707SAndroid Build Coastguard Worker } 32*68017707SAndroid Build Coastguard Worker 33*68017707SAndroid Build Coastguard Worker developers { 34*68017707SAndroid Build Coastguard Worker developer { 35*68017707SAndroid Build Coastguard Worker id by "JetBrains" 36*68017707SAndroid Build Coastguard Worker name by "JetBrains Team" 37*68017707SAndroid Build Coastguard Worker organization by "JetBrains" 38*68017707SAndroid Build Coastguard Worker organizationUrl by "https://www.jetbrains.com" 39*68017707SAndroid Build Coastguard Worker } 40*68017707SAndroid Build Coastguard Worker } 41*68017707SAndroid Build Coastguard Worker 42*68017707SAndroid Build Coastguard Worker scm { 43*68017707SAndroid Build Coastguard Worker url by "https://github.com/Kotlin/kotlinx.atomicfu" 44*68017707SAndroid Build Coastguard Worker } 45*68017707SAndroid Build Coastguard Worker } 46*68017707SAndroid Build Coastguard Worker mavenRepositoryUrinull47*68017707SAndroid Build Coastguard Workerfun mavenRepositoryUri(): URI { 48*68017707SAndroid Build Coastguard Worker val repositoryId: String? = System.getenv("libs.repository.id") 49*68017707SAndroid Build Coastguard Worker return if (repositoryId == null) { 50*68017707SAndroid Build Coastguard Worker // Using implicitly created staging, for MPP it's likely to be a mistake because 51*68017707SAndroid Build Coastguard Worker // publication on TeamCity will create 3 independent staging repositories 52*68017707SAndroid Build Coastguard Worker URI("https://oss.sonatype.org/service/local/staging/deploy/maven2/") 53*68017707SAndroid Build Coastguard Worker } else { 54*68017707SAndroid Build Coastguard Worker URI("https://oss.sonatype.org/service/local/staging/deployByRepositoryId/$repositoryId") 55*68017707SAndroid Build Coastguard Worker } 56*68017707SAndroid Build Coastguard Worker } 57*68017707SAndroid Build Coastguard Worker configureMavenPublicationnull58*68017707SAndroid Build Coastguard Workerfun configureMavenPublication(rh: RepositoryHandler, project: Project) { 59*68017707SAndroid Build Coastguard Worker rh.maven { 60*68017707SAndroid Build Coastguard Worker url = mavenRepositoryUri() 61*68017707SAndroid Build Coastguard Worker credentials { 62*68017707SAndroid Build Coastguard Worker username = project.getSensitiveProperty("libs.sonatype.user") 63*68017707SAndroid Build Coastguard Worker password = project.getSensitiveProperty("libs.sonatype.password") 64*68017707SAndroid Build Coastguard Worker } 65*68017707SAndroid Build Coastguard Worker } 66*68017707SAndroid Build Coastguard Worker } 67*68017707SAndroid Build Coastguard Worker signPublicationIfKeyPresentnull68*68017707SAndroid Build Coastguard Workerfun signPublicationIfKeyPresent(project: Project, publication: MavenPublication) { 69*68017707SAndroid Build Coastguard Worker val keyId = project.getSensitiveProperty("libs.sign.key.id") 70*68017707SAndroid Build Coastguard Worker val signingKey = project.getSensitiveProperty("libs.sign.key.private") 71*68017707SAndroid Build Coastguard Worker val signingKeyPassphrase = project.getSensitiveProperty("libs.sign.passphrase") 72*68017707SAndroid Build Coastguard Worker if (!signingKey.isNullOrBlank()) { 73*68017707SAndroid Build Coastguard Worker project.extensions.configure<SigningExtension>("signing") { 74*68017707SAndroid Build Coastguard Worker useInMemoryPgpKeys(keyId, signingKey, signingKeyPassphrase) 75*68017707SAndroid Build Coastguard Worker sign(publication) 76*68017707SAndroid Build Coastguard Worker } 77*68017707SAndroid Build Coastguard Worker } 78*68017707SAndroid Build Coastguard Worker } 79*68017707SAndroid Build Coastguard Worker getSensitivePropertynull80*68017707SAndroid Build Coastguard Workerprivate fun Project.getSensitiveProperty(name: String): String? { 81*68017707SAndroid Build Coastguard Worker return project.findProperty(name) as? String ?: System.getenv(name) 82*68017707SAndroid Build Coastguard Worker } 83