kotlin multiplatform and proto kind of working?
This commit is contained in:
parent
5bb5f42af0
commit
6dce641d6b
9 changed files with 207 additions and 22 deletions
|
|
@ -50,4 +50,4 @@ class IntelliJPattern : Plugin<Project> {
|
|||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import org.gradle.api.tasks.SourceSetContainer
|
|||
import org.gradle.kotlin.dsl.findByType
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
|
||||
|
||||
class KotlinProjectConfiguration : Plugin<Project> {
|
||||
class KotlinJvmProjectConfiguration : Plugin<Project> {
|
||||
|
||||
override fun apply(project: Project) {
|
||||
addSourceSets(project)
|
||||
|
|
@ -15,16 +15,18 @@ class KotlinProjectConfiguration : Plugin<Project> {
|
|||
|
||||
private fun addSourceSets(project: Project) {
|
||||
|
||||
project.extensions.findByType<KotlinJvmProjectExtension>()?.apply {
|
||||
|
||||
project.extensions.findByType<SourceSetContainer>()
|
||||
?.named(SourceSet.MAIN_SOURCE_SET_NAME)
|
||||
?.configure {
|
||||
java {
|
||||
srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/java"))
|
||||
srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/kotlin"))
|
||||
project.beforeEvaluate {
|
||||
extensions.findByType<KotlinJvmProjectExtension>()?.apply {
|
||||
extensions.findByType<SourceSetContainer>()
|
||||
?.named(SourceSet.MAIN_SOURCE_SET_NAME)
|
||||
?.configure {
|
||||
java {
|
||||
srcDir(layout.buildDirectory.dir("pbAndG/generated-sources/java"))
|
||||
srcDir(layout.buildDirectory.dir("pbAndG/generated-sources/kotlin"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// val srcSet = project.extensions.getByName<SourceSet>(SourceSet.MAIN_SOURCE_SET_NAME)
|
||||
//
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
package dev.adamko.gradle.pbandg.pattern
|
||||
|
||||
import org.gradle.api.Plugin
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.kotlin.dsl.findByType
|
||||
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
|
||||
|
||||
class KotlinMultiplatformProjectConfiguration : Plugin<Project> {
|
||||
|
||||
override fun apply(project: Project) {
|
||||
project.afterEvaluate {
|
||||
addSourceSets(this)
|
||||
}
|
||||
}
|
||||
|
||||
private fun addSourceSets(project: Project) {
|
||||
|
||||
project.extensions.findByType<KotlinMultiplatformExtension>()?.apply {
|
||||
project.logger.lifecycle("Kotlin Multiplatform source sets: ${sourceSets.joinToString { "${it.name} / ${it.kotlin.sourceDirectories.files.joinToString()}" }}")
|
||||
|
||||
sourceSets.whenObjectAdded {
|
||||
this.name
|
||||
}
|
||||
//
|
||||
// val protoJvm = this.sourceSets.maybeCreate("protoJvm").apply {
|
||||
// kotlin.srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/java"))
|
||||
// kotlin.srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/kotlin"))
|
||||
// }
|
||||
//
|
||||
// val protoTypescript = this.sourceSets.maybeCreate("protoJvm").apply {
|
||||
// kotlin.srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/typescript"))
|
||||
// }
|
||||
|
||||
this.sourceSets.named("jvmMain").configure {
|
||||
// dependsOn(protoJvm)
|
||||
kotlin.srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/java"))
|
||||
kotlin.srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/kotlin"))
|
||||
}
|
||||
this.sourceSets.named("jsMain").configure {
|
||||
// dependsOn(protoTypescript)
|
||||
kotlin.srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/typescript"))
|
||||
}
|
||||
|
||||
project.logger.lifecycle("Kotlin Multiplatform source sets: ${sourceSets.joinToString { "${it.name} / ${it.kotlin.sourceDirectories.files.joinToString()}" }}")
|
||||
|
||||
//
|
||||
// targets .forEach {
|
||||
// when (it.platformType){
|
||||
// KotlinPlatformType.jvm -> TODO()
|
||||
// KotlinPlatformType.js -> {
|
||||
// it.defaultConfigurationName
|
||||
// }
|
||||
// KotlinPlatformType.androidJvm -> {}
|
||||
// KotlinPlatformType.common -> {}
|
||||
// KotlinPlatformType.native -> {}
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
package dev.adamko.gradle.pbandg
|
||||
|
||||
import dev.adamko.gradle.pbandg.pattern.IntelliJPattern
|
||||
import dev.adamko.gradle.pbandg.pattern.KotlinProjectConfiguration
|
||||
import dev.adamko.gradle.pbandg.pattern.KotlinJvmProjectConfiguration
|
||||
import dev.adamko.gradle.pbandg.pattern.KotlinMultiplatformProjectConfiguration
|
||||
import dev.adamko.gradle.pbandg.settings.PBAndGSettings
|
||||
import dev.adamko.gradle.pbandg.task.ProtobufCompileTask
|
||||
import dev.adamko.gradle.pbandg.task.ProtobufPrepareLibrariesTask
|
||||
|
|
@ -24,8 +24,15 @@ plugins {
|
|||
//if (plugins.hasPlugin(IdeaPlugin::class)) {
|
||||
// IntelliJPattern().apply(project)
|
||||
//}
|
||||
if (plugins.hasPlugin("org.jetbrains.kotlin.jvm")) {
|
||||
KotlinProjectConfiguration().apply(project)
|
||||
|
||||
plugins.withId("org.jetbrains.kotlin.jvm") {
|
||||
logger.info("Configuring Kotlin JVM plugin for PB&G")
|
||||
KotlinJvmProjectConfiguration().apply(project)
|
||||
}
|
||||
|
||||
plugins.withId("org.jetbrains.kotlin.multiplatform") {
|
||||
logger.info("Configuring Kotlin Multiplatform plugin for PB&G")
|
||||
KotlinMultiplatformProjectConfiguration().apply(project)
|
||||
}
|
||||
|
||||
val pbAndGSettings =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue