Расширение вложенное Gradle в Котлине - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть следующая конфигурация с вложенными расширениями

open class Config {
    val api = ApiConfig()
    fun api(action: Action<in ApiConfig>) = action.execute(api)

    val uploadConfig = UploadConfig()
    fun uploadConfig(action: Action<in UploadConfig>) = action.execute(uploadConfig)
}

data class ApiConfig(
    var projectId: String = "",
    var token: String = ""
)

open class UploadConfig {
    var str: MutableList<String> = mutableListOf()
    val uploadEntries: MutableList<UploadEntry> = mutableListOf()
    fun uploadEntry(action: Action<in UploadEntry>) {
        val newEntry = UploadEntry()
        action.execute(newEntry)
        uploadEntries.add(newEntry)
    }
}

open class UploadEntry(
    var lang: String = "",
    var path: String = ""
)

И вот использование:

myPlugin {
    api {
        projectId = "111"
        token = "222"
    }

    stringsUploadConfig {
        str = ["s1", "s2"] // this works good
        uploadEntry {
            lang = "en" // here I got error
            path = "path-to-file"
        }
    }
}

Для конфигурации Api все хорошо, но когда я хочу получить доступ uploadEntry{ langЯ получил ошибку

> Could not set unknown property 'lang' for an object of type mypackage.UploadConfig.

Как я могу получить доступ ко второму вложенному объекту UploadEntry

...