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