Skip to content

Commit

Permalink
Add ExecResult to Task #237
Browse files Browse the repository at this point in the history
  • Loading branch information
deepy committed Oct 17, 2022
1 parent a811196 commit 610c145
Show file tree
Hide file tree
Showing 11 changed files with 36 additions and 21 deletions.
5 changes: 3 additions & 2 deletions src/main/kotlin/com/github/gradle/node/exec/ExecRunner.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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

/**
Expand Down Expand Up @@ -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)
Expand Down
6 changes: 4 additions & 2 deletions src/main/kotlin/com/github/gradle/node/exec/NodeExecRunner.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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)
}
}
14 changes: 8 additions & 6 deletions src/main/kotlin/com/github/gradle/node/npm/exec/NpmExecRunner.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,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 java.io.File
import javax.inject.Inject

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)
}
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> {
Expand Down
2 changes: 1 addition & 1 deletion src/main/kotlin/com/github/gradle/node/npm/task/NpmTask.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
2 changes: 1 addition & 1 deletion src/main/kotlin/com/github/gradle/node/npm/task/NpxTask.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
5 changes: 5 additions & 0 deletions src/main/kotlin/com/github/gradle/node/task/BaseTask.kt
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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)
Expand All @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}

0 comments on commit 610c145

Please sign in to comment.