[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.CleanDataTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.withType
|
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.SingleActionPerProject
|
||||||
import org.jetbrains.kotlin.gradle.utils.castIsolatedKotlinPluginClassLoaderAware
|
import org.jetbrains.kotlin.gradle.utils.castIsolatedKotlinPluginClassLoaderAware
|
||||||
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
import org.jetbrains.kotlin.gradle.utils.doNotTrackStateCompat
|
||||||
@@ -80,7 +81,7 @@ open class NodeJsRootPlugin : Plugin<Project> {
|
|||||||
it.group = TASKS_GROUP_NAME
|
it.group = TASKS_GROUP_NAME
|
||||||
it.description = "Find, download and link NPM dependencies and projects"
|
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 as KotlinNpmInstallTask
|
||||||
task.preparedFiles.all { file ->
|
task.preparedFiles.all { file ->
|
||||||
file.exists()
|
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.targets.js.yarn.YarnLockCopyTask.Companion.UPGRADE_YARN_LOCK
|
||||||
import org.jetbrains.kotlin.gradle.tasks.CleanDataTask
|
import org.jetbrains.kotlin.gradle.tasks.CleanDataTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
import org.jetbrains.kotlin.gradle.tasks.registerTask
|
||||||
|
import org.jetbrains.kotlin.gradle.utils.onlyIfCompat
|
||||||
|
|
||||||
open class YarnPlugin : Plugin<Project> {
|
open class YarnPlugin : Plugin<Project> {
|
||||||
override fun apply(project: Project): Unit = project.run {
|
override fun apply(project: Project): Unit = project.run {
|
||||||
@@ -58,7 +59,7 @@ open class YarnPlugin : Plugin<Project> {
|
|||||||
task.npmResolutionManager.value(kotlinNpmResolutionManager)
|
task.npmResolutionManager.value(kotlinNpmResolutionManager)
|
||||||
.disallowChanges()
|
.disallowChanges()
|
||||||
|
|
||||||
task.onlyIf {
|
task.onlyIfCompat("Prepare NPM project only in configuring state") {
|
||||||
it as RootPackageJsonTask
|
it as RootPackageJsonTask
|
||||||
it.npmResolutionManager.get().isConfiguringState()
|
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.project.ProjectInternal
|
||||||
import org.gradle.api.internal.tasks.testing.TestDescriptorInternal
|
import org.gradle.api.internal.tasks.testing.TestDescriptorInternal
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
|
import org.gradle.api.specs.Spec
|
||||||
import org.gradle.api.tasks.WorkResult
|
import org.gradle.api.tasks.WorkResult
|
||||||
import org.gradle.api.tasks.bundling.AbstractArchiveTask
|
import org.gradle.api.tasks.bundling.AbstractArchiveTask
|
||||||
import org.gradle.api.tasks.testing.TestDescriptor
|
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)
|
* [ArtifactCollection.getResolvedArtifacts] is available after 7.4 (inclusive)
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user