summaryrefslogtreecommitdiff
path: root/build-logic/src/main/kotlin/DownloadExtension.kt
blob: efd9cbf0d0d17562f9abdda3d020b140da03b8d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider
import java.util.*
import javax.inject.Inject

abstract class DownloadExtension {
    @get:Inject
    abstract val project: Project

    fun downloadTaskName(name: String) =
        "download" + name.capitalize(Locale.ROOT)

    inline fun <reified T : DownloadArchiveFile<*>> archive(name: String, noinline configure: T.() -> Unit)
            : TaskProvider<T> =
        project.tasks.register(downloadTaskName(name), T::class.java) {
            outputDir.convention(project.layout.buildDirectory.dir("downloadedSources/$name"))
            configure(this)
        }

    fun zip(name: String, configure: DownloadZipFile.() -> Unit): TaskProvider<DownloadZipFile> {
        return archive(name, configure)
    }

    fun tar(name: String, configure: DownloadTarFile.() -> Unit): TaskProvider<DownloadTarFile> {
        return archive(name, configure)
    }
}