@@ -20,17 +20,10 @@ import org.gradle.api.Plugin
20
20
import org.gradle.api.Project
21
21
import org.gradle.api.artifacts.Configuration
22
22
import org.gradle.api.tasks.TaskProvider
23
- import org.modelix.buildtools.runner.BundledPluginPath
24
- import org.modelix.buildtools.runner.ExternalPluginPath
25
- import org.modelix.buildtools.runner.MPSRunnerConfig
26
- import org.modelix.buildtools.runner.PluginConfig
27
23
import org.modelix.gradle.mpsbuild.MPSBuildPlugin
28
- import org.modelix.model.sync.bulk.gradle.config.BundledPluginSpec
29
- import org.modelix.model.sync.bulk.gradle.config.ExternalPluginSpec
30
24
import org.modelix.model.sync.bulk.gradle.config.LocalSource
31
25
import org.modelix.model.sync.bulk.gradle.config.LocalTarget
32
26
import org.modelix.model.sync.bulk.gradle.config.ModelSyncGradleSettings
33
- import org.modelix.model.sync.bulk.gradle.config.PluginSpec
34
27
import org.modelix.model.sync.bulk.gradle.config.ServerSource
35
28
import org.modelix.model.sync.bulk.gradle.config.ServerTarget
36
29
import org.modelix.model.sync.bulk.gradle.config.SyncDirection
@@ -148,25 +141,8 @@ class ModelSyncGradlePlugin : Plugin<Project> {
148
141
previousTask : TaskProvider <* >,
149
142
jsonDir : File ,
150
143
): TaskProvider <* > {
151
- val localSource = syncDirection.source as LocalSource
152
144
val resolvedDependencies = mpsDependencies.resolvedConfiguration.files
153
- val config = MPSRunnerConfig (
154
- mainClassName = " org.modelix.mps.model.sync.bulk.MPSBulkSynchronizer" ,
155
- mainMethodName = " exportRepository" ,
156
- classPathElements = resolvedDependencies.toList(),
157
- mpsHome = localSource.mpsHome,
158
- workDir = jsonDir,
159
- additionalModuleDirs = localSource.mpsLibraries.toList() + listOfNotNull(localSource.repositoryDir),
160
- plugins = createPluginConfig(localSource.mpsPlugins),
161
- jvmArgs = listOfNotNull(
162
- " -Dmodelix.mps.model.sync.bulk.output.path=${jsonDir.absolutePath} " ,
163
- " -Dmodelix.mps.model.sync.bulk.output.modules=${syncDirection.includedModules.joinToString(" ," )} " ,
164
- " -Dmodelix.mps.model.sync.bulk.output.modules.prefixes=${syncDirection.includedModulePrefixes.joinToString(" ," )} " ,
165
- " -Dmodelix.mps.model.sync.bulk.repo.path=${localSource.repositoryDir?.absolutePath} " ,
166
- " -Xmx${localSource.mpsHeapSize} " ,
167
- localSource.mpsDebugPort?.let { " -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=$it " },
168
- ),
169
- )
145
+ val config = buildMpsRunConfigurationForLocalSources(syncDirection, resolvedDependencies, jsonDir)
170
146
return mpsBuildPlugin.createRunMPSTask(" ${syncDirection.name} ExportFromMps" , config, arrayOf(previousTask)).also {
171
147
it.configure { task ->
172
148
task.outputs.dir(jsonDir)
@@ -208,32 +184,9 @@ class ModelSyncGradlePlugin : Plugin<Project> {
208
184
previousTask : TaskProvider <* >,
209
185
jsonDir : File ,
210
186
) {
211
- val localTarget = syncDirection.target as LocalTarget
212
- val importName = " ${syncDirection.name} ImportIntoMps"
213
187
val resolvedDependencies = mpsDependencies.resolvedConfiguration.files
214
- val hasBaseRevision = (syncDirection.source as ? ServerSource )?.baseRevision != null
215
- val config = MPSRunnerConfig (
216
- mainClassName = " org.modelix.mps.model.sync.bulk.MPSBulkSynchronizer" ,
217
- mainMethodName = if (hasBaseRevision) " importRepositoryFromModelServer" else " importRepository" ,
218
- classPathElements = resolvedDependencies.toList(),
219
- mpsHome = localTarget.mpsHome,
220
- workDir = jsonDir,
221
- additionalModuleDirs = localTarget.mpsLibraries.toList() + listOfNotNull(localTarget.repositoryDir),
222
- plugins = createPluginConfig(localTarget.mpsPlugins),
223
- jvmArgs = listOfNotNull(
224
- " -Dmodelix.mps.model.sync.bulk.input.path=${jsonDir.absolutePath} " ,
225
- " -Dmodelix.mps.model.sync.bulk.input.modules=${syncDirection.includedModules.joinToString(" ," )} " ,
226
- " -Dmodelix.mps.model.sync.bulk.input.modules.prefixes=${syncDirection.includedModulePrefixes.joinToString(" ," )} " ,
227
- " -Dmodelix.mps.model.sync.bulk.repo.path=${localTarget.repositoryDir?.absolutePath} " ,
228
- " -Dmodelix.mps.model.sync.bulk.input.continueOnError=${syncDirection.continueOnError} " ,
229
- " -Dmodelix.mps.model.sync.bulk.server.repository=${(syncDirection.source as ServerSource ).repositoryId} " .takeIf { hasBaseRevision },
230
- " -Dmodelix.mps.model.sync.bulk.server.url=${(syncDirection.source as ServerSource ).url} " .takeIf { hasBaseRevision },
231
- " -Dmodelix.mps.model.sync.bulk.server.version.hash=${(syncDirection.source as ServerSource ).revision} " .takeIf { hasBaseRevision },
232
- " -Dmodelix.mps.model.sync.bulk.server.version.base.hash=${(syncDirection.source as ServerSource ).baseRevision} " .takeIf { hasBaseRevision },
233
- " -Xmx${localTarget.mpsHeapSize} " ,
234
- localTarget.mpsDebugPort?.let { " -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=$it " },
235
- ),
236
- )
188
+ val config = buildMpsRunConfigurationForLocalTarget(syncDirection, resolvedDependencies, jsonDir)
189
+ val importName = " ${syncDirection.name} ImportIntoMps"
237
190
val importIntoMps = mpsBuildPlugin.createRunMPSTask(importName, config, arrayOf(previousTask)).also {
238
191
it.configure { task ->
239
192
task.inputs.dir(jsonDir)
@@ -246,16 +199,6 @@ class ModelSyncGradlePlugin : Plugin<Project> {
246
199
}
247
200
}
248
201
249
- private fun createPluginConfig (mpsPlugins : Set <PluginSpec >): List <PluginConfig > {
250
- return mpsPlugins.map {
251
- val pluginPath = when (it) {
252
- is BundledPluginSpec -> BundledPluginPath (it.folder)
253
- is ExternalPluginSpec -> ExternalPluginPath (it.folder)
254
- }
255
- PluginConfig (it.id, pluginPath)
256
- }
257
- }
258
-
259
202
private fun getBaseDir (project : Project ): File {
260
203
return project.layout.buildDirectory.dir(" model-sync" ).get().asFile
261
204
}
0 commit comments