blob: d4350496c6e1255b34da91d62bdbf81a03503430 [file] [log] [blame] [edit]
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
ext.manifestAttributes = { Manifest manifest, Project project, String component = null, boolean multiRelease = false ->
project.configure(manifest) {
attributes \
'Implementation-Vendor': 'JetBrains',
'Implementation-Title': project.archivesBaseName,
'Implementation-Version': project.buildNumber
if (component != null) {
attributes \
'Kotlin-Runtime-Component': component,
'Kotlin-Version': project.kotlinLanguageVersion
}
if (multiRelease) {
attributes \
'Multi-Release': 'true'
}
}
}
task preparePublication {
def properties = project.properties
assert project.version != 'unspecified'
Map<String, String> repositoryProviders = ['sonatype-nexus-staging' : 'sonatype', 'sonatype-nexus-snapshots' : 'sonatype']
project.ext.isRelease = !project.version.toString().contains('-SNAPSHOT')
String repo = properties["deployRepo"] ?: properties['deploy-repo']
String repoProvider = repositoryProviders.get(repo, repo)
project.ext.isSonatypePublish = repoProvider == 'sonatype'
project.ext.isSonatypeRelease = isSonatypePublish && isRelease
String deployRepoUrl = properties["deployRepoUrl"] ?: properties["deploy-url"]
String deployFolder = properties["deployRepoFolder"] != null ? "file://${rootProject.buildDir}/${properties["deployRepoFolder"]}" : null
String sonatypeSnapshotsUrl = (isSonatypePublish && !isRelease) ? "https://oss.sonatype.org/content/repositories/snapshots/" : null
String deployUrlFromParameters = deployRepoUrl ?: deployFolder ?: sonatypeSnapshotsUrl
project.ext.isDeployStagingRepoGenerationRequired = project.ext.isSonatypeRelease && deployUrlFromParameters == null
ext.repoUrl = deployUrlFromParameters ?: "file://${rootProject.buildDir}/repo"
logger.info("Deployment repository preliminary url: $repoUrl ($repoProvider)")
ext.username = properties["deployRepoUsername"] ?: properties["kotlin.${repoProvider}.user"]
ext.password = properties["deployRepoPassword"] ?: properties["kotlin.${repoProvider}.password"]
doLast {
println("Deployment repository url: $repoUrl")
}
}
ext.configurePublishing = { Project project, configure = { } ->
ArtifactsKt.publish(project, false) { publication ->
configure.delegate = publication
configure()
}
}
ext.configureFrontendIr = { Project project ->
project.tasks.withType(KotlinCompile.class) { task ->
task.kotlinOptions {
if (project.kotlinBuildProperties.useFirForLibraries) {
freeCompilerArgs += "-Xuse-k2"
allWarningsAsErrors = false
}
if (project.properties.renderDiagnosticNames) {
freeCompilerArgs += "-Xrender-internal-diagnostic-names"
}
}
}
}
allprojects { project ->
project.ext.configureSourcesJar = { lambda = {} ->
ArtifactsKt.sourcesJar(project) { task ->
lambda.delegate = task
lambda()
}
}
project.ext.configureJavadocJar = { lambda = {} ->
ArtifactsKt.javadocJar(project) { task ->
lambda.delegate = task
lambda()
}
}
dependencies.ext.kotlinStdlib = { suffix ->
DependenciesKt.kotlinStdlib(project, suffix, null)
}
}