Import Kotlin code style from Maven properties (KT-23400)
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.maven
|
||||
|
||||
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
|
||||
import com.intellij.openapi.module.Module
|
||||
import org.jetbrains.idea.maven.importing.MavenImporter
|
||||
import org.jetbrains.idea.maven.importing.MavenRootModelAdapter
|
||||
import org.jetbrains.idea.maven.project.MavenProject
|
||||
import org.jetbrains.idea.maven.project.MavenProjectChanges
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsProcessorTask
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsTree
|
||||
import org.jetbrains.kotlin.idea.formatter.ProjectCodeStyleImporter
|
||||
import org.jetbrains.kotlin.idea.maven.KotlinMavenImporter.Companion.KOTLIN_PLUGIN_ARTIFACT_ID
|
||||
import org.jetbrains.kotlin.idea.maven.KotlinMavenImporter.Companion.KOTLIN_PLUGIN_GROUP_ID
|
||||
|
||||
class KotlinCodeStyleMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_ARTIFACT_ID) {
|
||||
companion object {
|
||||
private const val KOTLIN_CODE_STYLE_MAVEN_SETTING = "kotlin.code.style"
|
||||
|
||||
fun getCodeStyleString(mavenProject: MavenProject): String? {
|
||||
return mavenProject.properties.getProperty(KOTLIN_CODE_STYLE_MAVEN_SETTING)
|
||||
}
|
||||
}
|
||||
|
||||
override fun isApplicable(mavenProject: MavenProject): Boolean {
|
||||
return getCodeStyleString(mavenProject) != null
|
||||
}
|
||||
|
||||
override fun preProcess(
|
||||
module: Module?,
|
||||
mavenProject: MavenProject?,
|
||||
changes: MavenProjectChanges?,
|
||||
modifiableModelsProvider: IdeModifiableModelsProvider?
|
||||
) {
|
||||
// Do nothing
|
||||
}
|
||||
|
||||
override fun process(
|
||||
modifiableModelsProvider: IdeModifiableModelsProvider?,
|
||||
module: Module,
|
||||
rootModel: MavenRootModelAdapter?,
|
||||
mavenModel: MavenProjectsTree,
|
||||
mavenProject: MavenProject,
|
||||
changes: MavenProjectChanges?,
|
||||
mavenProjectToModuleName: MutableMap<MavenProject, String>?,
|
||||
postTasks: MutableList<MavenProjectsProcessorTask>
|
||||
) {
|
||||
if (mavenProject !in mavenModel.rootProjects) return
|
||||
|
||||
ProjectCodeStyleImporter.apply(module.project, getCodeStyleString(mavenProject))
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,7 @@ import com.intellij.openapi.roots.CompilerModuleExtension
|
||||
import com.intellij.openapi.roots.LibraryOrderEntry
|
||||
import com.intellij.openapi.roots.ModuleRootManager
|
||||
import com.intellij.openapi.roots.impl.libraries.LibraryEx
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager
|
||||
import com.intellij.util.PathUtil
|
||||
import junit.framework.TestCase
|
||||
import org.jetbrains.jps.model.java.JavaResourceRootType
|
||||
@@ -36,6 +37,9 @@ import org.jetbrains.kotlin.idea.caches.project.productionSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.project.testSourceInfo
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeAndGetResult
|
||||
import org.jetbrains.kotlin.idea.facet.KotlinFacet
|
||||
import org.jetbrains.kotlin.idea.formatter.KotlinObsoleteCodeStyle
|
||||
import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle
|
||||
import org.jetbrains.kotlin.idea.formatter.kotlinCodeStyleDefaults
|
||||
import org.jetbrains.kotlin.idea.framework.CommonLibraryKind
|
||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||
import org.jetbrains.kotlin.idea.framework.KotlinSdkType
|
||||
@@ -267,6 +271,48 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
|
||||
assertTestSources("project", "src/test/java", "src/test/kotlin")
|
||||
}
|
||||
|
||||
fun testImportObsoleteCodeStyle() {
|
||||
Assert.assertNull(CodeStyleSettingsManager.getSettings(myProject).kotlinCodeStyleDefaults())
|
||||
|
||||
importProject(
|
||||
"""
|
||||
<groupId>test</groupId>
|
||||
<artifactId>project</artifactId>
|
||||
<version>1.0.0</version>
|
||||
|
||||
<properties>
|
||||
<kotlin.code.style>obsolete</kotlin.code.style>
|
||||
</properties>
|
||||
"""
|
||||
)
|
||||
|
||||
Assert.assertEquals(
|
||||
KotlinObsoleteCodeStyle.CODE_STYLE_ID,
|
||||
CodeStyleSettingsManager.getSettings(myProject).kotlinCodeStyleDefaults()
|
||||
)
|
||||
}
|
||||
|
||||
fun testImportOfficialCodeStyle() {
|
||||
Assert.assertNull(CodeStyleSettingsManager.getSettings(myProject).kotlinCodeStyleDefaults())
|
||||
|
||||
importProject(
|
||||
"""
|
||||
<groupId>test</groupId>
|
||||
<artifactId>project</artifactId>
|
||||
<version>1.0.0</version>
|
||||
|
||||
<properties>
|
||||
<kotlin.code.style>official</kotlin.code.style>
|
||||
</properties>
|
||||
"""
|
||||
)
|
||||
|
||||
Assert.assertEquals(
|
||||
KotlinStyleGuideCodeStyle.CODE_STYLE_ID,
|
||||
CodeStyleSettingsManager.getSettings(myProject).kotlinCodeStyleDefaults()
|
||||
)
|
||||
}
|
||||
|
||||
fun testReImportRemoveDir() {
|
||||
createProjectSubDirs("src/main/kotlin", "src/main/kotlin.jvm", "src/test/kotlin", "src/test/kotlin.jvm")
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@
|
||||
|
||||
<extensions defaultExtensionNs="org.jetbrains.idea.maven">
|
||||
<importer implementation="org.jetbrains.kotlin.idea.maven.KotlinMavenImporter" />
|
||||
<importer implementation="org.jetbrains.kotlin.idea.maven.KotlinCodeStyleMavenImporter" />
|
||||
|
||||
<archetypesProvider implementation="org.jetbrains.kotlin.idea.maven.KotlinMavenArchetypesProvider" />
|
||||
|
||||
<pluginDescriptor mavenId="org.jetbrains.kotlin:kotlin-maven-plugin">
|
||||
|
||||
Reference in New Issue
Block a user