override fun extractDirectory()

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()
    }