Improve kapt arguments & javac options usability with Kotlin DSL
Issue #KT-21596 Fixed
This commit is contained in:
+4
@@ -30,6 +30,8 @@ kapt {
|
||||
arg("containsColon", "a:b")
|
||||
arg("containsEquals", "a=b")
|
||||
arg("startsWithColon", ":a")
|
||||
}
|
||||
arguments {
|
||||
arg("startsWithEquals", "=a")
|
||||
arg("endsWithColon", "a:")
|
||||
arg("endsWithEquals", "a:")
|
||||
@@ -38,6 +40,8 @@ kapt {
|
||||
|
||||
javacOptions {
|
||||
option("-Xmaxerrs", 500)
|
||||
}
|
||||
javacOptions {
|
||||
option("-Xlint:all")
|
||||
}
|
||||
}
|
||||
+33
-23
@@ -32,29 +32,42 @@ open class KaptExtension {
|
||||
|
||||
open var processors: String = ""
|
||||
|
||||
private var apOptionsClosure: Closure<*>? = null
|
||||
private var javacOptionsClosure: Closure<*>? = null
|
||||
private val apOptionsActions =
|
||||
mutableListOf<(KaptAnnotationProcessorOptions) -> Unit>()
|
||||
|
||||
private val javacOptionsActions =
|
||||
mutableListOf<(KaptJavacOptionsDelegate) -> Unit>()
|
||||
|
||||
open fun arguments(closure: Closure<*>) {
|
||||
this.apOptionsClosure = closure
|
||||
apOptionsActions += { apOptions ->
|
||||
apOptions.execute(closure)
|
||||
}
|
||||
}
|
||||
|
||||
open fun arguments(action: KaptAnnotationProcessorOptions.() -> Unit) {
|
||||
apOptionsActions += action
|
||||
}
|
||||
|
||||
open fun javacOptions(closure: Closure<*>) {
|
||||
this.javacOptionsClosure = closure
|
||||
this.javacOptionsActions += { javacOptions ->
|
||||
javacOptions.execute(closure)
|
||||
}
|
||||
}
|
||||
|
||||
open fun javacOptions(action: KaptJavacOptionsDelegate.() -> Unit) {
|
||||
javacOptionsActions += action
|
||||
}
|
||||
|
||||
fun getJavacOptions(): Map<String, String> {
|
||||
val closureToExecute = javacOptionsClosure ?: return emptyMap()
|
||||
val executor = KaptJavacOptionsDelegate().apply { execute(closureToExecute) }
|
||||
return executor.options
|
||||
val result = KaptJavacOptionsDelegate()
|
||||
javacOptionsActions.forEach { it(result) }
|
||||
return result.options
|
||||
}
|
||||
|
||||
fun getAdditionalArguments(project: Project, variantData: Any?, androidExtension: Any?): Map<String, String> {
|
||||
val closureToExecute = apOptionsClosure ?: return emptyMap()
|
||||
|
||||
val executor = KaptAnnotationProcessorOptions(project, variantData, androidExtension)
|
||||
executor.execute(closureToExecute)
|
||||
return executor.options
|
||||
val result = KaptAnnotationProcessorOptions(project, variantData, androidExtension)
|
||||
apOptionsActions.forEach { it(result) }
|
||||
return result.options
|
||||
}
|
||||
|
||||
fun getAdditionalArgumentsForJavac(project: Project, variantData: Any?, androidExtension: Any?): List<String> {
|
||||
@@ -81,12 +94,7 @@ open class KaptAnnotationProcessorOptions(
|
||||
options.put(name.toString(), values.joinToString(" "))
|
||||
}
|
||||
|
||||
fun execute(closure: Closure<*>) {
|
||||
closure.resolveStrategy = Closure.DELEGATE_FIRST
|
||||
closure.delegate = this
|
||||
closure.call()
|
||||
}
|
||||
|
||||
fun execute(closure: Closure<*>) = executeClosure(closure)
|
||||
}
|
||||
|
||||
open class KaptJavacOptionsDelegate {
|
||||
@@ -100,9 +108,11 @@ open class KaptJavacOptionsDelegate {
|
||||
options.put(name.toString(), "")
|
||||
}
|
||||
|
||||
fun execute(closure: Closure<*>) {
|
||||
closure.resolveStrategy = Closure.DELEGATE_FIRST
|
||||
closure.delegate = this
|
||||
closure.call()
|
||||
}
|
||||
fun execute(closure: Closure<*>) = executeClosure(closure)
|
||||
}
|
||||
|
||||
private fun Any?.executeClosure(closure: Closure<*>) {
|
||||
closure.resolveStrategy = Closure.DELEGATE_FIRST
|
||||
closure.delegate = this
|
||||
closure.call()
|
||||
}
|
||||
Reference in New Issue
Block a user