Skip to content

Commit

Permalink
Merge pull request #196 from modelix/mps-compatibility
Browse files Browse the repository at this point in the history
ci: compile with all MPS versions
  • Loading branch information
slisson authored Feb 11, 2025
2 parents fa01fb5 + 414a9ff commit 44df134
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 20 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/mps-compatibility.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: MPS compatibility

on:
push:
branches:
- 'main'
pull_request: {}
# allow manual execution just in case
workflow_dispatch:

jobs:
assemble-mps-components:
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
version:
# - "2020.3"
- "2021.1"
- "2021.2"
- "2021.3"
- "2022.2"
- "2022.3"
- "2023.2"
- "2024.1"
# - "2024.3"
steps:
- uses: actions/checkout@v4
- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
- name: Set up Gradle
uses: gradle/gradle-build-action@v3
- name: Assemble with ${{ matrix.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: >-
./gradlew --build-cache
assemble
-Pmps.version.major=${{ matrix.version }}
1 change: 1 addition & 0 deletions mps-legacy-sync-plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ dependencies {

implementation(coreLibs.kotlin.reflect)
implementation(coreLibs.ktor.server.resources)
implementation(libs.modelix.mpsApi)

// There is a usage of MakeActionParameters in ProjectMakeRunner which we might want to delete
compileOnly(mpsHomeDir.map { it.files("plugins/mps-make/languages/jetbrains.mps.ide.make.jar") })
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import jetbrains.mps.internal.collections.runtime.Sequence
import jetbrains.mps.messages.IMessage
import jetbrains.mps.project.MPSProject
import jetbrains.mps.project.Project
import jetbrains.mps.project.StandaloneMPSProject
import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory
import org.apache.log4j.Level
import org.apache.log4j.LogManager
Expand All @@ -31,6 +30,7 @@ import org.modelix.model.mpsplugin.ModelServerConnection
import org.modelix.model.mpsplugin.ModelServerConnections
import org.modelix.model.mpsplugin.ProjectBinding
import org.modelix.model.mpsplugin.SyncDirection
import org.modelix.mps.api.ModelixMpsApi
import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.PrintWriter
Expand All @@ -39,6 +39,7 @@ import java.net.Socket
import java.util.function.Consumer

/*Generated by MPS */
@Suppress("UnstableApiUsage", "removal")
class ModelImportExport {
fun cloud2mps() {
val exportPath = PropertyOrEnv.get(ModelixExportConfiguration.PATH)
Expand Down Expand Up @@ -149,10 +150,7 @@ class ModelImportExport {
),
).where(object : IWhereFilter<SModule>() {
override fun accept(it: SModule): Boolean {
val virtualFolder =
(mpsProject as StandaloneMPSProject).getFolderFor(
it,
)
val virtualFolder = ModelixMpsApi.getVirtualFolder(mpsProject, it)
println("Modelix Application Plugin - Considering module: " + it.moduleName + " virtual folder: " + virtualFolder + ", make is currently: " + make)
return Sequence.fromIterable<String>(
Sequence.fromArray<String>(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
@file:Suppress("removal", "UnstableApiUsage")

package org.modelix.model.mpsplugin.projectview

import com.intellij.openapi.application.ApplicationManager
Expand All @@ -6,8 +8,6 @@ import jetbrains.mps.baseLanguage.closures.runtime.Wrappers._T
import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes._void_P1_E0
import jetbrains.mps.ide.project.ProjectHelper
import jetbrains.mps.ide.projectPane.ProjectPane
import jetbrains.mps.ide.projectPane.logicalview.ProjectTree
import jetbrains.mps.ide.ui.tree.MPSTreeNode
import jetbrains.mps.ide.ui.tree.TextTreeNode
import jetbrains.mps.internal.collections.runtime.ISelector
import jetbrains.mps.internal.collections.runtime.IVisitor
Expand Down Expand Up @@ -35,10 +35,12 @@ import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.util.concurrent.atomic.AtomicBoolean
import javax.swing.Icon
import javax.swing.JTree
import javax.swing.Timer
import javax.swing.event.TreeModelEvent
import javax.swing.event.TreeModelListener
import javax.swing.tree.DefaultTreeModel
import javax.swing.tree.MutableTreeNode
import javax.swing.tree.TreeNode
import kotlin.math.min

Expand Down Expand Up @@ -127,8 +129,8 @@ class CloudProjectViewExtension(private val project: Project?) {
}
}

private fun waitForProjectTree(callback: _void_P1_E0<in ProjectTree>) {
val tree: ProjectTree? = projectTree
private fun waitForProjectTree(callback: _void_P1_E0<in JTree>) {
val tree = projectTree
if (tree != null) {
callback.invoke(tree)
} else {
Expand All @@ -137,7 +139,7 @@ class CloudProjectViewExtension(private val project: Project?) {
1000,
object : ActionListener {
override fun actionPerformed(e: ActionEvent) {
val tree: ProjectTree? = projectTree
val tree = projectTree
if (tree != null) {
callback.invoke(tree)
timer.value!!.stop()
Expand All @@ -153,7 +155,7 @@ class CloudProjectViewExtension(private val project: Project?) {
}
}

private val projectTree: ProjectTree?
private val projectTree: JTree?
private get() {
if (project!!.isDisposed) {
return null
Expand Down Expand Up @@ -184,10 +186,8 @@ class CloudProjectViewExtension(private val project: Project?) {
val projectPane: ProjectPane = ProjectPane.getInstance(
project,
)
val root: MPSTreeNode? = projectPane.tree.rootNode
if (root == null) {
return
}
val root = projectPane.tree.model.root ?: return
root as MutableTreeNode
val model: DefaultTreeModel? = TreeModelUtil.getModel(projectPane.tree)

// wrong parent
Expand Down Expand Up @@ -238,10 +238,7 @@ class CloudProjectViewExtension(private val project: Project?) {
}

fun updateModules() {
val root: MPSTreeNode? = projectTree?.rootNode
if (root == null) {
return
}
val root = projectTree?.model?.root ?: return
val treeModel: DefaultTreeModel? = TreeModelUtil.getModel(projectTree)
project!!.repository.modelAccess.runReadAction(object : Runnable {
override fun run() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ class ModelRenameHelper(private val model: EditableSModelBase, private val mpsPr
while (var4.hasNext()) {
val sm: SModel = var4.next() as SModel
if (!sm.isReadOnly) {
if (sm is EditableSModelBase && sm.updateExternalReferences(mpsProject.repository)) {
if (sm is EditableSModelBase) {
sm.updateExternalReferences(mpsProject.repository)
sm.isChanged = true
}
}
Expand Down

0 comments on commit 44df134

Please sign in to comment.