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.
43 lines
1.8 KiB
43 lines
1.8 KiB
package org.jetbrains.compose.desktop.preview.internal |
|
|
|
import org.gradle.api.Project |
|
import org.jetbrains.compose.desktop.DesktopExtension |
|
import org.jetbrains.compose.desktop.application.internal.JvmApplicationRuntimeFilesProvider |
|
import org.jetbrains.compose.desktop.preview.tasks.AbstractConfigureDesktopPreviewTask |
|
import org.jetbrains.compose.internal.* |
|
import org.jetbrains.compose.internal.utils.uppercaseFirstChar |
|
import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget |
|
|
|
fun Project.initializePreview(desktopExtension: DesktopExtension) { |
|
plugins.withId(KOTLIN_MPP_PLUGIN_ID) { |
|
mppExt.targets.withType(KotlinJvmTarget::class.java) { target -> |
|
val runtimeFilesProvider = JvmApplicationRuntimeFilesProvider.FromKotlinMppTarget(target) |
|
registerConfigurePreviewTask(project, runtimeFilesProvider, targetName = target.name) |
|
} |
|
} |
|
plugins.withId(KOTLIN_JVM_PLUGIN_ID) { |
|
val sourceSet = project.javaSourceSets.getByName("main") |
|
val runtimeFilesProvider = JvmApplicationRuntimeFilesProvider.FromGradleSourceSet(sourceSet) |
|
registerConfigurePreviewTask(project, runtimeFilesProvider) |
|
} |
|
} |
|
|
|
private fun registerConfigurePreviewTask( |
|
project: Project, |
|
runtimeFilesProvider: JvmApplicationRuntimeFilesProvider, |
|
targetName: String = "" |
|
) { |
|
val runtimeFiles = runtimeFilesProvider.jvmApplicationRuntimeFiles(project) |
|
project.tasks.register( |
|
previewTaskName(targetName), |
|
AbstractConfigureDesktopPreviewTask::class.java |
|
) { previewTask -> |
|
runtimeFiles.configureUsageBy(previewTask) { (runtimeJars, _) -> |
|
previewClasspath = runtimeJars |
|
skikoRuntime = tryGetSkikoRuntimeIfNeeded() |
|
} |
|
} |
|
} |
|
|
|
private fun previewTaskName(targetName: String) = |
|
"configureDesktopPreview${targetName.uppercaseFirstChar()}" |