Compare commits

...

3 Commits

Author SHA1 Message Date
a4add8adbc Update dependencies 2023-05-07 18:00:44 +02:00
8ad1e8d884 Auto discover GRAALVM_HOME 2023-05-07 17:36:39 +02:00
37dba17074 Upgrade gradle + jdk 2023-05-07 16:56:34 +02:00
10 changed files with 59 additions and 26 deletions

View File

@ -8,15 +8,14 @@ plugins {
version = "0.0.1-SNAPSHOT" version = "0.0.1-SNAPSHOT"
dependencies { dependencies {
implementation("org.slf4j:slf4j-api:2.0.0-alpha1") implementation("org.slf4j:slf4j-api:2.0.7")
runtimeOnly("org.slf4j:slf4j-simple:2.0.0-alpha1") runtimeOnly("org.slf4j:slf4j-simple:2.0.7")
implementation("io.pebbletemplates:pebble:3.1.5") implementation("io.pebbletemplates:pebble:3.2.1")
implementation("com.github.ajalt.clikt:clikt:3.1.0") implementation("com.github.ajalt.clikt:clikt:3.5.2")
implementation("org.graalvm.js:js:21.0.0.2") implementation("org.graalvm.js:js:22.3.2")
} }
application { application {
mainClassName = "scaffold.ScaffoldKt"
mainClass.set("scaffold.ScaffoldKt") mainClass.set("scaffold.ScaffoldKt")
applicationName = "scaffold" applicationName = "scaffold"
} }

View File

@ -5,6 +5,7 @@ import com.github.ajalt.clikt.output.CliktConsole
import com.github.ajalt.clikt.output.TermUi import com.github.ajalt.clikt.output.TermUi
import com.github.ajalt.clikt.output.defaultCliktConsole import com.github.ajalt.clikt.output.defaultCliktConsole
@Suppress("DEPRECATION") // TODO: later..
class Prompt(private val console: CliktConsole = defaultCliktConsole()) { class Prompt(private val console: CliktConsole = defaultCliktConsole()) {
fun string(text: String, default: String?): String = TermUi.prompt( fun string(text: String, default: String?): String = TermUi.prompt(
@ -26,7 +27,7 @@ class Prompt(private val console: CliktConsole = defaultCliktConsole()) {
showDefault = false, showDefault = false,
console = console console = console
) { ) {
when (it.toLowerCase()) { when (it.lowercase()) {
"y" -> true "y" -> true
"n" -> false "n" -> false
else -> throw UsageError("Can only be [y/n]") else -> throw UsageError("Can only be [y/n]")

View File

@ -2,14 +2,13 @@ package scaffold.commands
import com.github.ajalt.clikt.core.CliktCommand import com.github.ajalt.clikt.core.CliktCommand
import com.github.ajalt.clikt.core.ProgramResult import com.github.ajalt.clikt.core.ProgramResult
import com.github.ajalt.clikt.core.UsageError
import com.github.ajalt.clikt.parameters.arguments.argument import com.github.ajalt.clikt.parameters.arguments.argument
import com.github.ajalt.clikt.parameters.options.convert import com.github.ajalt.clikt.parameters.options.convert
import com.github.ajalt.clikt.parameters.options.option import com.github.ajalt.clikt.parameters.options.option
import com.github.ajalt.clikt.parameters.options.required import com.github.ajalt.clikt.parameters.options.required
import com.mitchellbosecke.pebble.PebbleEngine import io.pebbletemplates.pebble.PebbleEngine
import com.mitchellbosecke.pebble.loader.FileLoader import io.pebbletemplates.pebble.loader.FileLoader
import com.mitchellbosecke.pebble.template.PebbleTemplate import io.pebbletemplates.pebble.template.PebbleTemplate
import scaffold.Generator import scaffold.Generator
import scaffold.Generators import scaffold.Generators
import scaffold.Prompt import scaffold.Prompt

View File

@ -2,16 +2,12 @@ plugins {
`kotlin-dsl` `kotlin-dsl`
} }
kotlinDslPluginOptions {
experimentalWarning.set(false)
}
repositories { repositories {
gradlePluginPortal() gradlePluginPortal()
} }
dependencies { dependencies {
implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.4.31")) implementation(platform("org.jetbrains.kotlin:kotlin-bom:1.8.21"))
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.31") implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.21")
implementation("com.github.jengelman.gradle.plugins:shadow:6.1.0") implementation("com.github.johnrengelman:shadow:8.1.1")
} }

View File

@ -7,8 +7,9 @@ repositories {
} }
java { java {
targetCompatibility = JavaVersion.toVersion(11) toolchain {
sourceCompatibility = JavaVersion.toVersion(11) languageVersion.set(JavaLanguageVersion.of(19))
}
} }
tasks.withType<JavaCompile> { tasks.withType<JavaCompile> {

View File

@ -1,3 +1,5 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.dsl.KotlinVersion
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins { plugins {
@ -18,9 +20,10 @@ tasks.withType<Test> {
} }
tasks.withType<KotlinCompile> { tasks.withType<KotlinCompile> {
kotlinOptions { compilerOptions {
jvmTarget = "11" jvmTarget.set(JvmTarget.JVM_19)
javaParameters = true javaParameters.set(true)
languageVersion.set(KotlinVersion.KOTLIN_2_0)
} }
} }

View File

@ -1,10 +1,43 @@
import org.gradle.jvm.toolchain.JavaToolchainService;
import java.io.ByteArrayOutputStream
task("buildNative") { task("buildNative") {
dependsOn("installShadowDist") dependsOn("installShadowDist")
outputs.file("${buildDir}/native/scaffold") outputs.file("${buildDir}/native/scaffold")
doLast { doLast {
val graalvmHome = System.getenv("GRAALVM_HOME") ?: error("GRAALVM_HOME is not set") val graalvmHome = project.extensions.findByType<JavaToolchainService>()?.launcherFor {
languageVersion.set(JavaLanguageVersion.of(19))
vendor.set(JvmVendorSpec.GRAAL_VM)
}
?.orNull
?.executablePath?.asFile?.toPath()?.parent?.parent?.toString()
?: System.getenv("GRAALVM_HOME")
?: error("GRAALVM_HOME is not set")
val out = ByteArrayOutputStream()
exec {
commandLine(
"${graalvmHome}/bin/gu",
"list",
"-v",
)
standardOutput = out
}
val installedComponents = out.toString().lines()
.filter { it.startsWith("ID") }
.map { it.substringAfter(':').trim() }
if ("native-image" !in installedComponents) {
throw GradleException("GRAALVM: Missing js component")
}
if ("js" !in installedComponents) {
throw GradleException("GRAALVM: Missing js component")
}
exec { exec {
commandLine( commandLine(

View File

@ -1,3 +1,3 @@
org.gradle.jvmargs=-Xmx2048M -XX:MaxPermSize=512m -Dfile.encoding=UTF-8 org.gradle.jvmargs=-Xmx2048M -Dfile.encoding=UTF-8
org.gradle.caching=true org.gradle.caching=true
org.gradle.parallel=true org.gradle.parallel=true

Binary file not shown.

View File

@ -1,5 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists