From 48a66c9d41bcb765852774cc3e6a9d3e2d9de36f Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 26 Jan 2017 16:46:41 +0100 Subject: [PATCH] Generate Markdown documentation for Gradle options --- .../arguments/GenerateGradleOptions.kt | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/generators/src/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt b/generators/src/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt index b256997b0a4..d3ecbd99ba5 100644 --- a/generators/src/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt +++ b/generators/src/org/jetbrains/kotlin/generators/arguments/GenerateGradleOptions.kt @@ -49,6 +49,9 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.() commonOptions + additionalOptions) } + println("### Attributes common for 'kotlin' and 'kotlin2js'\n") + generateMarkdown(commonOptions + additionalOptions) + // generate jvm interface val jvmInterfaceFqName = FqName("org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions") val jvmOptions = gradleOptions() @@ -68,6 +71,9 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.() commonOptions + jvmOptions) } + println("\n### Attributes specific for 'kotlin'\n") + generateMarkdown(jvmOptions) + // generate js interface val jsInterfaceFqName = FqName("org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions") val jsOptions = gradleOptions() @@ -85,6 +91,9 @@ fun generateKotlinGradleOptions(withPrinterToFile: (targetFile: File, Printer.() k2JsCompilerArgumentsFqName, commonOptions + jsOptions) } + + println("\n### Attributes specific for 'kotlin2js'\n") + generateMarkdown(jsOptions) } fun main(args: Array) { @@ -209,6 +218,23 @@ private inline fun Printer.withIndent(fn: Printer.()->Unit) { popIndent() } +private fun generateMarkdown(properties: List>) { + println("| Name | Description | Possible values |Default value |") + println("|------|-------------|-----------------|--------------|") + for (property in properties) { + val name = property.name + val description = property.findAnnotation()!!.description + val possibleValues = property.gradleValues.possibleValues + val defaultValue = when (property.gradleDefaultValue) { + "null" -> "" + "emptyList()" -> "[]" + else -> property.gradleDefaultValue + } + + println("| `$name` | $description | ${possibleValues.orEmpty().joinToString()} | $defaultValue |") + } +} + private val KProperty1<*, *>.gradleValues: DefaultValues get() = findAnnotation()!!.value.objectInstance!!