Copy stdlib-js source map during JPS build

This commit is contained in:
Alexey Andreev
2017-07-07 12:57:35 +03:00
parent 0ce6bac7eb
commit 7edb352aeb
3 changed files with 21 additions and 11 deletions
@@ -30,16 +30,16 @@ object JsLibraryUtils {
private val META_INF_RESOURCES = "${LibraryUtils.META_INF}resources/"
@JvmStatic fun copyJsFilesFromLibraries(libraries: List<String>, outputLibraryJsPath: String) {
@JvmStatic fun copyJsFilesFromLibraries(libraries: List<String>, outputLibraryJsPath: String, copySourceMap: Boolean = false) {
for (library in libraries) {
val file = File(library)
assert(file.exists()) { "Library $library not found" }
if (file.isDirectory) {
copyJsFilesFromDirectory(file, outputLibraryJsPath)
copyJsFilesFromDirectory(file, outputLibraryJsPath, copySourceMap)
}
else {
copyJsFilesFromZip(file, outputLibraryJsPath)
copyJsFilesFromZip(file, outputLibraryJsPath, copySourceMap)
}
}
}
@@ -68,10 +68,8 @@ object JsLibraryUtils {
}
}
private fun copyJsFilesFromDirectory(dir: File, outputLibraryJsPath: String) {
traverseDirectory(dir) { (content, path) ->
FileUtil.writeToFile(File(outputLibraryJsPath, path), content)
}
private fun copyJsFilesFromDirectory(dir: File, outputLibraryJsPath: String, copySourceMap: Boolean) {
traverseDirectory(dir) { copyLibrary(outputLibraryJsPath, it, copySourceMap) }
}
private fun File.contentIfExists(): String? = if (exists()) readText() else null
@@ -99,9 +97,16 @@ object JsLibraryUtils {
}
}
private fun copyJsFilesFromZip(file: File, outputLibraryJsPath: String) {
traverseArchive(file) { library ->
FileUtil.writeToFile(File(outputLibraryJsPath, library.path), library.content)
private fun copyJsFilesFromZip(file: File, outputLibraryJsPath: String, copySourceMap: Boolean) {
traverseArchive(file) { copyLibrary(outputLibraryJsPath, it, copySourceMap) }
}
private fun copyLibrary(outputPath: String, library: JsLibrary, copySourceMap: Boolean) {
val targetFile = File(outputPath, library.path)
targetFile.parentFile.mkdirs()
targetFile.writeText(library.content)
if (copySourceMap) {
library.sourceMapContent?.let { File(targetFile.parent, targetFile.name + ".map").writeText(it) }
}
}