Skip to content

Commit 095588a

Browse files
committed
detect Vaadin based on pom and gradle
1 parent 4671d9a commit 095588a

File tree

1 file changed

+34
-18
lines changed

1 file changed

+34
-18
lines changed

src/main/kotlin/com/vaadin/plugin/copilot/CopilotPluginUtil.kt

+34-18
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@ import com.intellij.openapi.components.service
1313
import com.intellij.openapi.diagnostic.Logger
1414
import com.intellij.openapi.extensions.PluginId
1515
import com.intellij.openapi.fileTypes.FileTypeManager
16-
import com.intellij.openapi.module.ModuleManager
1716
import com.intellij.openapi.project.Project
18-
import com.intellij.openapi.roots.ModuleRootManager
19-
import com.intellij.openapi.roots.libraries.Library
2017
import com.intellij.openapi.util.IconLoader
2118
import com.intellij.openapi.vfs.VfsUtil
2219
import com.intellij.psi.PsiDirectory
@@ -30,7 +27,9 @@ import com.vaadin.plugin.copilot.service.CopilotServerService
3027
import java.io.BufferedWriter
3128
import java.io.File
3229
import java.io.StringWriter
30+
import java.nio.file.Files
3331
import java.util.*
32+
import kotlin.io.path.Path
3433

3534

3635
class CopilotPluginUtil {
@@ -51,7 +50,7 @@ class CopilotPluginUtil {
5150

5251
private val COPILOT_ICON = IconLoader.getIcon("/icons/copilot.svg", CopilotPluginUtil::class.java)
5352

54-
private var isVaadinProject = false
53+
private var isVaadinProject: Boolean? = null
5554

5655
private enum class HANDLERS(val command: String) {
5756
WRITE("write"),
@@ -63,28 +62,45 @@ class CopilotPluginUtil {
6362
private val pluginVersion = PluginManagerCore.getPlugin(PluginId.getId("com.vaadin.intellij-plugin"))?.version
6463

6564
fun isVaadinProject(project: Project): Boolean {
66-
// after first opening project, when libs are not analyzed yet this will return false
67-
if (!isVaadinProject) {
68-
for (module in ModuleManager.getInstance(project).modules) {
69-
ModuleRootManager.getInstance(module).orderEntries().forEachLibrary { library: Library ->
70-
if (library.name?.contains(VAADIN_LIB_PREFIX) == true) {
71-
isVaadinProject = true
72-
return@forEachLibrary true
73-
}
74-
true
75-
}
76-
}
65+
if (project.basePath == null) {
66+
return false
67+
}
68+
69+
if (isVaadinProject != null) {
70+
return isVaadinProject!!
7771
}
78-
return isVaadinProject
72+
73+
val containsVaadinDeps = fun(file: String): Boolean {
74+
return Files.readString(Path(project.basePath!!, file)).contains(VAADIN_LIB_PREFIX)
75+
}
76+
77+
// Maven projects
78+
if (File(project.basePath, "pom.xml").exists()) {
79+
isVaadinProject = containsVaadinDeps("pom.xml")
80+
}
81+
82+
// Gradle projects
83+
if (File(project.basePath, "build.gradle").exists()) {
84+
isVaadinProject = containsVaadinDeps("build.gradle")
85+
}
86+
87+
// Gradle Kotlin projects
88+
if (File(project.basePath, "build.gradle.kts").exists()) {
89+
isVaadinProject = containsVaadinDeps("build.gradle.kts")
90+
}
91+
92+
return isVaadinProject ?: false
7993
}
8094

8195
fun notify(content: String, type: NotificationType) {
8296
notify(content, type, null)
8397
}
8498

8599
fun notify(content: String, type: NotificationType, project: Project?) {
86-
Notifications.Bus.notify(Notification(NOTIFICATION_GROUP, content, type)
87-
.setIcon(COPILOT_ICON), project)
100+
Notifications.Bus.notify(
101+
Notification(NOTIFICATION_GROUP, content, type)
102+
.setIcon(COPILOT_ICON), project
103+
)
88104
}
89105

90106
fun isServerRunning(project: Project): Boolean {

0 commit comments

Comments
 (0)