/
SharedTasks.kt
104 lines (96 loc) · 4.9 KB
/
SharedTasks.kt
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
package io.gitlab.arturbosch.detekt.internal
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.DetektCreateBaselineTask
import io.gitlab.arturbosch.detekt.extensions.DetektExtension
import org.gradle.api.JavaVersion
import org.gradle.api.Project
import org.gradle.api.plugins.JavaBasePlugin
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.tasks.TaskProvider
import org.gradle.jvm.toolchain.JavaToolchainService
internal fun Project.registerDetektTask(
name: String,
extension: DetektExtension,
configuration: Detekt.() -> Unit
): TaskProvider<Detekt> =
tasks.register(name, Detekt::class.java) {
@Suppress("DEPRECATION")
with(extension.reports) {
if (xml.outputLocation.isPresent) {
logger.warn(
"XML report location set on detekt {} extension will be ignored for $name task. See " +
"https://detekt.dev/gradle.html#reports"
)
}
if (sarif.outputLocation.isPresent) {
logger.warn(
"SARIF report location set on detekt {} extension will be ignored for $name task. See " +
"https://detekt.dev/gradle.html#reports"
)
}
if (txt.outputLocation.isPresent) {
logger.warn(
"TXT report location set on detekt {} extension will be ignored for $name task. See " +
"https://detekt.dev/gradle.html#reports"
)
}
if (html.outputLocation.isPresent) {
logger.warn(
"HTML report location set on detekt {} extension will be ignored for $name task. See " +
"https://detekt.dev/gradle.html#reports"
)
}
}
project.plugins.withType(JavaBasePlugin::class.java) { _ ->
val toolchain = project.extensions.getByType(JavaPluginExtension::class.java).toolchain
// acquire a provider that returns the launcher for the toolchain
val service = project.extensions.getByType(JavaToolchainService::class.java)
val defaultLauncher = service.launcherFor(toolchain)
it.jdkHome.convention(defaultLauncher.map { launcher -> launcher.metadata.installationPath })
it.jvmTargetProp.convention(
defaultLauncher.map { launcher ->
JavaVersion.toVersion(launcher.metadata.languageVersion.asInt()).toString()
}
)
}
it.debugProp.set(provider { extension.debug })
it.parallelProp.set(provider { extension.parallel })
it.disableDefaultRuleSetsProp.set(provider { extension.disableDefaultRuleSets })
it.buildUponDefaultConfigProp.set(provider { extension.buildUponDefaultConfig })
it.failFastProp.set(provider { @Suppress("DEPRECATION") extension.failFast })
it.autoCorrectProp.set(provider { extension.autoCorrect })
it.config.setFrom(provider { extension.config })
it.ignoreFailuresProp.set(project.provider { extension.ignoreFailures })
it.basePathProp.set(extension.basePath)
it.allRulesProp.set(provider { extension.allRules })
configuration(it)
}
internal fun Project.registerCreateBaselineTask(
name: String,
extension: DetektExtension,
configuration: DetektCreateBaselineTask.() -> Unit
): TaskProvider<DetektCreateBaselineTask> =
tasks.register(name, DetektCreateBaselineTask::class.java) {
project.plugins.withType(JavaBasePlugin::class.java) { _ ->
val toolchain = project.extensions.getByType(JavaPluginExtension::class.java).toolchain
// acquire a provider that returns the launcher for the toolchain
val service = project.extensions.getByType(JavaToolchainService::class.java)
val defaultLauncher = service.launcherFor(toolchain)
it.jdkHome.convention(defaultLauncher.map { launcher -> launcher.metadata.installationPath })
it.jvmTargetProp.convention(
defaultLauncher.map { launcher ->
JavaVersion.toVersion(launcher.metadata.languageVersion.asInt()).toString()
}
)
}
it.config.setFrom(project.provider { extension.config })
it.debug.set(project.provider { extension.debug })
it.parallel.set(project.provider { extension.parallel })
it.disableDefaultRuleSets.set(project.provider { extension.disableDefaultRuleSets })
it.buildUponDefaultConfig.set(project.provider { extension.buildUponDefaultConfig })
@Suppress("DEPRECATION") it.failFast.set(project.provider { extension.failFast })
it.autoCorrect.set(project.provider { extension.autoCorrect })
it.basePathProp.set(extension.basePath)
it.allRules.set(provider { extension.allRules })
configuration(it)
}