Allow customizing directory for temporary module files

Original commit: 5bffef6de7
This commit is contained in:
Alexey Tsvetkov
2017-12-15 16:26:54 +03:00
parent fdaf915d2c
commit dfbae1f55d
@@ -139,17 +139,24 @@ object KotlinBuilderModuleScriptGenerator {
append("-test") append("-test")
} }
} }
val dir = System.getProperty("kotlin.jps.dir.for.module.files")?.let { File(it) }?.takeIf { it.isDirectory }
return try { return try {
File.createTempFile("kjps", readableSuffix + ".script.xml") File.createTempFile("kjps", readableSuffix + ".script.xml", dir)
} }
catch (e: IOException) { catch (e: IOException) {
// sometimes files cannot be created, because file name is too long (Windows, Mac OS) // sometimes files cannot be created, because file name is too long (Windows, Mac OS)
// see https://bugs.openjdk.java.net/browse/JDK-8148023 // see https://bugs.openjdk.java.net/browse/JDK-8148023
try { try {
File.createTempFile("kjps", ".script.xml") File.createTempFile("kjps", ".script.xml", dir)
} }
catch (e: IOException) { catch (e: IOException) {
throw RuntimeException("Could not create module file when building $chunk", e) val message = buildString {
append("Could not create module file when building chunk $chunk")
if (dir != null) {
append(" in dir $dir")
}
}
throw RuntimeException(message, e)
} }
} }
} }