pb plugin working really really well
This commit is contained in:
parent
2920f2fcc2
commit
5bb5f42af0
6 changed files with 45 additions and 34 deletions
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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"))
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
package dev.adamko.gradle.pbandg.pattern
|
||||
package dev.adamko.gradle.pbandg.task
|
||||
|
||||
|
||||
import dev.adamko.gradle.pbandg.settings.PBAndGSettings
|
||||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue