override fun archiveDirectory()

in aws-lambda-common/src/main/java/jetbrains/buildServer/runner/lambda/directory/TarArchiveManager.kt [14:38]


    override fun archiveDirectory(directory: File): File {
        logger.message("Starting archival of directory $directory")
        val tarBall = kotlin.io.path.createTempFile().toFile()

        val output = TarArchiveOutputStream(tarBall.outputStream())

        val files = recurseDirectory(directory)

        files.forEach {
            val entry = TarArchiveEntry(it, directory.toPath().relativize(it.toPath()).toString()).apply {
                size = it.length()
                mode = modeFromFilePermissions(Files.getPosixFilePermissions(it.toPath()))
            }

            output.putArchiveEntry(entry)
            IOUtils.copy(it.inputStream(), output)
            output.closeArchiveEntry()
        }

        output.finish()
        output.close()

        logger.message("Finished the archival of the directory")
        return tarBall
    }