Skip to content

Commit 7027da8

Browse files
authored
Move enableLogHtmlPublicationLink property from LogHtmlPublicationLinkTask into PluginFeaturesService (#3845)
* Move `enableLogHtmlPublicationLink` property from LogHtmlPublicationLinkTask into PluginFeaturesService KT-71347
1 parent b037efb commit 7027da8

File tree

3 files changed

+44
-37
lines changed

3 files changed

+44
-37
lines changed

dokka-runners/dokka-gradle-plugin/api/dokka-gradle-plugin.api

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -556,7 +556,6 @@ public abstract class org/jetbrains/dokka/gradle/tasks/DokkaGenerateTask : org/j
556556

557557
public abstract class org/jetbrains/dokka/gradle/tasks/LogHtmlPublicationLinkTask : org/jetbrains/dokka/gradle/tasks/DokkaBaseTask {
558558
public static final field Companion Lorg/jetbrains/dokka/gradle/tasks/LogHtmlPublicationLinkTask$Companion;
559-
public static final field ENABLE_TASK_PROPERTY_NAME Ljava/lang/String;
560559
public final fun exec ()V
561560
public abstract fun getIndexHtmlPath ()Lorg/gradle/api/provider/Property;
562561
public abstract fun getServerUri ()Lorg/gradle/api/provider/Property;

dokka-runners/dokka-gradle-plugin/src/main/kotlin/internal/PluginFeaturesService.kt

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,29 @@ import org.gradle.api.Project
1010
import org.gradle.api.logging.Logging
1111
import org.gradle.api.provider.Property
1212
import org.gradle.api.provider.Provider
13+
import org.gradle.api.provider.ProviderFactory
1314
import org.gradle.api.services.BuildService
1415
import org.gradle.api.services.BuildServiceParameters
1516
import org.gradle.kotlin.dsl.extra
1617
import org.gradle.kotlin.dsl.provideDelegate
1718
import org.jetbrains.dokka.gradle.internal.PluginFeaturesService.PluginMode.*
19+
import org.jetbrains.dokka.gradle.tasks.LogHtmlPublicationLinkTask
1820
import java.io.File
1921
import java.util.*
22+
import javax.inject.Inject
2023

2124
/**
2225
* Internal utility service for managing Dokka Plugin features and warnings.
2326
*
2427
* Using a [BuildService] is most useful for only logging a single warning for the whole project,
2528
* regardless of how many subprojects have applied DGP.
2629
*/
27-
internal abstract class PluginFeaturesService : BuildService<PluginFeaturesService.Params> {
30+
internal abstract class PluginFeaturesService
31+
@DokkaInternalApi
32+
@Inject
33+
constructor(
34+
providers: ProviderFactory,
35+
) : BuildService<PluginFeaturesService.Params> {
2836

2937
interface Params : BuildServiceParameters {
3038
/** @see [PluginFeaturesService.primaryService] */
@@ -241,6 +249,29 @@ internal abstract class PluginFeaturesService : BuildService<PluginFeaturesServi
241249
}
242250
}
243251

252+
/**
253+
* Control whether the [LogHtmlPublicationLinkTask] task is enabled.
254+
*
255+
* Useful for disabling the task locally, or in CI/CD, or for tests.
256+
*
257+
* It can be set in any `gradle.properties` file. For example, on a single user's machine:
258+
*
259+
* ```properties
260+
* # $GRADLE_USER_HOME/gradle.properties
261+
* org.jetbrains.dokka.gradle.enabledLogHtmlPublicationLink=false
262+
* ```
263+
*
264+
* or via an environment variable
265+
*
266+
* ```env
267+
* ORG_GRADLE_PROJECT_org.jetbrains.dokka.gradle.enabledLogHtmlPublicationLink=false
268+
* ```
269+
*/
270+
val enableLogHtmlPublicationLink: Provider<Boolean> =
271+
providers.gradleProperty("org.jetbrains.dokka.gradle.enableLogHtmlPublicationLink")
272+
.toBoolean()
273+
.orElse(true)
274+
244275
companion object {
245276
private val logger = Logging.getLogger(PluginFeaturesService::class.java)
246277

dokka-runners/dokka-gradle-plugin/src/main/kotlin/tasks/LogHtmlPublicationLinkTask.kt

Lines changed: 12 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import org.gradle.api.tasks.TaskAction
1212
import org.gradle.api.tasks.UntrackedTask
1313
import org.gradle.kotlin.dsl.of
1414
import org.jetbrains.dokka.gradle.internal.DokkaInternalApi
15+
import org.jetbrains.dokka.gradle.internal.PluginFeaturesService.Companion.pluginFeaturesService
1516
import org.jetbrains.dokka.gradle.internal.appendPath
16-
import org.jetbrains.dokka.gradle.tasks.LogHtmlPublicationLinkTask.Companion.ENABLE_TASK_PROPERTY_NAME
1717
import org.slf4j.LoggerFactory
1818
import java.net.HttpURLConnection
1919
import java.net.URI
@@ -28,8 +28,8 @@ import javax.inject.Inject
2828
* [IntelliJ's built-in server](https://www.jetbrains.com/help/phpstorm/php-built-in-web-server.html#ws_html_preview_output_built_in_browser)†
2929
* to host the file.
3030
*
31-
*
32-
* This task can be disabled using the [ENABLE_TASK_PROPERTY_NAME] project property.
31+
* This task can be disabled via a Gradle property.
32+
* See [org.jetbrains.dokka.gradle.internal.PluginFeaturesService.enableLogHtmlPublicationLink].
3333
*
3434
* ---
3535
*
@@ -88,18 +88,9 @@ constructor(
8888
// to display this task prominently.
8989
group = "other"
9090

91-
val serverActive = providers.of(ServerActiveCheck::class) {
92-
parameters.uri.convention(serverUri)
93-
}
94-
super.onlyIf("server URL is reachable") { serverActive.get() }
95-
96-
val logHtmlPublicationLinkTaskEnabled = providers
97-
.gradleProperty(ENABLE_TASK_PROPERTY_NAME)
98-
.map(String::toBoolean)
99-
.orElse(true)
100-
101-
super.onlyIf("task is enabled via property") {
102-
logHtmlPublicationLinkTaskEnabled.get()
91+
val enableLogHtmlPublicationLink = project.pluginFeaturesService.enableLogHtmlPublicationLink
92+
super.onlyIf("task is enabled via 'enableLogHtmlPublicationLink' property") {
93+
enableLogHtmlPublicationLink.get()
10394
}
10495

10596
super.onlyIf("${::serverUri.name} is present") {
@@ -109,6 +100,11 @@ constructor(
109100
super.onlyIf("${::indexHtmlPath.name} is present") {
110101
!indexHtmlPath.orNull.isNullOrBlank()
111102
}
103+
104+
val serverActive = providers.of(ServerActiveCheck::class) {
105+
parameters.uri.convention(serverUri)
106+
}
107+
super.onlyIf("server URL is reachable") { serverActive.get() }
112108
}
113109

114110
@TaskAction
@@ -194,24 +190,5 @@ constructor(
194190
// }
195191
}
196192

197-
companion object {
198-
/**
199-
* Control whether the [LogHtmlPublicationLinkTask] task is enabled. Useful for disabling the
200-
* task locally, or in CI/CD, or for tests.
201-
*
202-
* It can be set in any `gradle.properties` file. For example, on a specific machine:
203-
*
204-
* ```properties
205-
* # $GRADLE_USER_HOME/gradle.properties
206-
* org.jetbrains.dokka.gradle.enabledLogHtmlPublicationLink=false
207-
* ```
208-
*
209-
* or via an environment variable
210-
*
211-
* ```env
212-
* ORG_GRADLE_PROJECT_org.jetbrains.dokka.gradle.enabledLogHtmlPublicationLink=false
213-
* ```
214-
*/
215-
const val ENABLE_TASK_PROPERTY_NAME = "org.jetbrains.dokka.gradle.enableLogHtmlPublicationLink"
216-
}
193+
companion object
217194
}

0 commit comments

Comments
 (0)