Skip to content

Commit f601920

Browse files
committed
feat(bulk-model-sync-gradle): add mps debugging support
1 parent 1a7ef32 commit f601920

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

bulk-model-sync-gradle/src/main/kotlin/org/modelix/model/sync/bulk/gradle/ModelSyncGradlePlugin.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ class ModelSyncGradlePlugin : Plugin<Project> {
139139
it.exportFlag.set(true)
140140
it.includedModules.set(syncDirection.includedModules)
141141
it.includedModulePrefixes.set(syncDirection.includedModulePrefixes)
142+
it.debugPort.set(localSource.mpsDebugPort)
142143
}
143144

144145
val exportFromMps = project.tasks.register("${syncDirection.name}ExportFromMps", ExportFromMps::class.java) {
@@ -205,6 +206,7 @@ class ModelSyncGradlePlugin : Plugin<Project> {
205206
it.exportFlag.set(false)
206207
it.includedModules.set(syncDirection.includedModules)
207208
it.includedModulePrefixes.set(syncDirection.includedModulePrefixes)
209+
it.debugPort.set(localTarget.mpsDebugPort)
208210
}
209211

210212
val importName = "${syncDirection.name}ImportIntoMps"

bulk-model-sync-gradle/src/main/kotlin/org/modelix/model/sync/bulk/gradle/config/ModelSyncGradleSettings.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ data class SyncDirection(
4242
internal val includedModules: Set<String> = mutableSetOf(),
4343
internal val registeredLanguages: Set<ILanguage> = mutableSetOf(),
4444
internal val includedModulePrefixes: Set<String> = mutableSetOf(),
45+
internal var mpsDebugEnabled: Boolean = false,
4546
) {
4647
fun fromModelServer(action: Action<ServerSource>) {
4748
val endpoint = ServerSource()
@@ -88,6 +89,7 @@ sealed interface LocalEndpoint : SyncEndpoint {
8889
var mpsHome: File?
8990
var mpsHeapSize: String
9091
var repositoryDir: File?
92+
var mpsDebugPort: Int?
9193

9294
override fun getValidationErrors(): List<String> {
9395
val errors = mutableListOf<String>()
@@ -105,12 +107,14 @@ data class LocalSource(
105107
override var mpsHome: File? = null,
106108
override var mpsHeapSize: String = "2g",
107109
override var repositoryDir: File? = null,
110+
override var mpsDebugPort: Int? = null,
108111
) : LocalEndpoint
109112

110113
data class LocalTarget(
111114
override var mpsHome: File? = null,
112115
override var mpsHeapSize: String = "2g",
113116
override var repositoryDir: File? = null,
117+
override var mpsDebugPort: Int? = null,
114118
) : LocalEndpoint
115119

116120
sealed interface ServerEndpoint : SyncEndpoint {

bulk-model-sync-gradle/src/main/kotlin/org/modelix/model/sync/bulk/gradle/tasks/GenerateAntScriptForMps.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import org.gradle.api.provider.ListProperty
2323
import org.gradle.api.provider.Property
2424
import org.gradle.api.tasks.CacheableTask
2525
import org.gradle.api.tasks.Input
26+
import org.gradle.api.tasks.Optional
2627
import org.gradle.api.tasks.OutputFile
2728
import org.gradle.api.tasks.TaskAction
2829
import java.io.File
@@ -59,6 +60,10 @@ abstract class GenerateAntScriptForMps @Inject constructor(of: ObjectFactory) :
5960
@Input
6061
val includedModulePrefixes: ListProperty<String> = of.listProperty(String::class.java)
6162

63+
@Optional
64+
@Input
65+
val debugPort: Property<Int> = of.property(Int::class.javaObjectType)
66+
6267
@TaskAction
6368
fun generate() {
6469
val isExport = exportFlag.get()
@@ -108,6 +113,7 @@ abstract class GenerateAntScriptForMps @Inject constructor(of: ObjectFactory) :
108113
<arg value="-Didea.system.path=${"$"}{build.mps.system.path}" />
109114
<arg value="-ea" />
110115
<arg value="-Xmx${mpsHeapSize.get()}" />
116+
${if (debugPort.isPresent) """<arg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=${debugPort.get()}" />""" else ""}
111117
</jvmargs>
112118
</runMPS>
113119
</target>

0 commit comments

Comments
 (0)