Skip to content

Commit

Permalink
Modifies logging for binary and script resolution
Browse files Browse the repository at this point in the history
  • Loading branch information
Frederic Kneier committed Jun 15, 2023
1 parent f9f9d35 commit 063756e
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 15 deletions.
28 changes: 18 additions & 10 deletions src/main/kotlin/de/solugo/gradle/nodejs/NodeJsExtension.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package de.solugo.gradle.nodejs

import org.gradle.api.Project
import org.gradle.api.specs.Spec
import org.gradle.process.ExecSpec
import java.io.File

Expand All @@ -16,17 +15,21 @@ class NodeJsExtension(private val project: Project) {
project.provider { project.projectDir }
)

val instance; get() = NodeJsRegistry.resolve(
version = version.get(),
cacheFolder = cachePath.get(),
onInstall = { version, folder -> project.logger.lifecycle("Installing Node.js v$version to $folder")}
)
val instance
get() = NodeJsRegistry.resolve(
version = version.get(),
cacheFolder = cachePath.get(),
onInstall = { version, folder ->
project.logger.lifecycle("Installing Node.js v$version to $folder")
}
)

fun exec(action: NodeJsExecSpec.() -> Unit) {
project.exec { spec ->
spec.workingDir = rootPath.get()
action(object : NodeJsExecSpec, ExecSpec by spec {
override fun resolveBinary(name: String) = resolve(
"binary $name",
instance.binFolder,
instance.modulesFolder.resolve(".bin"),
workingDir.resolve("node_modules").resolve(".bin"),
Expand All @@ -35,19 +38,24 @@ class NodeJsExtension(private val project: Project) {
NodeJsRegistry.Platform.WINDOWS -> it.name == "$name.cmd" || it.name == "$name.exe"
else -> it.name == name
}
} ?: error("Could not resolve binary $name")
}

override fun resolveScript(name: String) = resolve(
"script $name",
workingDir,
workingDir.resolve("node_modules"),
project.projectDir,
) {
it.name == name
} ?: error("Could not resolve script $name")
}

private fun resolve(vararg folders: File, predicate: (File) -> Boolean) = folders.firstNotNullOfOrNull {
private fun resolve(
target: String,
vararg folders: File,
predicate: (File) -> Boolean,
) = folders.firstNotNullOfOrNull {
it.listFiles()?.firstOrNull(predicate)?.absolutePath
}
} ?: error("Could not resolve $target in $folders")
})
}
}
Expand Down
8 changes: 3 additions & 5 deletions src/main/kotlin/de/solugo/gradle/nodejs/NodeJsRegistry.kt
Original file line number Diff line number Diff line change
Expand Up @@ -76,11 +76,9 @@ object NodeJsRegistry {
}

if (entry is TarArchiveEntry) {
entry.mode.toString().toCharArray().map(Char::digitToInt).also { parts ->
destination.setExecutable(entry.mode and "111".toInt(radix = 8) != 0)
destination.setWritable(entry.mode and "222".toInt(radix = 8) != 0)
destination.setReadable(entry.mode and "444".toInt(radix = 8) != 0)
}
destination.setExecutable(entry.mode and "111".toInt(radix = 8) != 0)
destination.setWritable(entry.mode and "222".toInt(radix = 8) != 0)
destination.setReadable(entry.mode and "444".toInt(radix = 8) != 0)
}
}
}
Expand Down

0 comments on commit 063756e

Please sign in to comment.