Look at library content to detect library kind when importing

This commit is contained in:
Dmitry Jemerov
2017-08-02 17:10:01 +02:00
parent b423d58a14
commit 88420311cb
6 changed files with 130 additions and 6 deletions
@@ -24,8 +24,10 @@ import com.intellij.openapi.externalSystem.model.project.ProjectData
import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider
import com.intellij.openapi.externalSystem.service.project.manage.AbstractProjectDataService
import com.intellij.openapi.project.Project
import com.intellij.openapi.roots.OrderRootType
import com.intellij.openapi.roots.impl.libraries.LibraryEx
import org.jetbrains.kotlin.idea.configuration.detectPlatformByPlugin
import org.jetbrains.kotlin.idea.framework.detectLibraryKind
import org.jetbrains.kotlin.idea.framework.libraryKind
class KotlinAndroidGradleLibraryDataService : AbstractProjectDataService<JavaProject, Void>() {
@@ -43,7 +45,8 @@ class KotlinAndroidGradleLibraryDataService : AbstractProjectDataService<JavaPro
for (dep in dataNode.data.jarLibraryDependencies) {
val library = modelsProvider.getLibraryByName(dep.name) as LibraryEx? ?: continue
if (library.kind == null) {
(modelsProvider.getModifiableLibraryModel(library) as LibraryEx.ModifiableModelEx).kind = targetLibraryKind
val model = modelsProvider.getModifiableLibraryModel(library) as LibraryEx.ModifiableModelEx
detectLibraryKind(model.getFiles(OrderRootType.CLASSES))?.let { model.kind = it }
}
}
}