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

pcimcioch.gitlabci.dsl.job.ScriptDsl.kt Maven / Gradle / Ivy

There is a newer version: 1.6.0
Show newest version
package pcimcioch.gitlabci.dsl.job

import kotlinx.serialization.Serializable
import kotlinx.serialization.builtins.list
import kotlinx.serialization.builtins.serializer
import pcimcioch.gitlabci.dsl.DslBase
import pcimcioch.gitlabci.dsl.serializer.ValueSerializer

@Serializable(with = ScriptDsl.ScriptDslSerializer::class)
class ScriptDsl : DslBase() {
    var commands: MutableList = mutableListOf()

    fun exec(command: String) = commands.add(command)
    operator fun String.unaryPlus() = [email protected](this)

    object ScriptDslSerializer : ValueSerializer>(String.serializer().list, ScriptDsl::commands)
    companion object {
        init {
            addSerializer(ScriptDsl::class, serializer())
        }
    }
}

fun createScript(block: ScriptDsl.() -> Unit = {}) = ScriptDsl().apply(block)
fun createScript(vararg elements: String, block: ScriptDsl.() -> Unit = {}) = createScript(elements.toList(), block)
fun createScript(elements: Iterable, block: ScriptDsl.() -> Unit = {}) = ScriptDsl().apply { elements.forEach { exec(it) } }.apply(block)




© 2015 - 2024 Weber Informatics LLC | Privacy Policy