All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetbrains.kotlin.gradle.tasks.TasksOutputsBackup.kt Maven / Gradle / Ivy

There is a newer version: 2.0.20-RC
Show newest version
/*
 * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.gradle.tasks

import org.gradle.api.file.FileCollection
import org.jetbrains.kotlin.utils.keysToMap
import java.io.File
import java.util.HashSet

internal class TaskOutputsBackup(private val outputs: FileCollection) {
    private val previousOutputs: Map

    init {
        val outputFiles = HashSet()
        outputs.forEach {
            if (it.isDirectory) {
                it.walk().filterTo(outputFiles, File::isFile)
            } else if (it.isFile) {
                outputFiles.add(it)
            }
        }

        previousOutputs = outputFiles.keysToMap { it.readBytes() }
    }

    fun restoreOutputs() {
        outputs.forEach {
            if (it.isDirectory) {
                it.deleteRecursively()
            } else if (it.isFile) {
                it.delete()
            }
        }

        val dirs = HashSet()

        for ((file, bytes) in previousOutputs) {
            val dir = file.parentFile
            if (dirs.add(dir)) {
                dir.mkdirs()
            }
            file.writeBytes(bytes)
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy