diff options
author | sebastian.sellmair <sebastian.sellmair@jetbrains.com> | 2020-07-22 11:12:16 +0200 |
---|---|---|
committer | Sebastian Sellmair <34319766+sellmair@users.noreply.github.com> | 2020-08-14 17:51:11 +0200 |
commit | 37d12bed40edc226d96d0e1a4b28a24583ece94f (patch) | |
tree | 424ec0e7f60fc9a9c0eb9a9747a99faea714fdf9 /runners/gradle-plugin/src/main/kotlin | |
parent | eae1ce49d18c2978b49166ea502bf2c109a85504 (diff) | |
download | dokka-37d12bed40edc226d96d0e1a4b28a24583ece94f.tar.gz dokka-37d12bed40edc226d96d0e1a4b28a24583ece94f.tar.bz2 dokka-37d12bed40edc226d96d0e1a4b28a24583ece94f.zip |
DokkaConfiguration: Use `Set` instead of `List` when collections are expected to be distinct
Diffstat (limited to 'runners/gradle-plugin/src/main/kotlin')
7 files changed, 34 insertions, 51 deletions
diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt index 7a73d633..4762c333 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaCollectorTask.kt @@ -10,7 +10,7 @@ open class DokkaCollectorTask : AbstractDokkaParentTask() { cacheRoot = cacheRoot, failOnWarning = failOnWarning, offlineMode = offlineMode, - pluginsClasspath = plugins.resolve().toList(), + pluginsClasspath = plugins.resolve().toSet(), ) val subprojectDokkaConfigurations = dokkaTasks.map { dokkaTask -> dokkaTask.buildDokkaConfiguration() } diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultimoduleTask.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultimoduleTask.kt index 8369954b..48a9721f 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultimoduleTask.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaMultimoduleTask.kt @@ -2,6 +2,7 @@ package org.jetbrains.dokka.gradle import org.gradle.api.internal.tasks.TaskDependencyInternal import org.gradle.api.tasks.Input +import org.gradle.api.tasks.Internal import org.jetbrains.dokka.DokkaConfigurationImpl import org.jetbrains.dokka.DokkaModuleDescriptionImpl import org.jetbrains.dokka.DokkaMultimoduleBootstrapImpl @@ -16,6 +17,7 @@ open class DokkaMultimoduleTask : AbstractDokkaParentTask(DokkaMultimoduleBootst @Input var documentationFileName: String = "README.md" + @Internal override fun getTaskDependencies(): TaskDependencyInternal { return super.getTaskDependencies() + dokkaTasks } @@ -27,7 +29,7 @@ open class DokkaMultimoduleTask : AbstractDokkaParentTask(DokkaMultimoduleBootst pluginsConfiguration = pluginsConfiguration, failOnWarning = failOnWarning, offlineMode = offlineMode, - pluginsClasspath = plugins.resolve().toList(), + pluginsClasspath = plugins.resolve().toSet(), modules = dokkaTasks.map { dokkaTask -> DokkaModuleDescriptionImpl( name = dokkaTask.project.name, diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt index a74068ae..06b936ce 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/DokkaTask.kt @@ -29,7 +29,7 @@ open class DokkaTask : AbstractDokkaTask(DokkaBootstrapImpl::class) { failOnWarning = failOnWarning, sourceSets = dokkaSourceSets.build(), pluginsConfiguration = pluginsConfiguration, - pluginsClasspath = plugins.resolve().toList() + pluginsClasspath = plugins.resolve() ) } } diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilder.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilder.kt index e420e1a5..09c9bec9 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilder.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleDokkaSourceSetBuilder.kt @@ -27,7 +27,7 @@ open class GradleDokkaSourceSetBuilder constructor( @Classpath @Optional - var classpath: List<File> = emptyList() + val classpath: MutableSet<File> = mutableSetOf() @Input @Optional @@ -41,18 +41,18 @@ open class GradleDokkaSourceSetBuilder constructor( val sourceSetID: DokkaSourceSetID = DokkaSourceSetID(project, name) @Nested - var sourceRoots: MutableList<GradleSourceRootBuilder> = mutableListOf() + val sourceRoots: MutableSet<File> = mutableSetOf() @Input - var dependentSourceSets: MutableSet<DokkaSourceSetID> = mutableSetOf() + val dependentSourceSets: MutableSet<DokkaSourceSetID> = mutableSetOf() @InputFiles @Optional - var samples: List<File> = emptyList() + val samples: MutableSet<File> = mutableSetOf() @InputFiles @Optional - var includes: List<File> = emptyList() + val includes: MutableSet<File> = mutableSetOf() @Input var includeNonPublic: Boolean = DokkaDefaults.includeNonPublic @@ -73,13 +73,13 @@ open class GradleDokkaSourceSetBuilder constructor( var jdkVersion: Int = DokkaDefaults.jdkVersion @Nested - var sourceLinks: MutableList<GradleSourceLinkBuilder> = mutableListOf() + val sourceLinks: MutableSet<GradleSourceLinkBuilder> = mutableSetOf() @Nested - var perPackageOptions: MutableList<GradlePackageOptionsBuilder> = mutableListOf() + val perPackageOptions: MutableList<GradlePackageOptionsBuilder> = mutableListOf() @Nested - var externalDocumentationLinks: MutableList<GradleExternalDocumentationLinkBuilder> = mutableListOf() + val externalDocumentationLinks: MutableSet<GradleExternalDocumentationLinkBuilder> = mutableSetOf() @Input @Optional @@ -99,7 +99,7 @@ open class GradleDokkaSourceSetBuilder constructor( var noAndroidSdkLink: Boolean = false @Input - var suppressedFiles: List<File> = emptyList() + val suppressedFiles: MutableSet<File> = mutableSetOf() @Input @Optional @@ -134,15 +134,13 @@ open class GradleDokkaSourceSetBuilder constructor( } // TODO NOW: Cover with tests - fun sourceRoot(c: Closure<Unit>) { - val configured = ConfigureUtil.configure(c, GradleSourceRootBuilder()) - sourceRoots.add(configured) + + fun sourceRoot(file: File) { + sourceRoots.add(file) } - fun sourceRoot(action: Action<in GradleSourceRootBuilder>) { - val sourceRoot = GradleSourceRootBuilder() - action.execute(sourceRoot) - sourceRoots.add(sourceRoot) + fun sourceRoot(path: String) { + sourceRoots.add(project.file(path)) } fun sourceLink(c: Closure<Unit>) { @@ -241,33 +239,31 @@ open class GradleDokkaSourceSetBuilder constructor( else -> Platform.DEFAULT } - val sourceRoots = sourceRoots.build().distinct() - - val suppressedFiles = suppressedFiles + project.collectSuppressedFiles(sourceRoots) + val suppressedFiles = suppressedFiles + project.collectSuppressedFiles(sourceRoots.toSet()) return DokkaSourceSetImpl( - classpath = classpath.distinct().toList(), + classpath = classpath.toSet(), moduleDisplayName = moduleDisplayName, displayName = displayName, sourceSetID = sourceSetID, - sourceRoots = sourceRoots, + sourceRoots = sourceRoots.toSet(), dependentSourceSets = dependentSourceSets.toSet(), - samples = samples.toList(), - includes = includes.toList(), + samples = samples.toSet(), + includes = includes.toSet(), includeNonPublic = includeNonPublic, includeRootPackage = includeRootPackage, reportUndocumented = reportUndocumented, skipEmptyPackages = skipEmptyPackages, skipDeprecated = skipDeprecated, jdkVersion = jdkVersion, - sourceLinks = sourceLinks.build(), + sourceLinks = sourceLinks.build().toSet(), perPackageOptions = perPackageOptions.build(), - externalDocumentationLinks = externalDocumentationLinks, + externalDocumentationLinks = externalDocumentationLinks.toSet(), languageVersion = languageVersion, apiVersion = apiVersion, noStdlibLink = noStdlibLink, noJdkLink = noJdkLink, - suppressedFiles = suppressedFiles, + suppressedFiles = suppressedFiles.toSet(), analysisPlatform = analysisPlatform ) } @@ -286,13 +282,13 @@ fun GradleDokkaSourceSetBuilder.dependsOn(sourceSet: AndroidSourceSet) { } // TODO NOW: Test -private fun Project.collectSuppressedFiles(sourceRoots: List<DokkaConfiguration.SourceRoot>): List<File> = +private fun Project.collectSuppressedFiles(sourceRoots: Set<File>): Set<File> = if (project.isAndroidProject()) { val generatedRoot = project.buildDir.resolve("generated").absoluteFile sourceRoots - .map { it.directory } .filter { it.startsWith(generatedRoot) } .flatMap { it.walk().toList() } + .toSet() } else { - emptyList() + emptySet() } diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleSourceRootBuilder.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleSourceRootBuilder.kt deleted file mode 100644 index 687dec9c..00000000 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/GradleSourceRootBuilder.kt +++ /dev/null @@ -1,15 +0,0 @@ -package org.jetbrains.dokka.gradle - -import org.gradle.api.tasks.InputDirectory -import org.jetbrains.dokka.DokkaConfigurationBuilder -import org.jetbrains.dokka.SourceRootImpl -import java.io.File - -class GradleSourceRootBuilder : DokkaConfigurationBuilder<SourceRootImpl> { - @InputDirectory - var directory: File? = null - - override fun build(): SourceRootImpl { - return SourceRootImpl(checkNotNull(directory) { "directory not set" }) - } -} diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/KotlinSourceSetGist.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/KotlinSourceSetGist.kt index 334aae15..6e202ac3 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/KotlinSourceSetGist.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/KotlinSourceSetGist.kt @@ -11,6 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import java.io.File +// TODO NOW: Test this all private typealias KotlinCompilation = org.jetbrains.kotlin.gradle.plugin.KotlinCompilation<KotlinCommonOptions> diff --git a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/sourceSetKotlinGistConfiguration.kt b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/sourceSetKotlinGistConfiguration.kt index 9bb11f36..88833a76 100644 --- a/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/sourceSetKotlinGistConfiguration.kt +++ b/runners/gradle-plugin/src/main/kotlin/org/jetbrains/dokka/gradle/sourceSetKotlinGistConfiguration.kt @@ -9,13 +9,12 @@ fun GradleDokkaSourceSetBuilder.configureWithKotlinSourceSet(sourceSet: KotlinSo } internal fun GradleDokkaSourceSetBuilder.configureWithKotlinSourceSetGist(sourceSet: KotlinSourceSetGist) { - sourceRoots.addAll(sourceRoots.union(sourceSet.sourceRoots.toSourceRoots()).distinct()) + sourceRoots.addAll(sourceRoots.union(sourceSet.sourceRoots).distinct()) dependentSourceSets.addAll(dependentSourceSets) dependentSourceSets.addAll(sourceSet.dependentSourceSets.map { DokkaSourceSetID(project, it) }) - classpath = classpath.union(sourceSet.classpath).distinct() + classpath.addAll(sourceSet.classpath) if (platform == null && sourceSet.platform != "") platform = sourceSet.platform } -private fun Iterable<File>.toSourceRoots(): List<GradleSourceRootBuilder> = - this.filter { it.exists() }.map { GradleSourceRootBuilder().apply { directory = it } } + |