diff --git a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/IntelliJPattern.kt b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/IntelliJPattern.kt index 1624641..4adc9d2 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/IntelliJPattern.kt +++ b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/IntelliJPattern.kt @@ -24,17 +24,22 @@ class IntelliJPattern : Plugin { return } - val genSrcDir = project.layout.buildDirectory.dir("protobuf/generated-sources") - val ktGenSrc = genSrcDir.map { it.dir("kotlin") } - val jGenSrc = genSrcDir.map { it.dir("java") } + val genSrcDir = project.layout.buildDirectory.dir("pbAndG/generated-sources") + val ktGenSrc = genSrcDir.map { it.dir("kotlin").asFile } + val jGenSrc = genSrcDir.map { it.dir("java").asFile } + + val protoSrc = project.layout.projectDirectory.dir("src/main/proto").asFile project.mkdir(ktGenSrc) project.mkdir(jGenSrc) project.plugins.withType { project.extensions.configure { - this.module.generatedSourceDirs.add(ktGenSrc.get().asFile) - this.module.generatedSourceDirs.add(jGenSrc.get().asFile) + module { + generatedSourceDirs.add(ktGenSrc.get()) + generatedSourceDirs.add(jGenSrc.get()) + sourceDirs.add(protoSrc) + } } } diff --git a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/KotlinProjectConfiguration.kt b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/KotlinProjectConfiguration.kt index f30af8c..cdcca3c 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/KotlinProjectConfiguration.kt +++ b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/KotlinProjectConfiguration.kt @@ -1,39 +1,44 @@ package dev.adamko.gradle.pbandg.pattern -import dev.adamko.gradle.pbandg.task.ProtobufCompileTask import org.gradle.api.Plugin import org.gradle.api.Project import org.gradle.api.tasks.SourceSet -import org.gradle.kotlin.dsl.dependencies +import org.gradle.api.tasks.SourceSetContainer import org.gradle.kotlin.dsl.findByType -import org.gradle.kotlin.dsl.getByName -import org.gradle.kotlin.dsl.withType import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension class KotlinProjectConfiguration : Plugin { override fun apply(project: Project) { addSourceSets(project) - } private fun addSourceSets(project: Project) { project.extensions.findByType()?.apply { - val srcSet = project.extensions.getByName(SourceSet.MAIN_SOURCE_SET_NAME) - - project.tasks - .withType() - .map { it.generatedSources.get() } - .forEach { generatedSourcesDir -> - project.logger.lifecycle("-------\nadding generated sources $generatedSourcesDir\n-------") - - srcSet.java { - srcDir(generatedSourcesDir.dir("java")) - srcDir(generatedSourcesDir.dir("kotlin")) + project.extensions.findByType() + ?.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")) } } + +// val srcSet = project.extensions.getByName(SourceSet.MAIN_SOURCE_SET_NAME) +// +// project.tasks +// .withType() +// .map { it.generatedSources.get() } +// .forEach { generatedSourcesDir -> +// project.logger.lifecycle("-------\nadding generated sources $generatedSourcesDir\n-------") +// +// srcSet.java { +// srcDir(generatedSourcesDir.dir("java")) +// srcDir(generatedSourcesDir.dir("kotlin")) +// } +// } } } } diff --git a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pb-and-g.gradle.kts b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pb-and-g.gradle.kts index bfb6635..c015322 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pb-and-g.gradle.kts +++ b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pb-and-g.gradle.kts @@ -1,5 +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.settings.PBAndGSettings import dev.adamko.gradle.pbandg.task.ProtobufCompileTask import dev.adamko.gradle.pbandg.task.ProtobufPrepareLibrariesTask @@ -20,11 +22,11 @@ plugins { // val pbSrcSet = project.objects.sourceDirectorySet("protobuf", "protobuf") //if (plugins.hasPlugin(IdeaPlugin::class)) { -// apply(IntelliJPattern()) -//} -//if (plugins.hasPlugin("org.jetbrains.kotlin.jvm")) { -// apply(KotlinProjectConfiguration()) +// IntelliJPattern().apply(project) //} +if (plugins.hasPlugin("org.jetbrains.kotlin.jvm")) { + KotlinProjectConfiguration().apply(project) +} val pbAndGSettings = project.extensions.create(Constants.PBG_SETTINGS_NAME, PBAndGSettings::class, project) diff --git a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/ProtocPrepareTask.kt b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/task/ProtocPrepareTask.kt similarity index 97% rename from buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/ProtocPrepareTask.kt rename to buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/task/ProtocPrepareTask.kt index 63b7c9e..75445b4 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/pattern/ProtocPrepareTask.kt +++ b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/task/ProtocPrepareTask.kt @@ -1,4 +1,4 @@ -package dev.adamko.gradle.pbandg.pattern +package dev.adamko.gradle.pbandg.task import dev.adamko.gradle.pbandg.settings.PBAndGSettings diff --git a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/task/options/ProtocOutput.kt b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/task/options/ProtocOutput.kt index 966fab2..a5b33c5 100644 --- a/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/task/options/ProtocOutput.kt +++ b/buildSrc/src/main/kotlin/dev/adamko/gradle/pbandg/task/options/ProtocOutput.kt @@ -1,10 +1,6 @@ package dev.adamko.gradle.pbandg.task.options -import dev.adamko.gradle.pbandg.Constants.pbAndGBuildDir import java.io.Serializable -import org.gradle.api.file.Directory -import org.gradle.api.file.ProjectLayout -import org.gradle.api.provider.Provider interface ProtocOutput : Serializable { @@ -12,10 +8,6 @@ interface ProtocOutput : Serializable { val protocOptions: String val outputDirectoryName: String - fun outputDirectory(layout: ProjectLayout): Provider { - return layout.pbAndGBuildDir.map { it.dir(outputDirectoryName) } - } - data class KotlinOutput( override val protocOptions: String = "lite", override val outputDirectoryName: String = "kotlin", diff --git a/modules/factorio-events-data-model/build.gradle.kts b/modules/factorio-events-data-model/build.gradle.kts index 3dba8ca..4787ac5 100644 --- a/modules/factorio-events-data-model/build.gradle.kts +++ b/modules/factorio-events-data-model/build.gradle.kts @@ -10,8 +10,15 @@ val buildDir: Directory = layout.buildDirectory.dir(projectId).get() dependencies { protobufLibrary("com.google.protobuf:protobuf-javalite:3.19.1") + + api("com.google.protobuf:protobuf-javalite:3.19.1") + api("com.google.protobuf:protobuf-kotlin-lite:3.19.1") } tasks.protobufCompile { protoFile.set(layout.projectDirectory.file("src/main/proto/FactorioServerLogRecord.proto")) } + +sourceSets { + +}