Skip to content

Commit c6488de

Browse files
author
Oleksandr Dzhychko
committed
build(model-api-gen-gradle): introduce subprojects in the test project
The test project is restructured into subprojects in anticipation of an additional test project for Vue.js code generation in the future.
1 parent f6444ce commit c6488de

File tree

13 files changed

+152
-133
lines changed

13 files changed

+152
-133
lines changed
Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1-
node_modules/
2-
dist/
3-
typescript_src/
1+
**/build/
2+
**/dist/
3+
**/node_modules/
4+
**/typescript_src/
Lines changed: 9 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -1,130 +1,16 @@
1-
import com.github.gradle.node.npm.task.NpmSetupTask
2-
3-
buildscript {
4-
repositories {
5-
mavenLocal()
6-
maven { url = uri("https://repo.maven.apache.org/maven2") }
7-
maven { url = uri("https://plugins.gradle.org/m2/") }
8-
mavenCentral()
9-
maven { url = uri("https://artifacts.itemis.cloud/repository/maven-mps/") }
10-
}
11-
12-
dependencies {
13-
}
14-
}
15-
16-
repositories {
17-
mavenLocal()
18-
maven { url = uri("https://repo.maven.apache.org/maven2") }
19-
maven { url = uri("https://plugins.gradle.org/m2/") }
20-
mavenCentral()
21-
maven { url = uri("https://artifacts.itemis.cloud/repository/maven-mps/") }
22-
}
1+
import com.github.gradle.node.NodeExtension
2+
import com.github.gradle.node.NodePlugin
233

244
plugins {
25-
alias(libs.plugins.kotlin.jvm)
265
base
27-
id("org.modelix.model-api-gen")
28-
alias(libs.plugins.node)
29-
}
30-
31-
val mps by configurations.creating
32-
33-
fun scriptFile(relativePath: String): File {
34-
return file("$rootDir/build/$relativePath")
6+
alias(libs.plugins.node) apply false
357
}
368

37-
val mpsDir = buildDir.resolve("mps")
38-
39-
val modelixCoreVersion: String = projectDir.resolve("../version.txt").readText()
40-
41-
val kotlinGenDir = buildDir.resolve("metamodel/kotlin_gen")
42-
43-
dependencies {
44-
mps("com.jetbrains:mps:2021.1.4")
45-
implementation("org.modelix:model-api-gen-runtime:$modelixCoreVersion")
46-
implementation("org.modelix:modelql-typed:$modelixCoreVersion")
47-
implementation("org.modelix:modelql-untyped:$modelixCoreVersion")
48-
49-
testImplementation(kotlin("test"))
50-
testImplementation(kotlin("reflect"))
51-
52-
testImplementation("org.modelix:model-api:$modelixCoreVersion")
53-
testImplementation("org.modelix:model-client:$modelixCoreVersion")
54-
testImplementation("org.modelix:model-server-lib:$modelixCoreVersion")
55-
testImplementation("org.modelix:modelql-client:$modelixCoreVersion")
56-
57-
testImplementation(libs.ktor.server.core)
58-
testImplementation(libs.ktor.server.cors)
59-
testImplementation(libs.ktor.server.netty)
60-
testImplementation(libs.ktor.server.html.builder)
61-
testImplementation(libs.ktor.server.auth)
62-
testImplementation(libs.ktor.server.auth.jwt)
63-
testImplementation(libs.ktor.server.status.pages)
64-
testImplementation(libs.ktor.server.forwarded.header)
65-
testImplementation(libs.ktor.server.websockets)
66-
testImplementation(libs.ktor.server.test.host)
67-
testImplementation(libs.logback.classic)
68-
69-
testImplementation(
70-
files(kotlinGenDir) {
71-
builtBy("generateMetaModelSources")
72-
},
73-
)
74-
}
75-
76-
tasks.test {
77-
useJUnitPlatform()
78-
}
79-
80-
val resolveMps by tasks.registering(Sync::class) {
81-
from(mps.resolve().map { zipTree(it) })
82-
into(mpsDir)
83-
}
84-
85-
sourceSets["main"].kotlin {
86-
srcDir(kotlinGenDir)
87-
}
88-
89-
metamodel {
90-
mpsHeapSize = "2g"
91-
dependsOn(resolveMps)
92-
mpsHome = mpsDir
93-
kotlinDir = kotlinGenDir
94-
modelqlKotlinDir = kotlinGenDir
95-
kotlinProject = project
96-
typescriptDir = projectDir.resolve("typescript_src")
97-
includeNamespace("jetbrains")
98-
exportModules("jetbrains.mps.baseLanguage")
99-
100-
names {
101-
languageClass.prefix = "L_"
102-
languageClass.baseNameConversion = { it.replace(".", "_") }
103-
typedNode.prefix = ""
104-
typedNodeImpl.suffix = "Impl"
9+
subprojects {
10+
plugins.withType<NodePlugin> {
11+
project.extensions.configure<NodeExtension> {
12+
version.set(libs.versions.node)
13+
download.set(true)
14+
}
10515
}
106-
registrationHelperName = "org.modelix.apigen.test.ApigenTestLanguages"
107-
conceptPropertiesInterfaceName = "org.modelix.apigen.test.IMetaConceptProperties"
108-
}
109-
110-
node {
111-
version.set("18.3.0")
112-
npmVersion.set("8.11.0")
113-
download.set(true)
114-
}
115-
116-
tasks.withType<NpmSetupTask> {
117-
dependsOn("generateMetaModelSources")
118-
}
119-
120-
tasks.named("npm_run_build") {
121-
inputs.dir("typescript_src")
122-
inputs.file("package.json")
123-
inputs.file("package-lock.json")
124-
125-
outputs.dir("dist")
126-
}
127-
128-
tasks.named("assemble") {
129-
dependsOn("npm_run_build")
13016
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
plugins {
2+
alias(libs.plugins.kotlin.jvm)
3+
id("org.modelix.model-api-gen") apply false
4+
}
5+
6+
val modelixCoreVersion: String = projectDir.resolve("../../version.txt").readText()
7+
8+
dependencies {
9+
implementation("org.modelix:model-api-gen-runtime:$modelixCoreVersion")
10+
implementation("org.modelix:modelql-typed:$modelixCoreVersion")
11+
implementation("org.modelix:modelql-untyped:$modelixCoreVersion")
12+
13+
testImplementation(kotlin("test"))
14+
testImplementation(kotlin("reflect"))
15+
16+
testImplementation("org.modelix:model-api:$modelixCoreVersion")
17+
testImplementation("org.modelix:model-client:$modelixCoreVersion")
18+
testImplementation("org.modelix:model-server-lib:$modelixCoreVersion")
19+
testImplementation("org.modelix:modelql-client:$modelixCoreVersion")
20+
21+
testImplementation(libs.ktor.server.core)
22+
testImplementation(libs.ktor.server.cors)
23+
testImplementation(libs.ktor.server.netty)
24+
testImplementation(libs.ktor.server.html.builder)
25+
testImplementation(libs.ktor.server.auth)
26+
testImplementation(libs.ktor.server.auth.jwt)
27+
testImplementation(libs.ktor.server.status.pages)
28+
testImplementation(libs.ktor.server.forwarded.header)
29+
testImplementation(libs.ktor.server.websockets)
30+
testImplementation(libs.ktor.server.test.host)
31+
testImplementation(libs.logback.classic)
32+
}
33+
34+
tasks.test {
35+
useJUnitPlatform()
36+
}
37+
38+
sourceSets["main"].kotlin {
39+
srcDir(layout.buildDirectory.dir("kotlin_gen"))
40+
}
41+
42+
tasks.compileKotlin {
43+
dependsOn(":metamodel-export:generateMetaModelSources")
44+
}

model-api-gen-gradle-test/src/test/kotlin/org/modelix/metamodel/generator/GeneratedApiTest.kt renamed to model-api-gen-gradle-test/kotlin-generation/src/test/kotlin/org/modelix/metamodel/generator/GeneratedApiTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ class GeneratedApiTest {
3636
val branch = ModelFacade.toLocalBranch(ModelFacade.newLocalTree())
3737
TypedLanguagesRegistry.register(L_jetbrains_mps_lang_editor)
3838
TypedLanguagesRegistry.register(L_jetbrains_mps_lang_core)
39-
val data = ModelData.fromJson(File("build/metamodel/exported-modules/jetbrains.mps.baseLanguage.blTypes.json").readText())
39+
val data = ModelData.fromJson(File("../metamodel-export/build/metamodel/exported-modules/jetbrains.mps.baseLanguage.blTypes.json").readText())
4040
branch.runWrite {
4141
data.load(branch)
4242
val node = findNodeWithStyleAttribute(branch.getRootNode())!!.typed(C_FontStyleStyleClassItem.getInstanceInterface())
File renamed without changes.
File renamed without changes.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
plugins {
2+
base
3+
id("org.modelix.model-api-gen")
4+
}
5+
6+
val mpsDir = layout.buildDirectory.dir("mps")
7+
val resolveMps by tasks.registering(Sync::class) {
8+
from(mps.resolve().map { zipTree(it) })
9+
into(mpsDir)
10+
}
11+
val mps by configurations.creating
12+
val kotlinGenDir = project(":kotlin-generation").layout.buildDirectory.dir("kotlin_gen")
13+
val typescriptGenDir = project(":typescript-generation").layout.buildDirectory.dir("typescript_src")
14+
15+
metamodel {
16+
mpsHeapSize = "2g"
17+
dependsOn(resolveMps)
18+
mpsHome = mpsDir.get().asFile
19+
kotlinDir = kotlinGenDir.get().asFile
20+
modelqlKotlinDir = kotlinGenDir.get().asFile
21+
kotlinProject = project
22+
typescriptDir = typescriptGenDir.get().asFile
23+
includeNamespace("jetbrains")
24+
exportModules("jetbrains.mps.baseLanguage")
25+
26+
names {
27+
languageClass.prefix = "L_"
28+
languageClass.baseNameConversion = { it.replace(".", "_") }
29+
typedNode.prefix = ""
30+
typedNodeImpl.suffix = "Impl"
31+
}
32+
registrationHelperName = "org.modelix.apigen.test.ApigenTestLanguages"
33+
conceptPropertiesInterfaceName = "org.modelix.apigen.test.IMetaConceptProperties"
34+
}
35+
36+
dependencies {
37+
mps("com.jetbrains:mps:2021.1.4")
38+
}

model-api-gen-gradle-test/settings.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,8 @@ pluginManagement {
2525
}
2626
}
2727
}
28+
29+
rootProject.name = "model-api-gen-gradle-test"
30+
include("metamodel-export")
31+
include("typescript-generation")
32+
include("kotlin-generation")
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import org.modelix.metamodel.gradle.GenerateMetaModelSources
2+
3+
plugins {
4+
base
5+
alias(libs.plugins.node)
6+
id("org.modelix.model-api-gen") apply false
7+
}
8+
9+
val codeGenerationTask = project(":metamodel-export").tasks.named<GenerateMetaModelSources>("generateMetaModelSources")
10+
11+
tasks.named("npm_run_build") {
12+
inputs.dir(codeGenerationTask.map { it.typescriptOutputDir })
13+
inputs.file("package.json")
14+
inputs.file("package-lock.json")
15+
16+
outputs.dir("dist")
17+
}
18+
19+
tasks.assemble {
20+
dependsOn("npm_run_build")
21+
}
22+
23+
tasks.clean {
24+
dependsOn("npm_run_clean")
25+
}

model-api-gen-gradle-test/package-lock.json renamed to model-api-gen-gradle-test/typescript-generation/package-lock.json

Lines changed: 23 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)