Skip to content

Commit b82344e

Browse files
authored
Merge pull request #107 from modelix/feature/cached-api-gen
MODELIX-427 Caching in api-gen-gradle
2 parents cc5c5c4 + dcbf5cd commit b82344e

File tree

3 files changed

+23
-16
lines changed

3 files changed

+23
-16
lines changed

model-api-gen-gradle/src/main/kotlin/org/modelix/metamodel/gradle/GenerateAntScriptForMpsMetaModelExport.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,31 @@ import org.gradle.api.file.RegularFileProperty
66
import org.gradle.api.model.ObjectFactory
77
import org.gradle.api.provider.ListProperty
88
import org.gradle.api.provider.Property
9-
import org.gradle.api.tasks.Input
10-
import org.gradle.api.tasks.InputDirectory
11-
import org.gradle.api.tasks.InputFiles
9+
import org.gradle.api.tasks.*
1210
import org.gradle.api.tasks.Optional
13-
import org.gradle.api.tasks.OutputFile
14-
import org.gradle.api.tasks.TaskAction
1511
import java.util.*
1612
import javax.inject.Inject
1713

14+
@CacheableTask
1815
abstract class GenerateAntScriptForMpsMetaModelExport @Inject constructor(of: ObjectFactory) : DefaultTask() {
1916
@get:InputDirectory
17+
@PathSensitive(PathSensitivity.RELATIVE)
2018
val mpsHome: DirectoryProperty = of.directoryProperty()
19+
2120
@get:OutputFile
2221
val antScriptFile: RegularFileProperty = of.fileProperty()
22+
2323
@InputDirectory
24+
@PathSensitive(PathSensitivity.RELATIVE)
2425
val exporterDir: Property<String> = of.property(String::class.java)
26+
2527
@InputFiles
28+
@PathSensitive(PathSensitivity.RELATIVE)
2629
val moduleFolders: ListProperty<String> = of.listProperty(String::class.java)
30+
2731
@Input
2832
val heapSize: Property<String> = of.property(String::class.java)
33+
2934
@Input
3035
@Optional
3136
val exportModulesFilter: Property<String> = of.property(String::class.java)

model-api-gen-gradle/src/main/kotlin/org/modelix/metamodel/gradle/GenerateMetaModelSources.kt

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,43 +5,44 @@ import org.gradle.api.file.DirectoryProperty
55
import org.gradle.api.model.ObjectFactory
66
import org.gradle.api.provider.ListProperty
77
import org.gradle.api.provider.Property
8-
import org.gradle.api.tasks.Input
9-
import org.gradle.api.tasks.InputDirectory
10-
import org.gradle.api.tasks.Optional
11-
import org.gradle.api.tasks.OutputDirectory
12-
import org.gradle.api.tasks.TaskAction
8+
import org.gradle.api.tasks.*
9+
import org.modelix.metamodel.generator.*
1310
import org.modelix.model.data.LanguageData
14-
import org.modelix.metamodel.generator.LanguageSet
15-
import org.modelix.metamodel.generator.MetaModelGenerator
16-
import org.modelix.metamodel.generator.NameConfig
17-
import org.modelix.metamodel.generator.TypescriptMMGenerator
18-
import org.modelix.metamodel.generator.process
1911
import javax.inject.Inject
2012

13+
@CacheableTask
2114
abstract class GenerateMetaModelSources @Inject constructor(of: ObjectFactory) : DefaultTask() {
2215
@get:InputDirectory
16+
@PathSensitive(PathSensitivity.RELATIVE)
2317
val exportedLanguagesDir: DirectoryProperty = of.directoryProperty()
18+
2419
@get:OutputDirectory
2520
@Optional
2621
val kotlinOutputDir: DirectoryProperty = of.directoryProperty()
22+
2723
@get:OutputDirectory
2824
@Optional
2925
val typescriptOutputDir: DirectoryProperty = of.directoryProperty()
26+
3027
@get:Input
3128
val includedNamespaces: ListProperty<String> = of.listProperty(String::class.java)
29+
3230
@get:Input
3331
val includedLanguages: ListProperty<String> = of.listProperty(String::class.java)
32+
3433
@get:Input
3534
val includedConcepts: ListProperty<String> = of.listProperty(String::class.java)
35+
3636
@get:Input
3737
@Optional
3838
val registrationHelperName: Property<String> = of.property(String::class.java)
39+
3940
@get: Input
4041
val nameConfig: Property<NameConfig> = of.property(NameConfig::class.java)
4142

4243
@TaskAction
4344
fun generate() {
44-
var languages: LanguageSet = LanguageSet(exportedLanguagesDir.get().asFile.walk()
45+
var languages = LanguageSet(exportedLanguagesDir.get().asFile.walk()
4546
.filter { it.extension.lowercase() == "json" }
4647
.map { LanguageData.fromJson(it.readText()) }
4748
.toList())

model-api-gen-gradle/src/main/kotlin/org/modelix/metamodel/gradle/MetaModelGradlePlugin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class MetaModelGradlePlugin: Plugin<Project> {
4646
val exportedLanguagesDir = getBuildOutputDir().resolve("exported-languages")
4747
val exportMetaModelFromMps = project.tasks.register("exportMetaModelFromMps", JavaExec::class.java) { task ->
4848
task.enabled = settings.jsonDir == null
49+
task.outputs.cacheIf { task.enabled }
4950
task.workingDir = getBuildOutputDir()
5051
task.mainClass.set("org.apache.tools.ant.launch.Launcher")
5152
task.classpath(antDependencies)

0 commit comments

Comments
 (0)