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

name.remal.building.gradle_plugins.DownloadTaskSettingPlugin.kt Maven / Gradle / Ivy

There is a newer version: 1.9.2
Show newest version
package name.remal.building.gradle_plugins

import de.undercouch.gradle.tasks.download.Download
import de.undercouch.gradle.tasks.download.DownloadSpec
import mu.KLogging
import name.remal.building.gradle_plugins.utils.PluginIds.DOWNLOAD_TASK_PLUGIN_ID
import name.remal.building.gradle_plugins.utils.ProjectPlugin
import name.remal.building.gradle_plugins.utils.configureTasks
import name.remal.building.gradle_plugins.utils.withPlugin
import org.gradle.api.Project
import java.time.Duration

open class DownloadTaskSettingPlugin : ProjectPlugin() {

    private companion object : KLogging()

    override fun apply(project: Project) {
        project.withPlugin(DOWNLOAD_TASK_PLUGIN_ID) {
            project.configureTasks(Download::class.java, this::setupDownloadSpec)
        }
    }

    private fun setupDownloadSpec(downloadSpec: DownloadSpec) {
        try {
            downloadSpec.onlyIfModified(true)
        } catch (e: NoSuchMethodError) {
            e.writeToLog()
            try {
                downloadSpec.onlyIfNewer(true)
            } catch (e: NoSuchMethodError) {
                e.writeToLog()
            }
        }

        try {
            if (downloadSpec.timeout <= 0) {
                downloadSpec.timeout(Duration.ofMinutes(1).toMillis().toInt())
            }
        } catch (e: NoSuchMethodError) {
            e.writeToLog()
        }
    }

    private fun NoSuchMethodError.writeToLog() {
        logger.info(
            "{}. Check that you use right version of {} plugin.",
            message,
            DOWNLOAD_TASK_PLUGIN_ID
        )
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy