in artist-core/src/main/kotlin/com/uber/artist/JavaFormattingFileWriter.kt [40:71]
override fun writeWithFormattingTo(directory: File) {
val directoryPath = directory.toPath()
checkArgument(Files.notExists(directoryPath) || Files.isDirectory(directoryPath),
"path %s exists but is not a directoryPath.", directoryPath)
var outputDirectory = directoryPath
if (!packageName.isEmpty()) {
for (packageComponent in packageName.split(packageSplitRegex)
.filter { !it.isEmpty() }.toTypedArray()) {
outputDirectory = outputDirectory.resolve(packageComponent)
}
Files.createDirectories(outputDirectory)
}
val typeSpec = typeSpecBuilder.build()
val outputPath = outputDirectory.resolve(typeSpec.name + ".java")
try {
OutputStreamWriter(Files.newOutputStream(outputPath), UTF_8).use { writer ->
val stringBuilder = StringBuilder(defaultFileSize)
outputFile.writeTo(stringBuilder)
formatter.formatSource(
CharSource.wrap(stringBuilder),
object : CharSink() {
@Throws(IOException::class)
override fun openStream(): Writer {
return writer
}
})
}
} catch (e: FormatterException) {
throw IOException("Error formatting " + outputPath.fileName.toString(), e)
}
}