diff --git a/src/main/kotlin/com/github/gradle/node/exec/ExecRunner.kt b/src/main/kotlin/com/github/gradle/node/exec/ExecRunner.kt index 14b4c28e..99d4ab9a 100644 --- a/src/main/kotlin/com/github/gradle/node/exec/ExecRunner.kt +++ b/src/main/kotlin/com/github/gradle/node/exec/ExecRunner.kt @@ -3,6 +3,7 @@ package com.github.gradle.node.exec import com.github.gradle.node.NodeExtension import com.github.gradle.node.util.ProjectApiHelper import org.gradle.api.file.DirectoryProperty +import org.gradle.process.ExecResult import java.io.File /** @@ -41,8 +42,8 @@ fun computeWorkingDir(nodeProjectDir: DirectoryProperty, execConfiguration: Exec * different meaning to its values. */ class ExecRunner { - fun execute(projectHelper: ProjectApiHelper, extension: NodeExtension, execConfiguration: ExecConfiguration) { - projectHelper.exec { + fun execute(projectHelper: ProjectApiHelper, extension: NodeExtension, execConfiguration: ExecConfiguration): ExecResult { + return projectHelper.exec { executable = execConfiguration.executable args = execConfiguration.args environment = computeEnvironment(execConfiguration) diff --git a/src/main/kotlin/com/github/gradle/node/exec/NodeExecRunner.kt b/src/main/kotlin/com/github/gradle/node/exec/NodeExecRunner.kt index 96151664..da3e1755 100644 --- a/src/main/kotlin/com/github/gradle/node/exec/NodeExecRunner.kt +++ b/src/main/kotlin/com/github/gradle/node/exec/NodeExecRunner.kt @@ -6,6 +6,7 @@ import com.github.gradle.node.util.zip import com.github.gradle.node.variant.VariantComputer import org.gradle.api.file.Directory import org.gradle.api.provider.Provider +import org.gradle.process.ExecResult /** * This function is responsible for setting up the configuration used when running the tasks. @@ -33,9 +34,10 @@ fun computeAdditionalBinPath(nodeExtension: NodeExtension, nodeBinDirProvider: P } class NodeExecRunner { - fun execute(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, variantComputer: VariantComputer) { + fun execute(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, variantComputer: VariantComputer): ExecResult { val execConfiguration = buildExecConfiguration(extension, nodeExecConfiguration, variantComputer).get() val execRunner = ExecRunner() - execRunner.execute(project, extension, execConfiguration) + + return execRunner.execute(project, extension, execConfiguration) } } diff --git a/src/main/kotlin/com/github/gradle/node/npm/exec/NpmExecRunner.kt b/src/main/kotlin/com/github/gradle/node/npm/exec/NpmExecRunner.kt index c62d452d..261f6333 100644 --- a/src/main/kotlin/com/github/gradle/node/npm/exec/NpmExecRunner.kt +++ b/src/main/kotlin/com/github/gradle/node/npm/exec/NpmExecRunner.kt @@ -11,6 +11,7 @@ import com.github.gradle.node.util.zip import com.github.gradle.node.variant.VariantComputer import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderFactory +import org.gradle.process.ExecResult import java.io.File import javax.inject.Inject @@ -18,10 +19,10 @@ abstract class NpmExecRunner { @get:Inject abstract val providers: ProviderFactory - fun executeNpmCommand(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, variants: VariantComputer) { + fun executeNpmCommand(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, variants: VariantComputer): ExecResult { val npmExecConfiguration = NpmExecConfiguration("npm" ) { variantComputer, nodeExtension, npmBinDir -> variantComputer.computeNpmExec(nodeExtension, npmBinDir) } - executeCommand(project, extension, addProxyEnvironmentVariables(extension, nodeExecConfiguration), + return executeCommand(project, extension, addProxyEnvironmentVariables(extension, nodeExecConfiguration), npmExecConfiguration, variants) } @@ -39,20 +40,21 @@ abstract class NpmExecRunner { return nodeExecConfiguration } - fun executeNpxCommand(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, variants: VariantComputer) { + fun executeNpxCommand(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, variants: VariantComputer): ExecResult { val npxExecConfiguration = NpmExecConfiguration("npx") { variantComputer, nodeExtension, npmBinDir -> variantComputer.computeNpxExec(nodeExtension, npmBinDir) } - executeCommand(project, extension, nodeExecConfiguration, npxExecConfiguration, variants) + + return executeCommand(project, extension, nodeExecConfiguration, npxExecConfiguration, variants) } private fun executeCommand(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, npmExecConfiguration: NpmExecConfiguration, - variantComputer: VariantComputer) { + variantComputer: VariantComputer): ExecResult { val execConfiguration = computeExecConfiguration(extension, npmExecConfiguration, nodeExecConfiguration, variantComputer).get() val execRunner = ExecRunner() - execRunner.execute(project, extension, execConfiguration) + return execRunner.execute(project, extension, execConfiguration) } private fun computeExecConfiguration(extension: NodeExtension, npmExecConfiguration: NpmExecConfiguration, diff --git a/src/main/kotlin/com/github/gradle/node/npm/task/NpmSetupTask.kt b/src/main/kotlin/com/github/gradle/node/npm/task/NpmSetupTask.kt index 64c3ba2b..67092f8d 100644 --- a/src/main/kotlin/com/github/gradle/node/npm/task/NpmSetupTask.kt +++ b/src/main/kotlin/com/github/gradle/node/npm/task/NpmSetupTask.kt @@ -71,7 +71,7 @@ abstract class NpmSetupTask : BaseTask() { val command = computeCommand() val nodeExecConfiguration = NodeExecConfiguration(command) val npmExecRunner = objects.newInstance(NpmExecRunner::class.java) - npmExecRunner.executeNpmCommand(projectHelper, nodeExtension, nodeExecConfiguration, variantComputer) + result = npmExecRunner.executeNpmCommand(projectHelper, nodeExtension, nodeExecConfiguration, variantComputer) } protected open fun computeCommand(): List { diff --git a/src/main/kotlin/com/github/gradle/node/npm/task/NpmTask.kt b/src/main/kotlin/com/github/gradle/node/npm/task/NpmTask.kt index e80d41b9..d6c3ce42 100644 --- a/src/main/kotlin/com/github/gradle/node/npm/task/NpmTask.kt +++ b/src/main/kotlin/com/github/gradle/node/npm/task/NpmTask.kt @@ -70,6 +70,6 @@ abstract class NpmTask : BaseTask() { NodeExecConfiguration(command, environment.get(), workingDir.asFile.orNull, ignoreExitValue.get(), execOverrides.orNull) val npmExecRunner = objects.newInstance(NpmExecRunner::class.java) - npmExecRunner.executeNpmCommand(projectHelper, nodeExtension, nodeExecConfiguration, variantComputer) + result = npmExecRunner.executeNpmCommand(projectHelper, nodeExtension, nodeExecConfiguration, variantComputer) } } diff --git a/src/main/kotlin/com/github/gradle/node/npm/task/NpxTask.kt b/src/main/kotlin/com/github/gradle/node/npm/task/NpxTask.kt index a47c0b96..3bf0686a 100644 --- a/src/main/kotlin/com/github/gradle/node/npm/task/NpxTask.kt +++ b/src/main/kotlin/com/github/gradle/node/npm/task/NpxTask.kt @@ -70,6 +70,6 @@ abstract class NpxTask : BaseTask() { NodeExecConfiguration(fullCommand, environment.get(), workingDir.asFile.orNull, ignoreExitValue.get(), execOverrides.orNull) val npmExecRunner = objects.newInstance(NpmExecRunner::class.java) - npmExecRunner.executeNpxCommand(projectHelper, extension, nodeExecConfiguration, variantComputer) + result = npmExecRunner.executeNpxCommand(projectHelper, extension, nodeExecConfiguration, variantComputer) } } diff --git a/src/main/kotlin/com/github/gradle/node/pnpm/exec/PnpmExecRunner.kt b/src/main/kotlin/com/github/gradle/node/pnpm/exec/PnpmExecRunner.kt index 3094e13c..3ebbf484 100644 --- a/src/main/kotlin/com/github/gradle/node/pnpm/exec/PnpmExecRunner.kt +++ b/src/main/kotlin/com/github/gradle/node/pnpm/exec/PnpmExecRunner.kt @@ -12,16 +12,18 @@ import com.github.gradle.node.util.zip import com.github.gradle.node.variant.VariantComputer import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderFactory +import org.gradle.process.ExecResult import javax.inject.Inject abstract class PnpmExecRunner { @get:Inject abstract val providers: ProviderFactory - fun executePnpmCommand(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, variants: VariantComputer) { + fun executePnpmCommand(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, variants: VariantComputer): ExecResult { val npmExecConfiguration = NpmExecConfiguration("pnpm" ) { variantComputer, nodeExtension, pnpmBinDir -> variantComputer.computePnpmExec(nodeExtension, pnpmBinDir) } - executeCommand(project, extension, addProxyEnvironmentVariables(extension, nodeExecConfiguration), + + return executeCommand(project, extension, addProxyEnvironmentVariables(extension, nodeExecConfiguration), npmExecConfiguration, variants) } @@ -41,11 +43,12 @@ abstract class PnpmExecRunner { private fun executeCommand(project: ProjectApiHelper, extension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, pnpmExecConfiguration: NpmExecConfiguration, - variantComputer: VariantComputer) { + variantComputer: VariantComputer): ExecResult { val execConfiguration = computeExecConfiguration(extension, pnpmExecConfiguration, nodeExecConfiguration, variantComputer).get() val execRunner = ExecRunner() - execRunner.execute(project, extension, execConfiguration) + + return execRunner.execute(project, extension, execConfiguration) } private fun computeExecConfiguration(extension: NodeExtension, pnpmExecConfiguration: NpmExecConfiguration, diff --git a/src/main/kotlin/com/github/gradle/node/pnpm/task/PnpmTask.kt b/src/main/kotlin/com/github/gradle/node/pnpm/task/PnpmTask.kt index 580b4eb6..35f6d343 100644 --- a/src/main/kotlin/com/github/gradle/node/pnpm/task/PnpmTask.kt +++ b/src/main/kotlin/com/github/gradle/node/pnpm/task/PnpmTask.kt @@ -72,6 +72,6 @@ abstract class PnpmTask : BaseTask() { ignoreExitValue.get(), execOverrides.orNull ) val pnpmExecRunner = objects.newInstance(PnpmExecRunner::class.java) - pnpmExecRunner.executePnpmCommand(projectHelper, nodeExtension, nodeExecConfiguration, variantComputer) + result = pnpmExecRunner.executePnpmCommand(projectHelper, nodeExtension, nodeExecConfiguration, variantComputer) } } diff --git a/src/main/kotlin/com/github/gradle/node/task/BaseTask.kt b/src/main/kotlin/com/github/gradle/node/task/BaseTask.kt index c653bb9b..a1e16b73 100644 --- a/src/main/kotlin/com/github/gradle/node/task/BaseTask.kt +++ b/src/main/kotlin/com/github/gradle/node/task/BaseTask.kt @@ -3,10 +3,15 @@ package com.github.gradle.node.task import com.github.gradle.node.util.PlatformHelper import com.github.gradle.node.variant.VariantComputer import org.gradle.api.DefaultTask +import org.gradle.api.provider.Property import org.gradle.api.tasks.Internal +import org.gradle.process.ExecResult abstract class BaseTask : DefaultTask() { + @get:Internal + var result: ExecResult? = null + @get:Internal var platformHelper = PlatformHelper.INSTANCE diff --git a/src/main/kotlin/com/github/gradle/node/yarn/exec/YarnExecRunner.kt b/src/main/kotlin/com/github/gradle/node/yarn/exec/YarnExecRunner.kt index 93fe366d..f5bd5584 100644 --- a/src/main/kotlin/com/github/gradle/node/yarn/exec/YarnExecRunner.kt +++ b/src/main/kotlin/com/github/gradle/node/yarn/exec/YarnExecRunner.kt @@ -11,6 +11,7 @@ import com.github.gradle.node.variant.VariantComputer import org.gradle.api.file.Directory import org.gradle.api.provider.Provider import org.gradle.api.provider.ProviderFactory +import org.gradle.process.ExecResult import javax.inject.Inject abstract class YarnExecRunner { @@ -22,7 +23,7 @@ abstract class YarnExecRunner { nodeExtension: NodeExtension, nodeExecConfiguration: NodeExecConfiguration, variantComputer: VariantComputer - ) { + ): ExecResult { val nodeDirProvider = variantComputer.computeNodeDir(nodeExtension) val yarnDirProvider = variantComputer.computeYarnDir(nodeExtension) val yarnBinDirProvider = variantComputer.computeYarnBinDir(yarnDirProvider) @@ -34,7 +35,8 @@ abstract class YarnExecRunner { addNpmProxyEnvironment(nodeExtension, nodeExecConfiguration), nodeExecConfiguration.workingDir, nodeExecConfiguration.ignoreExitValue, nodeExecConfiguration.execOverrides) val execRunner = ExecRunner() - execRunner.execute(project, nodeExtension, execConfiguration) + + return execRunner.execute(project, nodeExtension, execConfiguration) } private fun addNpmProxyEnvironment(nodeExtension: NodeExtension, diff --git a/src/main/kotlin/com/github/gradle/node/yarn/task/YarnTask.kt b/src/main/kotlin/com/github/gradle/node/yarn/task/YarnTask.kt index 0e012e44..1ddd8566 100644 --- a/src/main/kotlin/com/github/gradle/node/yarn/task/YarnTask.kt +++ b/src/main/kotlin/com/github/gradle/node/yarn/task/YarnTask.kt @@ -71,6 +71,6 @@ abstract class YarnTask : BaseTask() { NodeExecConfiguration(command, environment.get(), workingDir.asFile.orNull, ignoreExitValue.get(), execOverrides.orNull) val yarnExecRunner = objects.newInstance(YarnExecRunner::class.java) - yarnExecRunner.executeYarnCommand(projectHelper, nodeExtension, nodeExecConfiguration, variantComputer) + result = yarnExecRunner.executeYarnCommand(projectHelper, nodeExtension, nodeExecConfiguration, variantComputer) } }