Skip to content

Commit 48a66c9

Browse files
committed
Generate Markdown documentation for Gradle options
1 parent deb9258 commit 48a66c9

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

generators/src/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.()
4949
commonOptions + additionalOptions)
5050
}
5151

52+
println("### Attributes common for 'kotlin' and 'kotlin2js'\n")
53+
generateMarkdown(commonOptions + additionalOptions)
54+
5255
// generate jvm interface
5356
val jvmInterfaceFqName = FqName("org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions")
5457
val jvmOptions = gradleOptions<K2JVMCompilerArguments>()
@@ -68,6 +71,9 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.()
6871
commonOptions + jvmOptions)
6972
}
7073

74+
println("\n### Attributes specific for 'kotlin'\n")
75+
generateMarkdown(jvmOptions)
76+
7177
// generate js interface
7278
val jsInterfaceFqName = FqName("org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions")
7379
val jsOptions = gradleOptions<K2JSCompilerArguments>()
@@ -85,6 +91,9 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.()
8591
k2JsCompilerArgumentsFqName,
8692
commonOptions + jsOptions)
8793
}
94+
95+
println("\n### Attributes specific for 'kotlin2js'\n")
96+
generateMarkdown(jsOptions)
8897
}
8998

9099
fun main(args: Array<String>) {
@@ -209,6 +218,23 @@ private inline fun Printer.withIndent(fn: Printer.()->Unit) {
209218
popIndent()
210219
}
211220

221+
private fun generateMarkdown(properties: List<KProperty1<*, *>>) {
222+
println("| Name | Description | Possible values |Default value |")
223+
println("|------|-------------|-----------------|--------------|")
224+
for (property in properties) {
225+
val name = property.name
226+
val description = property.findAnnotation<Argument>()!!.description
227+
val possibleValues = property.gradleValues.possibleValues
228+
val defaultValue = when (property.gradleDefaultValue) {
229+
"null" -> ""
230+
"emptyList()" -> "[]"
231+
else -> property.gradleDefaultValue
232+
}
233+
234+
println("| `$name` | $description | ${possibleValues.orEmpty().joinToString()} | $defaultValue |")
235+
}
236+
}
237+
212238
private val KProperty1<*, *>.gradleValues: DefaultValues
213239
get() = findAnnotation<GradleOption>()!!.value.objectInstance!!
214240

0 commit comments

Comments
 (0)