Skip to content

Commit b464574

Browse files
committed
feat(gradle): detect Gradle DSL type in JavaBuildSystemProvider
Added a new method `determineGradleDslType` to detect and return the Gradle DSL type (Kotlin, Groovy, or Mixed) based on the project's build files. Updated the build tool name logic to use this method
1 parent 88d5cc9 commit b464574

File tree

1 file changed

+23
-3
lines changed

1 file changed

+23
-3
lines changed

java/src/main/kotlin/cc/unitmesh/idea/provider/JavaBuildSystemProvider.kt

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,21 @@ import cc.unitmesh.devti.provider.BuildSystemProvider
44
import cc.unitmesh.devti.provider.DevPackage
55
import cc.unitmesh.devti.template.context.DockerfileContext
66
import cc.unitmesh.idea.detectLanguageLevel
7+
import com.intellij.openapi.externalSystem.model.ProjectKeys
78
import com.intellij.openapi.externalSystem.service.project.ProjectDataManager
89
import com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionInfo
10+
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
911
import com.intellij.openapi.progress.ProgressManager
1012
import com.intellij.openapi.project.Project
1113
import com.intellij.openapi.project.guessProjectDir
1214
import com.intellij.psi.PsiFile
1315
import org.jetbrains.idea.maven.project.MavenProjectsManager
16+
import org.jetbrains.plugins.gradle.GradleManager
1417
import org.jetbrains.plugins.gradle.service.project.GradleTasksIndices
18+
import org.jetbrains.plugins.gradle.settings.GradleSettings
19+
import org.jetbrains.plugins.gradle.settings.GradleSystemSettings
1520
import org.jetbrains.plugins.gradle.util.GradleConstants
21+
import org.jetbrains.plugins.gradle.util.GradleModuleData
1622

1723

1824
open class JavaBuildSystemProvider : BuildSystemProvider() {
@@ -21,11 +27,12 @@ open class JavaBuildSystemProvider : BuildSystemProvider() {
2127
val buildToolName: String
2228
var taskString = ""
2329

24-
val gradleInfo = projectDataManager.getExternalProjectsData(project, GradleConstants.SYSTEM_ID)
30+
val gradleInfos = projectDataManager.getExternalProjectsData(project, GradleConstants.SYSTEM_ID)
2531
val mavenProjects = MavenProjectsManager.getInstance(project).projects
2632

27-
if (gradleInfo.isNotEmpty()) {
28-
buildToolName = "Gradle"
33+
if (gradleInfos.isNotEmpty()) {
34+
buildToolName = determineGradleDslType(project)
35+
2936
val indices = GradleTasksIndices.getInstance(project)
3037

3138
val tasks = indices.findTasks(project.guessProjectDir()!!.path)
@@ -55,6 +62,19 @@ open class JavaBuildSystemProvider : BuildSystemProvider() {
5562
)
5663
}
5764

65+
fun determineGradleDslType(project: Project): String {
66+
val projectDir = project.guessProjectDir() ?: return "Gradle"
67+
val hasKotlinDsl = projectDir.findChild("build.gradle.kts") != null
68+
val hasGroovyDsl = projectDir.findChild("build.gradle") != null
69+
70+
return when {
71+
hasKotlinDsl && hasGroovyDsl -> "Gradle (Mixed DSL)"
72+
hasKotlinDsl -> "Gradle Kotlin DSL (build.gradle.kts)"
73+
hasGroovyDsl -> "Gradle (build.gradle)"
74+
else -> "Gradle"
75+
}
76+
}
77+
5878
override fun isDeclarePackageFile(filename: String): Boolean {
5979
return filename == "build.gradle" || filename == "pom.xml" || filename == "build.gradle.kts"
6080
}

0 commit comments

Comments
 (0)