aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/main/kotlin/FrostPlugin.kt
blob: 0fd4ea9da23aac1950afd62dfe18d393fc8c64e7 (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
28
29
30
31
32
33
34
35
36
import com.moowork.gradle.node.NodeExtension
import com.moowork.gradle.node.NodePlugin
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.create

class FrostPlugin : Plugin<Project> {

    companion object {
        private const val NODE_VERSION = "12.4.0"
    }

    override fun apply(project: Project) {
        project.plugins.withId("java-base") {
            project.applyWebGenPlugin()
        }
        project.gradle.taskGraph.whenReady {
            if (!project.plugins.hasPlugin("java-base")) {
                throw IllegalArgumentException("Frost plugin can't be applied without Android or Java or Kotlin plugin.")
            }
        }
    }

    private fun Project.applyWebGenPlugin() {
        setupNode()
        tasks.create(WebGenInstallTask.NAME, WebGenInstallTask::class)
    }

    private fun Project.setupNode() {
        plugins.apply(NodePlugin::class)
        val nodeConfig = extensions.findByName("node") as NodeExtension
        nodeConfig.download = true
        nodeConfig.version = NODE_VERSION
    }
}