Frontend/protocol/build.gradle.kts (85 lines of code) (raw):
import com.jetbrains.rd.generator.gradle.RdGenTask
plugins {
// Version is configured in gradle.properties
id("com.jetbrains.rdgen")
id("org.jetbrains.kotlin.jvm")
}
repositories {
maven("https://cache-redirector.jetbrains.com/intellij-dependencies")
maven("https://cache-redirector.jetbrains.com/maven-central")
val rd_version: String? by project
if (rd_version == "SNAPSHOT") {
mavenLocal()
}
}
val isMonorepo = rootProject.projectDir != projectDir.parentFile
val forTeaRepoRoot: File = projectDir.parentFile.parentFile
sourceSets {
main {
kotlin {
srcDir(forTeaRepoRoot.resolve("Frontend/protocol/src/main/kotlin/model"))
}
}
}
data class ForTeaGeneratorSettings(val csOutput: File, val ktOutput: File, val suffix: String)
val generatorOutputSettings = if (isMonorepo) {
val monorepoRoot =
buildscript.sourceFile?.parentFile?.parentFile?.parentFile?.parentFile?.parentFile?.parentFile ?: error("Cannot find products home")
check(monorepoRoot.resolve(".ultimate.root.marker").isFile) {
error("Incorrect location in monorepo: monorepoRoot='$monorepoRoot'")
}
val pregeneratedMonorepoPath = monorepoRoot.resolve("dotnet/Plugins/_ForTea.Pregenerated")
ForTeaGeneratorSettings(
pregeneratedMonorepoPath.resolve("BackendModel"),
pregeneratedMonorepoPath.resolve("Frontend/src/com/jetbrains/fortea/model"),
".Pregenerated"
)
} else {
val riderBackendPluginPath = forTeaRepoRoot.resolve("Backend/RiderPlugin/ForTea.RiderPlugin")
ForTeaGeneratorSettings(
riderBackendPluginPath.resolve("Model"),
forTeaRepoRoot.resolve("Frontend/src/generated/kotlin/com/jetbrains/fortea/model"),
""
)
}
rdgen {
verbose = true
packages = "model"
generator {
language = "kotlin"
transform = "asis"
root = "com.jetbrains.rider.model.nova.ide.IdeRoot"
namespace = "com.jetbrains.rider.model"
directory = generatorOutputSettings.ktOutput.absolutePath
generatedFileSuffix = generatorOutputSettings.suffix
}
generator {
language = "csharp"
transform = "reversed"
root = "com.jetbrains.rider.model.nova.ide.IdeRoot"
namespace = "JetBrains.Rider.Model"
directory = generatorOutputSettings.csOutput.absolutePath
generatedFileSuffix = generatorOutputSettings.suffix
}
}
tasks.withType<RdGenTask> {
dependsOn(sourceSets["main"].runtimeClasspath)
classpath(sourceSets["main"].runtimeClasspath)
}
dependencies {
if (isMonorepo) {
implementation(project(":rider-model"))
} else {
val rdVersion: String by project
val rdKotlinVersion: String by project
implementation("com.jetbrains.rd:rd-gen:$rdVersion")
implementation("org.jetbrains.kotlin:kotlin-stdlib:$rdKotlinVersion")
implementation(
project(
mapOf(
"path" to ":",
"configuration" to "riderModel"
)
)
)
}
}