[Gradle, JS] Only if with reasons
This commit is contained in:
committed by
Space Team
parent
9d8e7991a8
commit
7d2ba28911
+2
-1
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin
|
||||
import org.jetbrains.kotlin.gradle.tasks.CleanDataTask
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
||||
import org.jetbrains.kotlin.gradle.utils.*
|
||||
import org.jetbrains.kotlin.gradle.utils.SingleActionPerProject
|
||||
import org.jetbrains.kotlin.gradle.utils.castIsolatedKotlinPluginClassLoaderAware
|
||||
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||
@@ -80,7 +81,7 @@ open class NodeJsRootPlugin : Plugin<Project> {
|
||||
it.group = TASKS_GROUP_NAME
|
||||
it.description = "Find, download and link NPM dependencies and projects"
|
||||
|
||||
it.onlyIf { task ->
|
||||
it.onlyIfCompat("No package.json files for install") { task ->
|
||||
task as KotlinNpmInstallTask
|
||||
task.preparedFiles.all { file ->
|
||||
file.exists()
|
||||
|
||||
+2
-1
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockCopyTask.Companion.ST
|
||||
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockCopyTask.Companion.UPGRADE_YARN_LOCK
|
||||
import org.jetbrains.kotlin.gradle.tasks.CleanDataTask
|
||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||
import org.jetbrains.kotlin.gradle.utils.onlyIfCompat
|
||||
|
||||
open class YarnPlugin : Plugin<Project> {
|
||||
override fun apply(project: Project): Unit = project.run {
|
||||
@@ -58,7 +59,7 @@ open class YarnPlugin : Plugin<Project> {
|
||||
task.npmResolutionManager.value(kotlinNpmResolutionManager)
|
||||
.disallowChanges()
|
||||
|
||||
task.onlyIf {
|
||||
task.onlyIfCompat("Prepare NPM project only in configuring state") {
|
||||
it as RootPackageJsonTask
|
||||
it.npmResolutionManager.get().isConfiguringState()
|
||||
}
|
||||
|
||||
+13
@@ -28,6 +28,7 @@ import org.gradle.api.file.FileTree
|
||||
import org.gradle.api.internal.project.ProjectInternal
|
||||
import org.gradle.api.internal.tasks.testing.TestDescriptorInternal
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.specs.Spec
|
||||
import org.gradle.api.tasks.WorkResult
|
||||
import org.gradle.api.tasks.bundling.AbstractArchiveTask
|
||||
import org.gradle.api.tasks.testing.TestDescriptor
|
||||
@@ -78,6 +79,18 @@ internal fun Task.doNotTrackStateCompat(because: String) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* According to [Gradle 7.6 release notes](https://docs.gradle.org/7.6/release-notes.html#introduced-ability-to-explain-why-a-task-was-skipped-with-a-message)
|
||||
* [Task.onlyIf] has reason message`
|
||||
*/
|
||||
internal fun Task.onlyIfCompat(onlyIfReason: String, onlyIfSpec: Spec<in Task>) {
|
||||
if (GradleVersion.current() < GradleVersion.version("7.6")) {
|
||||
onlyIf(onlyIfSpec)
|
||||
} else {
|
||||
onlyIf(onlyIfReason, onlyIfSpec)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* [ArtifactCollection.getResolvedArtifacts] is available after 7.4 (inclusive)
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user