pb plugin working really really well

This commit is contained in:
Adam 2021-10-31 09:13:41 +01:00
parent 2920f2fcc2
commit 5bb5f42af0
6 changed files with 45 additions and 34 deletions

View file

@ -24,17 +24,22 @@ class IntelliJPattern : Plugin<Project> {
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<IdeaPlugin> {
project.extensions.configure<IdeaModel> {
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)
}
}
}

View file

@ -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<Project> {
override fun apply(project: Project) {
addSourceSets(project)
}
private fun addSourceSets(project: Project) {
project.extensions.findByType<KotlinJvmProjectExtension>()?.apply {
val srcSet = project.extensions.getByName<SourceSet>(SourceSet.MAIN_SOURCE_SET_NAME)
project.tasks
.withType<ProtobufCompileTask>()
.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<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"))
}
}
// val srcSet = project.extensions.getByName<SourceSet>(SourceSet.MAIN_SOURCE_SET_NAME)
//
// project.tasks
// .withType<ProtobufCompileTask>()
// .map { it.generatedSources.get() }
// .forEach { generatedSourcesDir ->
// project.logger.lifecycle("-------\nadding generated sources $generatedSourcesDir\n-------")
//
// srcSet.java {
// srcDir(generatedSourcesDir.dir("java"))
// srcDir(generatedSourcesDir.dir("kotlin"))
// }
// }
}
}
}

View file

@ -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)

View file

@ -1,4 +1,4 @@
package dev.adamko.gradle.pbandg.pattern
package dev.adamko.gradle.pbandg.task
import dev.adamko.gradle.pbandg.settings.PBAndGSettings

View file

@ -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<Directory> {
return layout.pbAndGBuildDir.map { it.dir(outputDirectoryName) }
}
data class KotlinOutput(
override val protocOptions: String = "lite",
override val outputDirectoryName: String = "kotlin",

View file

@ -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 {
}