Better encapsulate JS library detection
This commit is contained in:
+4
-10
@@ -41,20 +41,14 @@ object JsLibraryStdDetectionUtil {
|
||||
return getJsStdLibJar(classes) != null
|
||||
}
|
||||
|
||||
fun getJsLibraryStdVersion(library: Library): String? = getJsLibraryStdVersion(library.getFiles(OrderRootType.CLASSES).toList())
|
||||
|
||||
fun getJsLibraryStdVersion(classesRoots: List<VirtualFile>): String? {
|
||||
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
|
||||
fun getJsLibraryStdVersion(library: Library): String? {
|
||||
if ((library as LibraryEx).kind !is JSLibraryKind) return null
|
||||
val jar = getJsStdLibJar(library.getFiles(OrderRootType.CLASSES).toList()) ?: return null
|
||||
|
||||
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) {
|
||||
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
|
||||
}
|
||||
|
||||
private fun getKotlinLibraryVersion(library: Library): String? {
|
||||
val roots = library.getFiles(OrderRootType.CLASSES).toList()
|
||||
return JavaRuntimeDetectionUtil.getJavaRuntimeVersion(roots) ?: JsLibraryStdDetectionUtil.getJsLibraryStdVersion(roots)
|
||||
}
|
||||
private fun getKotlinLibraryVersion(library: Library): String? =
|
||||
JavaRuntimeDetectionUtil.getJavaRuntimeVersion(library) ?:
|
||||
JsLibraryStdDetectionUtil.getJsLibraryStdVersion(library)
|
||||
|
||||
fun findKotlinRuntimeLibrary(module: Module, predicate: (Library) -> Boolean = ::isKotlinRuntime): Library? {
|
||||
val orderEntries = ModuleRootManager.getInstance(module).orderEntries.filterIsInstance<LibraryOrderEntry>()
|
||||
@@ -81,7 +80,7 @@ fun isKotlinJavaRuntime(library: Library) =
|
||||
JavaRuntimeDetectionUtil.getRuntimeJar(library.getFiles(OrderRootType.CLASSES).asList()) != null
|
||||
|
||||
fun isKotlinJsRuntime(library: Library) =
|
||||
JsLibraryStdDetectionUtil.getJsStdLibJar(library.getFiles(OrderRootType.CLASSES).asList()) != null
|
||||
JsLibraryStdDetectionUtil.hasJsStdlibJar(library)
|
||||
|
||||
fun collectModulesWithOutdatedRuntime(libraries: List<VersionedLibrary>): List<Module> =
|
||||
libraries.flatMap { it.usedInModules }
|
||||
|
||||
Reference in New Issue
Block a user