-
Notifications
You must be signed in to change notification settings - Fork 1
/
build.gradle.kts
118 lines (96 loc) · 4.37 KB
/
build.gradle.kts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
buildscript {
dependencies {
classpath("org.jetbrains.dokka:versioning-plugin:${Dependencies.dokka}")
}
}
plugins {
kotlin("multiplatform") version Dependencies.kotlin apply false
kotlin("jvm") version Dependencies.kotlin apply false
id("org.jetbrains.kotlin.plugin.serialization") version Dependencies.kotlin apply false
kotlin("kapt") version Dependencies.kotlin apply false
id("com.gradle.plugin-publish") version Dependencies.gradlePluginPublish apply false
id("org.jetbrains.dokka") version Dependencies.dokka apply true
id("com.github.gmazzo.buildconfig") version Dependencies.buildconfig apply false
id("com.vanniktech.maven.publish") version Dependencies.publishPlugin apply false
signing
}
val sourceLinkBranch: String? by project
val versionDir: String? by project
allprojects {
version = "0.2.5-SNAPSHOT"
group = "com.github.rnett.krosstalk"
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots")
maven("https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven")
}
val isRoot = this == rootProject
val willPublish = parent != rootProject || isRoot
if (willPublish) {
apply(plugin = "org.jetbrains.dokka")
afterEvaluate {
apply(plugin = "com.vanniktech.maven.publish")
}
}
afterEvaluate {
val project = this
if (this.parent?.name != "plugins") {
try {
extensions.configure<org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension> {
explicitApi()
}
} catch (e: UnknownDomainObjectException) {
}
}
if (willPublish) {
tasks.withType<org.jetbrains.dokka.gradle.AbstractDokkaTask>() {
val (moduleName, moduleVersion, dokkaSourceSets) = when (this) {
is org.jetbrains.dokka.gradle.DokkaTask -> Triple(moduleName, moduleVersion, dokkaSourceSets)
is org.jetbrains.dokka.gradle.DokkaTaskPartial -> Triple(moduleName, moduleVersion, dokkaSourceSets)
else -> return@withType
}
moduleName.set(dokkaModuleName)
moduleVersion.set(if (sourceLinkBranch == null || sourceLinkBranch == "main") "main" else version.toString())
dokkaSourceSets.configureEach {
if (!isRoot) {
includes.from("README.md")
}
includeNonPublic.set(false)
suppressObviousFunctions.set(true)
suppressInheritedMembers.set(true)
skipDeprecated.set(true)
skipEmptyPackages.set(true)
jdkVersion.set(8)
println("Platform: ${platform.orNull}")
val sourceSet = this.sourceSetID.sourceSetName
sourceLink {
localDirectory.set(file("src/$sourceSet/kotlin"))
remoteUrl.set(java.net.URL(buildString {
append("https://github.com/rnett/krosstalk/blob/")
append(sourceLinkBranch ?: "main")
val dir = projectDir.relativeTo(rootProject.projectDir).path.trim('/')
append("/$dir/src/$sourceSet/kotlin")
}))
remoteLineSuffix.set("#L")
}
}
}
}
}
}
tasks.withType<org.jetbrains.dokka.gradle.DokkaMultiModuleTask>().configureEach {
removeChildTasks(project(":plugins:krosstalk-compiler-plugin"))
removeChildTasks(project(":plugins:krosstalk-gradle-plugin"))
this.fileLayout.set(org.jetbrains.dokka.gradle.DokkaMultiModuleFileLayout.CompactInParent)
this.includes.from("DOCS.md")
this.moduleName.set("Krosstalk")
this.moduleVersion.set(version.toString())
if (versionDir != null && "snapshot" !in project.version.toString().toLowerCase()) {
val oldVersionsDir = projectDir.resolve(versionDir!!)
println("Using older versions from $oldVersionsDir")
pluginConfiguration<org.jetbrains.dokka.versioning.VersioningPlugin, org.jetbrains.dokka.versioning.VersioningConfiguration> {
version = project.version.toString()
olderVersionsDir = oldVersionsDir
}
}
}