package org.jetbrains.dokka import java.io.File import java.net.URL enum class Platform(val key: String) { jvm("jvm"), js("js"), native("native"), common("common"); companion object { val DEFAULT = jvm fun fromString(key: String): Platform { return when (key.toLowerCase()) { jvm.key -> jvm js.key -> js native.key -> native common.key -> common else -> throw IllegalArgumentException("Unrecognized platform: $key") } } } } interface DokkaConfiguration { val outputDir: String val format: String val generateIndexPages: Boolean val cacheRoot: String? val passesConfigurations: List val modules: List val impliedPlatforms: List val pluginsClasspath: List val pluginsConfiguration: Map interface PassConfiguration { val moduleName: String val sourceSetName: String val classpath: List val sourceRoots: List val dependentSourceRoots: List val dependentSourceSets: List val samples: List val includes: List val includeNonPublic: Boolean val includeRootPackage: Boolean val reportUndocumented: Boolean val skipEmptyPackages: Boolean val skipDeprecated: Boolean val jdkVersion: Int val sourceLinks: List val perPackageOptions: List val externalDocumentationLinks: List val languageVersion: String? val apiVersion: String? val noStdlibLink: Boolean val noJdkLink: Boolean val suppressedFiles: List val collectInheritedExtensionsFromLibraries: Boolean val analysisPlatform: Platform val targets: List val sinceKotlin: String? } interface SourceRoot { val path: String } interface SourceLinkDefinition { val path: String val url: String val lineSuffix: String? } interface DokkaModuleDescription { val name: String val path: String val docFile: String } interface PackageOptions { val prefix: String val includeNonPublic: Boolean val reportUndocumented: Boolean val skipDeprecated: Boolean val suppress: Boolean } interface ExternalDocumentationLink { val url: URL val packageListUrl: URL open class Builder(open var url: URL? = null, open var packageListUrl: URL? = null) { constructor(root: String, packageList: String? = null) : this(URL(root), packageList?.let { URL(it) }) fun build(): ExternalDocumentationLink = if (packageListUrl != null && url != null) ExternalDocumentationLinkImpl(url!!, packageListUrl!!) else if (url != null) ExternalDocumentationLinkImpl(url!!, URL(url!!, "package-list")) else throw IllegalArgumentException("url or url && packageListUrl must not be null for external documentation link") } } }