Skip to content

Commit 896925d

Browse files
1.28.0: Remigrate can now exclude module migrations
1 parent 389ea32 commit 896925d

File tree

6 files changed

+44
-2
lines changed

6 files changed

+44
-2
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
33
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
44

5+
## 1.28.0
6+
7+
### Added
8+
9+
- `Remigrate` now supports excluding module migrations.
10+
511
## 1.27.0
612

713
### Added

api/mps-gradle-plugin.api

+15
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,19 @@ public final class de/itemis/mps/gradle/runmigrations/RunMigrationsMpsProjectPlu
304304
public final fun getMIN_VERSION_FOR_HALT_ON_PRECHECK_FAILURE ()Lnet/swiftzer/semver/SemVer;
305305
}
306306

307+
public final class de/itemis/mps/gradle/tasks/ExcludedModuleMigration {
308+
public fun <init> (Ljava/lang/String;I)V
309+
public final fun component1 ()Ljava/lang/String;
310+
public final fun component2 ()I
311+
public final fun copy (Ljava/lang/String;I)Lde/itemis/mps/gradle/tasks/ExcludedModuleMigration;
312+
public static synthetic fun copy$default (Lde/itemis/mps/gradle/tasks/ExcludedModuleMigration;Ljava/lang/String;IILjava/lang/Object;)Lde/itemis/mps/gradle/tasks/ExcludedModuleMigration;
313+
public fun equals (Ljava/lang/Object;)Z
314+
public final fun getLanguage ()Ljava/lang/String;
315+
public final fun getVersion ()I
316+
public fun hashCode ()I
317+
public fun toString ()Ljava/lang/String;
318+
}
319+
307320
public abstract class de/itemis/mps/gradle/tasks/MpsCheck : org/gradle/api/tasks/JavaExec, org/gradle/api/tasks/VerificationTask {
308321
public fun <init> ()V
309322
public fun exec ()V
@@ -382,9 +395,11 @@ public abstract class de/itemis/mps/gradle/tasks/MpsMigrate : org/gradle/api/Def
382395

383396
public class de/itemis/mps/gradle/tasks/Remigrate : org/gradle/api/tasks/JavaExec {
384397
public fun <init> (Lorg/gradle/api/model/ObjectFactory;Lorg/gradle/api/provider/ProviderFactory;)V
398+
public final fun excludeModuleMigration (Ljava/lang/String;I)V
385399
public fun exec ()V
386400
public final fun getAdditionalClasspath ()Lorg/gradle/api/file/ConfigurableFileCollection;
387401
protected final fun getAllProjectFiles ()Lorg/gradle/api/provider/Provider;
402+
public final fun getExcludedModuleMigrations ()Lorg/gradle/api/provider/SetProperty;
388403
public final fun getFolderMacros ()Lorg/gradle/api/provider/MapProperty;
389404
public final fun getMpsHome ()Lorg/gradle/api/file/DirectoryProperty;
390405
public final fun getMpsVersion ()Lorg/gradle/api/provider/Property;

build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ plugins {
2424
id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.13.2"
2525
}
2626

27-
val baseVersion = "1.27.0"
27+
val baseVersion = "1.28.0"
2828

2929
group = "de.itemis.mps"
3030

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package de.itemis.mps.gradle.tasks
2+
3+
import org.gradle.api.Incubating
4+
5+
@Incubating
6+
data class ExcludedModuleMigration(val language: String, val version: Int)

src/main/kotlin/de/itemis/mps/gradle/tasks/Remigrate.kt

+12-1
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ import org.gradle.api.model.ObjectFactory
1212
import org.gradle.api.provider.MapProperty
1313
import org.gradle.api.provider.Property
1414
import org.gradle.api.provider.ProviderFactory
15+
import org.gradle.api.provider.SetProperty
1516
import org.gradle.api.tasks.*
1617
import org.gradle.kotlin.dsl.mapProperty
1718
import org.gradle.kotlin.dsl.newInstance
1819
import org.gradle.kotlin.dsl.property
20+
import org.gradle.kotlin.dsl.setProperty
1921
import org.gradle.process.CommandLineArgumentProvider
2022
import javax.inject.Inject
2123

@@ -52,6 +54,12 @@ open class Remigrate @Inject constructor(
5254
val additionalClasspath: ConfigurableFileCollection =
5355
objectFactory.fileCollection().from(initialBackendClasspath())
5456

57+
@get:Input
58+
val excludedModuleMigrations: SetProperty<ExcludedModuleMigration> = objectFactory.setProperty()
59+
60+
fun excludeModuleMigration(language: String, version: Int) {
61+
excludedModuleMigrations.add(ExcludedModuleMigration(language, version))
62+
}
5563

5664
init {
5765
val backendBuilder: MpsBackendBuilder = project.objects.newInstance(MpsBackendBuilder::class)
@@ -75,7 +83,10 @@ open class Remigrate @Inject constructor(
7583
.flatMap { it.moduleArtifacts.map { it.file } }
7684
.single()
7785

78-
result.add("--plugin=de.itemis.mps.buildbackends.remigrate::" + pluginFile)
86+
result.add("--plugin=de.itemis.mps.buildbackends.remigrate::$pluginFile")
87+
88+
result.addAll(
89+
excludedModuleMigrations.get().map { "--exclude-module-migration=${it.language}:${it.version}" })
7990

8091
result
8192
})

src/test/kotlin/test/migration/RemigrateTest.kt

+4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class RemigrateTest {
3838
buildFile.writeText(
3939
"""
4040
import de.itemis.mps.gradle.tasks.Remigrate
41+
import de.itemis.mps.gradle.tasks.ExcludedModuleMigration
4142
4243
plugins {
4344
id("de.itemis.mps.gradle.common")
@@ -61,6 +62,9 @@ class RemigrateTest {
6162
val remigrate by tasks.registering(Remigrate::class) {
6263
projectDirectories.from("$mpsTestPrjLocation")
6364
mpsHome.set(layout.dir(resolveMps.map { it.destinationDir }))
65+
66+
excludedModuleMigrations.add(ExcludedModuleMigration("foo", 0))
67+
excludeModuleMigration("bar", 1)
6468
}
6569
""".trimIndent()
6670
)

0 commit comments

Comments
 (0)