0

I have a Gradle plugin in Groovy which has a setter method

void setDynamicTokens(Map<String, ?> dynamicTokens) {
    this.dynamicTokens = dynamicTokens
            .collectEntries { k, v ->
                [(k): [refId: { v.refId }, defaultValue: { v.defaultValue }, transform: {
                            v.transform ?: {
                                it
                            }
                        }]]
            }
            .collectEntries { k, v ->
                [(k): v as DynamicToken]
            } as Map<String, DynamicToken>
}

and Dynamic Token is an interface

interface DynamicToken {
    String refId()

    String defaultValue()

    Closure<?> transform()
}

in build.gradle we used to set something like this

dynamicTokens = [
        deployName             : [refId: "deploy.name", defaultValue: project.name.toLowerCase().replaceAll("[-]", ""), transform: {
                it.length() > 20 ? it.substring(0, 20) : it
            }],
        jvmAllowedMemory       : [refId: "jvm.allowed.memory", defaultValue: "1024m"],
        jvmActiveProcessors    : [refId: "jvm.active.processors", defaultValue: "2"],
        autoscaleMinReplicasCentral   : [refId: "autoscale.minReplicas.central", defaultValue: "1"],
        deploymentStrategy   : [refId: "deployment.strategy", defaultValue: "canary"],
        resourcesCpuMillicores : [refId: "resources.cpu.millicores", defaultValue: "2000"],
        resourcesCpu           : [refId: "resources.cpu.millicores", defaultValue: "2000", transform: { "${it}m".toString() }],
        resourcesMemoryMi      : [refId: "resources.memory", defaultValue: "2048"],
        resourcesMemory        : [refId: "resources.memory", defaultValue: "2048", transform: { "${it}Mi".toString() }],
    ]

however I am not sure how to call closure from build.gradle.kts. I am trying to do something similar but of no use

project.extensions.getByType(com.tgt.search.deploy.prepare.plugin.PluginExtension::class.java).apply {
      
        setDynamicTokens(
            mapOf<String,DynamicToken>(
                "deployName" to object:DynamicToken{
                    override fun transform()=KotlinClosure1<String, String>({
                        if (this.length > 20) this.substring(0, 20) else this
                    })

                    override fun defaultValue()=project.name.toLowerCase()
                    override fun refId()="deploy.name"
                }
aSemy
  • 5,485
  • 2
  • 25
  • 51
codeYogico
  • 13
  • 3

0 Answers0