Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import org.gradle.api.tasks.testing.logging.TestLogEvent
import org.gradle.kotlin.dsl.invoke
import org.jmailen.gradle.kotlinter.tasks.FormatTask
import org.jmailen.gradle.kotlinter.tasks.LintTask

Expand Down Expand Up @@ -36,6 +37,7 @@ protobuf.protoc {
artifact = libs.protobuf.protoc.get().toString()
}


/* Testing */
tasks.test {
useJUnitPlatform()
Expand Down Expand Up @@ -102,6 +104,9 @@ sourceSets.main {
tasks["lintKotlinMain"].dependsOn("formatKotlin")
tasks["check"].dependsOn("jacocoTestReport")
tasks["compileJava"].dependsOn("generateSteamLanguage", "generateProjectVersion", "generateRpcMethods")
tasks["compileKotlin"].dependsOn("generateSteamLanguage", "generateProjectVersion", "generateRpcMethods")
tasks["generateRpcMethods"].dependsOn("extractProto", "extractIncludeProto")

// tasks["build"].finalizedBy("dokkaGenerate")

/* Kotlinter */
Expand Down
33 changes: 26 additions & 7 deletions buildSrc/src/main/kotlin/in/dragonbra/generators/rpc/RpcGenTask.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ package `in`.dragonbra.generators.rpc

import `in`.dragonbra.generators.rpc.parser.ProtoParser
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import java.io.File
import javax.inject.Inject

open class RpcGenTask : DefaultTask() {
abstract class RpcGenTask : DefaultTask {

companion object {
private const val KDOC_AUTHOR = "Lossy"
Expand All @@ -18,16 +21,32 @@ open class RpcGenTask : DefaultTask() {
.trimMargin()
}

private val outputDir = File(
project.layout.buildDirectory.get().asFile,
"generated/source/javasteam/main/java/"
)

private val protoDirectory = project.file("src/main/proto")
@InputDirectory
abstract fun getProtoDirectory(): DirectoryProperty

@OutputDirectory
abstract fun getOutputDir(): DirectoryProperty

@Inject
constructor() {
getOutputDir().convention(
project.layout.buildDirectory.dir(
"generated/source/javasteam/main/java/"
)
)
getProtoDirectory().convention(
project.layout.projectDirectory.dir(
"src/main/proto"
)
)
}

@TaskAction
fun generate() {
println("Generating RPC service methods as interfaces")
val outputDir = getOutputDir().get().asFile
val protoDirectory = getProtoDirectory().get().asFile

outputDir.mkdirs()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,27 +8,51 @@ import `in`.dragonbra.generators.steamlanguage.parser.token.TokenAnalyzer
import org.apache.commons.io.FileUtils
import org.apache.commons.io.IOUtils
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.InputDirectory
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import java.io.File
import java.io.FileInputStream
import javax.inject.Inject

open class SteamLanguageGenTask : DefaultTask() {
abstract class SteamLanguageGenTask : DefaultTask {

private val outputDir = File(
project.layout.buildDirectory.get().asFile,
"generated/source/steamd/main/java/in/dragonbra/javasteam"
)
private companion object {
private const val PKG = "in.dragonbra.javasteam"
}

private val inputFile = project.file("src/main/steamd/in/dragonbra/javasteam/steammsg.steamd")
@Input
abstract fun getInputPkg(): Property<String>

private val pkg = "in.dragonbra.javasteam"
@InputFile
abstract fun getInputFile(): RegularFileProperty

@InputDirectory
fun getInputDirectory(): File = project.file("src/main/steamd/")
@OutputDirectory
abstract fun getOutputDir(): DirectoryProperty

@Inject
constructor() {
getInputPkg().convention(PKG)
getInputFile().convention {
project.file("src/main/steamd/in/dragonbra/javasteam/steammsg.steamd")
}
getOutputDir().convention(
project.layout.buildDirectory.dir(
"generated/source/steamd/main/java/in/dragonbra/javasteam"
)
)
}

@TaskAction
fun generate() {
val pkg = getInputPkg().get()
val inputFile = getInputFile().get().asFile
val outputDir = getOutputDir().get().asFile

val buffer = IOUtils.toString(FileInputStream(inputFile), "utf-8")
val tokens = LanguageParser.tokenizeString(buffer, inputFile.name)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,45 @@ package `in`.dragonbra.generators.versions

import `in`.dragonbra.generators.versions.generator.JavaGen
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import java.io.File
import javax.inject.Inject

open class VersionGenTask : DefaultTask() {
abstract class VersionGenTask : DefaultTask {

private companion object {
private const val CLASS_NAME = "Versions"
private const val PACKAGE = "in.dragonbra.javasteam.util"
}

private val outputDir = File(
project.layout.buildDirectory.get().asFile,
"generated/source/javasteam/main/java/in/dragonbra/javasteam/util"
)
@Input
abstract fun getClassName(): Property<String>

@Input
abstract fun getPackage(): Property<String>

@OutputDirectory
abstract fun getOutputDir(): DirectoryProperty

@Inject
constructor() {
getClassName().convention(CLASS_NAME)
getPackage().convention(PACKAGE)
getOutputDir().convention(
project.layout.buildDirectory.dir(
"generated/source/javasteam/main/java/in/dragonbra/javasteam/util"
)
)
}

@TaskAction
fun generate() {
println("Generating version class")
JavaGen(PACKAGE, outputDir).run {
emit(CLASS_NAME, project.version.toString())
JavaGen(getPackage().get(), getOutputDir().get().asFile).run {
emit(getClassName().get(), project.version.toString())
flush()
close()
}
Expand Down