in plugin/core/src/main/kotlin/com/jetbrains/packagesearch/plugin/core/utils/Utils.kt [137:154]
fun watchExternalFileChanges(path: Path): Flow<Unit> {
val fileSystem = LocalFileSystem.getInstance()
path.parent.toFile().mkdirs()
return callbackFlow {
val watchRequest =
fileSystem.addRootToWatch(path.parent.toString(), false)
?: return@callbackFlow
val listener = fileSystem.addVirtualFileListener {
if (it.file.path == path.toString()) {
trySend(Unit)
}
}
awaitClose {
fileSystem.removeVirtualFileListener(listener)
fileSystem.removeWatchedRoot(watchRequest)
}
}
}