You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.6 KiB
47 lines
1.6 KiB
/* |
|
* Copyright 2020-2021 JetBrains s.r.o. and respective authors and developers. |
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file. |
|
*/ |
|
import org.gradle.api.* |
|
import org.gradle.api.tasks.Internal |
|
|
|
abstract class AbstractComposePublishingTask : DefaultTask() { |
|
@get:Internal |
|
lateinit var repository: String |
|
|
|
private val composeProperties by lazy { |
|
ComposeProperties(project) |
|
} |
|
private val isOelPublication: Boolean by lazy { |
|
composeProperties.isOelPublication |
|
} |
|
private val targetPlatforms: Set<ComposePlatforms> by lazy { |
|
composeProperties.targetPlatforms |
|
} |
|
|
|
abstract fun dependsOnComposeTask(task: String) |
|
|
|
fun publish(project: String, publications: Collection<String>) { |
|
for (publication in publications) { |
|
dependsOnComposeTask("$project:publish${publication}PublicationTo$repository") |
|
} |
|
} |
|
|
|
fun publish(project: String, publications: Collection<String>, onlyWithPlatforms: Set<ComposePlatforms>) { |
|
if (onlyWithPlatforms.any { it in targetPlatforms }) { |
|
publish(project, publications) |
|
} |
|
} |
|
|
|
fun publishMultiplatform(component: ComposeComponent) { |
|
dependsOnComposeTask("${component.path}:publish${ComposePlatforms.KotlinMultiplatform.name}PublicationTo$repository") |
|
|
|
for (platform in targetPlatforms) { |
|
if (platform !in component.supportedPlatforms) continue |
|
|
|
if (platform in ComposePlatforms.ANDROID && isOelPublication) continue |
|
|
|
dependsOnComposeTask("${component.path}:publish${platform.name}PublicationTo$repository") |
|
} |
|
} |
|
} |