Better encapsulate JS library detection
This commit is contained in:
+4
-10
@@ -41,20 +41,14 @@ object JsLibraryStdDetectionUtil {
|
|||||||
return getJsStdLibJar(classes) != null
|
return getJsStdLibJar(classes) != null
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getJsLibraryStdVersion(library: Library): String? = getJsLibraryStdVersion(library.getFiles(OrderRootType.CLASSES).toList())
|
fun getJsLibraryStdVersion(library: Library): String? {
|
||||||
|
if ((library as LibraryEx).kind !is JSLibraryKind) return null
|
||||||
fun getJsLibraryStdVersion(classesRoots: List<VirtualFile>): String? {
|
val jar = getJsStdLibJar(library.getFiles(OrderRootType.CLASSES).toList()) ?: return null
|
||||||
if (JavaRuntimeDetectionUtil.getJavaRuntimeVersion(classesRoots) != null) {
|
|
||||||
// Prevent clashing with java runtime, in case when library collects all roots.
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
|
|
||||||
val jar = getJsStdLibJar(classesRoots) ?: return null
|
|
||||||
|
|
||||||
return JarUtil.getJarAttribute(VfsUtilCore.virtualToIoFile(jar), Attributes.Name.IMPLEMENTATION_VERSION)
|
return JarUtil.getJarAttribute(VfsUtilCore.virtualToIoFile(jar), Attributes.Name.IMPLEMENTATION_VERSION)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getJsStdLibJar(classesRoots: List<VirtualFile>): VirtualFile? {
|
private fun getJsStdLibJar(classesRoots: List<VirtualFile>): VirtualFile? {
|
||||||
for (root in classesRoots) {
|
for (root in classesRoots) {
|
||||||
if (root.fileSystem.protocol !== StandardFileSystems.JAR_PROTOCOL) continue
|
if (root.fileSystem.protocol !== StandardFileSystems.JAR_PROTOCOL) continue
|
||||||
|
|
||||||
|
|||||||
@@ -63,10 +63,9 @@ fun getOutdatedRuntimeLibraryVersion(library: Library): String? {
|
|||||||
return if (isRuntimeOutdated(libraryVersion, runtimeVersion)) libraryVersion else null
|
return if (isRuntimeOutdated(libraryVersion, runtimeVersion)) libraryVersion else null
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getKotlinLibraryVersion(library: Library): String? {
|
private fun getKotlinLibraryVersion(library: Library): String? =
|
||||||
val roots = library.getFiles(OrderRootType.CLASSES).toList()
|
JavaRuntimeDetectionUtil.getJavaRuntimeVersion(library) ?:
|
||||||
return JavaRuntimeDetectionUtil.getJavaRuntimeVersion(roots) ?: JsLibraryStdDetectionUtil.getJsLibraryStdVersion(roots)
|
JsLibraryStdDetectionUtil.getJsLibraryStdVersion(library)
|
||||||
}
|
|
||||||
|
|
||||||
fun findKotlinRuntimeLibrary(module: Module, predicate: (Library) -> Boolean = ::isKotlinRuntime): Library? {
|
fun findKotlinRuntimeLibrary(module: Module, predicate: (Library) -> Boolean = ::isKotlinRuntime): Library? {
|
||||||
val orderEntries = ModuleRootManager.getInstance(module).orderEntries.filterIsInstance<LibraryOrderEntry>()
|
val orderEntries = ModuleRootManager.getInstance(module).orderEntries.filterIsInstance<LibraryOrderEntry>()
|
||||||
@@ -81,7 +80,7 @@ fun isKotlinJavaRuntime(library: Library) =
|
|||||||
JavaRuntimeDetectionUtil.getRuntimeJar(library.getFiles(OrderRootType.CLASSES).asList()) != null
|
JavaRuntimeDetectionUtil.getRuntimeJar(library.getFiles(OrderRootType.CLASSES).asList()) != null
|
||||||
|
|
||||||
fun isKotlinJsRuntime(library: Library) =
|
fun isKotlinJsRuntime(library: Library) =
|
||||||
JsLibraryStdDetectionUtil.getJsStdLibJar(library.getFiles(OrderRootType.CLASSES).asList()) != null
|
JsLibraryStdDetectionUtil.hasJsStdlibJar(library)
|
||||||
|
|
||||||
fun collectModulesWithOutdatedRuntime(libraries: List<VersionedLibrary>): List<Module> =
|
fun collectModulesWithOutdatedRuntime(libraries: List<VersionedLibrary>): List<Module> =
|
||||||
libraries.flatMap { it.usedInModules }
|
libraries.flatMap { it.usedInModules }
|
||||||
|
|||||||
Reference in New Issue
Block a user