fun GenerateDistPluginTasks()

in buildSrc/src/main/kotlin/org/fbme/gradle/GenerateDistPluginTasks.kt [12:45]


fun GenerateDistPluginTasks(
    project: Project,
    mpsExtension: MpsExtension,
    pluginId: String?
) {
    with(project) {
        val tasksEnabled = pluginId != null

        val buildSrcPlugin by tasks.getting

        val mps by configurations.registering {
            isCanBeConsumed = true
            isCanBeResolved = false
        }

        val buildDistPlugin by tasks.registering(Copy::class) {
            enabled = tasksEnabled
            dependsOn(buildSrcPlugin, mpsExtension.mpsArtifactTasks)
            duplicatesStrategy = DuplicatesStrategy.EXCLUDE
            from(rootProject.layout.buildDirectory.dir("src-plugins/$pluginId").map { it.asFileTree })
            into(rootProject.layout.buildDirectory.dir("dist-plugins/$pluginId"))

            from(mpsExtension.mpsArtifacts) {
                into("languages")
            }
        }

        artifacts {
            add(mps.name, rootProject.layout.buildDirectory.dir("dist-plugins/$pluginId")) {
                builtBy(buildDistPlugin)
            }
        }
    }
}