in aws-lambda-common/src/main/java/jetbrains/buildServer/runner/lambda/directory/TarArchiveManager.kt [54:86]
override fun extractDirectory(tar: File?, destinationDirectory: File?) {
if (tar == null || destinationDirectory == null) {
return
}
logger.message("Extracting tar archive $tar to $destinationDirectory")
val input = TarArchiveInputStream(tar.inputStream())
var entry: TarArchiveEntry?
while (input.nextTarEntry.also { entry = it } != null) {
if (!input.canReadEntryData(entry)) {
throw IllegalArgumentException("Entry $entry is not readable")
}
val file = File(destinationDirectory, entry!!.name)
if (entry!!.isDirectory) {
makeDirectory(file)
} else {
makeDirectory(file.parentFile)
val output = file.outputStream()
IOUtils.copy(input, output)
output.flush()
output.close()
Files.setPosixFilePermissions(
file.toPath(),
permissionsFromInt(entry!!.mode)
)
}
}
input.close()
}