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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val genSrcDir = project.layout.buildDirectory.dir("protobuf/generated-sources")
|
val genSrcDir = project.layout.buildDirectory.dir("pbAndG/generated-sources")
|
||||||
val ktGenSrc = genSrcDir.map { it.dir("kotlin") }
|
val ktGenSrc = genSrcDir.map { it.dir("kotlin").asFile }
|
||||||
val jGenSrc = genSrcDir.map { it.dir("java") }
|
val jGenSrc = genSrcDir.map { it.dir("java").asFile }
|
||||||
|
|
||||||
|
val protoSrc = project.layout.projectDirectory.dir("src/main/proto").asFile
|
||||||
|
|
||||||
project.mkdir(ktGenSrc)
|
project.mkdir(ktGenSrc)
|
||||||
project.mkdir(jGenSrc)
|
project.mkdir(jGenSrc)
|
||||||
|
|
||||||
project.plugins.withType<IdeaPlugin> {
|
project.plugins.withType<IdeaPlugin> {
|
||||||
project.extensions.configure<IdeaModel> {
|
project.extensions.configure<IdeaModel> {
|
||||||
this.module.generatedSourceDirs.add(ktGenSrc.get().asFile)
|
module {
|
||||||
this.module.generatedSourceDirs.add(jGenSrc.get().asFile)
|
generatedSourceDirs.add(ktGenSrc.get())
|
||||||
|
generatedSourceDirs.add(jGenSrc.get())
|
||||||
|
sourceDirs.add(protoSrc)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,39 +1,44 @@
|
||||||
package dev.adamko.gradle.pbandg.pattern
|
package dev.adamko.gradle.pbandg.pattern
|
||||||
|
|
||||||
import dev.adamko.gradle.pbandg.task.ProtobufCompileTask
|
|
||||||
import org.gradle.api.Plugin
|
import org.gradle.api.Plugin
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.api.tasks.SourceSet
|
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.findByType
|
||||||
import org.gradle.kotlin.dsl.getByName
|
|
||||||
import org.gradle.kotlin.dsl.withType
|
|
||||||
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
|
import org.jetbrains.kotlin.gradle.dsl.KotlinJvmProjectExtension
|
||||||
|
|
||||||
class KotlinProjectConfiguration : Plugin<Project> {
|
class KotlinProjectConfiguration : Plugin<Project> {
|
||||||
|
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
addSourceSets(project)
|
addSourceSets(project)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addSourceSets(project: Project) {
|
private fun addSourceSets(project: Project) {
|
||||||
|
|
||||||
project.extensions.findByType<KotlinJvmProjectExtension>()?.apply {
|
project.extensions.findByType<KotlinJvmProjectExtension>()?.apply {
|
||||||
|
|
||||||
val srcSet = project.extensions.getByName<SourceSet>(SourceSet.MAIN_SOURCE_SET_NAME)
|
project.extensions.findByType<SourceSetContainer>()
|
||||||
|
?.named(SourceSet.MAIN_SOURCE_SET_NAME)
|
||||||
project.tasks
|
?.configure {
|
||||||
.withType<ProtobufCompileTask>()
|
java {
|
||||||
.map { it.generatedSources.get() }
|
srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/java"))
|
||||||
.forEach { generatedSourcesDir ->
|
srcDir(project.layout.buildDirectory.dir("pbAndG/generated-sources/kotlin"))
|
||||||
project.logger.lifecycle("-------\nadding generated sources $generatedSourcesDir\n-------")
|
|
||||||
|
|
||||||
srcSet.java {
|
|
||||||
srcDir(generatedSourcesDir.dir("java"))
|
|
||||||
srcDir(generatedSourcesDir.dir("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
|
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.settings.PBAndGSettings
|
||||||
import dev.adamko.gradle.pbandg.task.ProtobufCompileTask
|
import dev.adamko.gradle.pbandg.task.ProtobufCompileTask
|
||||||
import dev.adamko.gradle.pbandg.task.ProtobufPrepareLibrariesTask
|
import dev.adamko.gradle.pbandg.task.ProtobufPrepareLibrariesTask
|
||||||
|
|
@ -20,11 +22,11 @@ plugins {
|
||||||
// val pbSrcSet = project.objects.sourceDirectorySet("protobuf", "protobuf")
|
// val pbSrcSet = project.objects.sourceDirectorySet("protobuf", "protobuf")
|
||||||
|
|
||||||
//if (plugins.hasPlugin(IdeaPlugin::class)) {
|
//if (plugins.hasPlugin(IdeaPlugin::class)) {
|
||||||
// apply(IntelliJPattern())
|
// IntelliJPattern().apply(project)
|
||||||
//}
|
|
||||||
//if (plugins.hasPlugin("org.jetbrains.kotlin.jvm")) {
|
|
||||||
// apply(KotlinProjectConfiguration())
|
|
||||||
//}
|
//}
|
||||||
|
if (plugins.hasPlugin("org.jetbrains.kotlin.jvm")) {
|
||||||
|
KotlinProjectConfiguration().apply(project)
|
||||||
|
}
|
||||||
|
|
||||||
val pbAndGSettings =
|
val pbAndGSettings =
|
||||||
project.extensions.create(Constants.PBG_SETTINGS_NAME, PBAndGSettings::class, project)
|
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
|
import dev.adamko.gradle.pbandg.settings.PBAndGSettings
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
package dev.adamko.gradle.pbandg.task.options
|
package dev.adamko.gradle.pbandg.task.options
|
||||||
|
|
||||||
import dev.adamko.gradle.pbandg.Constants.pbAndGBuildDir
|
|
||||||
import java.io.Serializable
|
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 {
|
interface ProtocOutput : Serializable {
|
||||||
|
|
@ -12,10 +8,6 @@ interface ProtocOutput : Serializable {
|
||||||
val protocOptions: String
|
val protocOptions: String
|
||||||
val outputDirectoryName: String
|
val outputDirectoryName: String
|
||||||
|
|
||||||
fun outputDirectory(layout: ProjectLayout): Provider<Directory> {
|
|
||||||
return layout.pbAndGBuildDir.map { it.dir(outputDirectoryName) }
|
|
||||||
}
|
|
||||||
|
|
||||||
data class KotlinOutput(
|
data class KotlinOutput(
|
||||||
override val protocOptions: String = "lite",
|
override val protocOptions: String = "lite",
|
||||||
override val outputDirectoryName: String = "kotlin",
|
override val outputDirectoryName: String = "kotlin",
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,15 @@ val buildDir: Directory = layout.buildDirectory.dir(projectId).get()
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
protobufLibrary("com.google.protobuf:protobuf-javalite:3.19.1")
|
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 {
|
tasks.protobufCompile {
|
||||||
protoFile.set(layout.projectDirectory.file("src/main/proto/FactorioServerLogRecord.proto"))
|
protoFile.set(layout.projectDirectory.file("src/main/proto/FactorioServerLogRecord.proto"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue