Refactor build and server setup
Introduced a versioning task in a new `version.gradle.kts` file to auto-generate version properties. The main server setup in `Main.kt` was refactored to streamline server initialization using `UndertowServer`. Dependencies and configurations in `build.gradle.kts` were updated to deploy effectively, including improved yarn lock handling and symbolic link integration.
This commit is contained in:
251
build.gradle.kts
251
build.gradle.kts
@@ -1,93 +1,182 @@
|
|||||||
|
import java.nio.file.Files
|
||||||
|
import java.nio.file.Paths
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
apply(from = "common.gradle.kts")
|
apply(from = "common.gradle.kts")
|
||||||
|
apply(from = "version.gradle.kts")
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("multiplatform")
|
kotlin("multiplatform")
|
||||||
id("maven-publish")
|
id("maven-publish")
|
||||||
application
|
application
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
js {
|
js {
|
||||||
compilerOptions {
|
compilerOptions {
|
||||||
target.set("es2015")
|
target.set("es2015")
|
||||||
}
|
|
||||||
//useEsModules()
|
|
||||||
//useCommonJs()
|
|
||||||
|
|
||||||
binaries.executable()
|
|
||||||
browser {
|
|
||||||
commonWebpackConfig {
|
|
||||||
outputFileName = "vst-chip-worklet-ui.js"
|
|
||||||
sourceMaps = true
|
|
||||||
}
|
|
||||||
|
|
||||||
distribution {
|
|
||||||
outputDirectory.set(File("$projectDir/web/"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
/*
|
//useEsModules()
|
||||||
@OptIn(ExperimentalWasmDsl::class)
|
//useCommonJs()
|
||||||
wasmJs {
|
|
||||||
binaries.executable()
|
binaries.executable()
|
||||||
browser{
|
browser {
|
||||||
distribution {
|
commonWebpackConfig {
|
||||||
outputDirectory.set(File("$projectDir/web/"))
|
outputFileName = "vst-chip-worklet-ui.js"
|
||||||
|
sourceMaps = true
|
||||||
|
}
|
||||||
|
|
||||||
|
distribution {
|
||||||
|
outputDirectory.set(File("$projectDir/web/"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
@OptIn(ExperimentalWasmDsl::class)
|
||||||
|
wasmJs {
|
||||||
|
binaries.executable()
|
||||||
|
browser{
|
||||||
|
distribution {
|
||||||
|
outputDirectory.set(File("$projectDir/web/"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mavenPublication {
|
||||||
|
groupId = group as String
|
||||||
|
pom { name = "${project.name}-wasm-js" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
jvm {
|
||||||
|
withJava()
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
val commonMain by getting {
|
||||||
|
dependencies {
|
||||||
|
implementation(project(":common"))
|
||||||
|
//base
|
||||||
|
implementation("nl.astraeus:kotlin-css-generator:1.0.10")
|
||||||
|
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.0")
|
||||||
|
implementation("nl.astraeus:vst-ui-base:1.1.2")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val jsMain by getting {
|
||||||
|
dependencies {
|
||||||
|
implementation("nl.astraeus:kotlin-komponent:1.2.4")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val jsTest by getting {
|
||||||
|
dependencies {
|
||||||
|
implementation(kotlin("test-js"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* val wasmJsMain by getting {
|
||||||
|
dependencies {
|
||||||
|
implementation("nl.astraeus:kotlin-komponent:1.2.4-SNAPSHOT")
|
||||||
|
implementation("nl.astraeus:vst-ui-base:1.0.1-SNAPSHOT")
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
val jvmMain by getting {
|
||||||
|
dependencies {
|
||||||
|
//base
|
||||||
|
|
||||||
mavenPublication {
|
implementation("io.undertow:undertow-core:2.3.14.Final")
|
||||||
groupId = group as String
|
implementation("io.undertow:undertow-websockets-jsr:2.3.14.Final")
|
||||||
pom { name = "${project.name}-wasm-js" }
|
implementation("org.jboss.xnio:xnio-nio:3.8.16.Final")
|
||||||
}
|
|
||||||
}
|
implementation("org.xerial:sqlite-jdbc:3.46.0.0")
|
||||||
*/
|
implementation("com.zaxxer:HikariCP:4.0.3")
|
||||||
jvm{
|
implementation("nl.astraeus:simple-jdbc-stats:1.6.1")
|
||||||
withJava()
|
|
||||||
}
|
implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0")
|
||||||
|
}
|
||||||
sourceSets {
|
|
||||||
val commonMain by getting {
|
|
||||||
dependencies {
|
|
||||||
implementation(project(":common"))
|
|
||||||
//base
|
|
||||||
api("nl.astraeus:kotlin-css-generator:1.0.9-SNAPSHOT")
|
|
||||||
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.6.0")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val jsMain by getting {
|
|
||||||
dependencies {
|
|
||||||
implementation("nl.astraeus:kotlin-komponent:1.2.4-SNAPSHOT")
|
|
||||||
implementation("nl.astraeus:vst-ui-base:1.0.1-SNAPSHOT")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val jsTest by getting {
|
|
||||||
dependencies {
|
|
||||||
implementation(kotlin("test-js"))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/* val wasmJsMain by getting {
|
|
||||||
dependencies {
|
|
||||||
implementation("nl.astraeus:kotlin-komponent:1.2.4-SNAPSHOT")
|
|
||||||
implementation("nl.astraeus:vst-ui-base:1.0.1-SNAPSHOT")
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
val jvmMain by getting {
|
|
||||||
dependencies {
|
|
||||||
//base
|
|
||||||
|
|
||||||
implementation("io.undertow:undertow-core:2.3.14.Final")
|
|
||||||
implementation("io.undertow:undertow-websockets-jsr:2.3.14.Final")
|
|
||||||
implementation("org.jboss.xnio:xnio-nio:3.8.16.Final")
|
|
||||||
|
|
||||||
implementation("org.xerial:sqlite-jdbc:3.46.0.0")
|
|
||||||
implementation("com.zaxxer:HikariCP:4.0.3")
|
|
||||||
implementation("nl.astraeus:simple-jdbc-stats:1.6.1")
|
|
||||||
|
|
||||||
implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
application {
|
||||||
|
mainClass.set("nl.astraeus.vst.chip.MainKt")
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hardcoded deploy configuration */
|
||||||
|
|
||||||
|
val deployDirectory = "vst-chip.midi-vst.com"
|
||||||
|
|
||||||
|
tasks.register<Copy>("unzipDistribution") {
|
||||||
|
mustRunAfter("removeSymbolicLink")
|
||||||
|
val zipDir = layout.projectDirectory.dir("build/distributions")
|
||||||
|
val zipFile = zipDir.file("${project.name}-${project.version}.zip")
|
||||||
|
|
||||||
|
val outputDir = file("/home/rnentjes/www/${deployDirectory}")
|
||||||
|
|
||||||
|
from(zipTree(zipFile))
|
||||||
|
into(outputDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register("createSymbolicLink") {
|
||||||
|
mustRunAfter("unzipDistribution")
|
||||||
|
doLast {
|
||||||
|
val targetDir =
|
||||||
|
Paths.get("/home/rnentjes/www/${deployDirectory}/${project.name}-${project.version}") // Directory to link to
|
||||||
|
val symlink =
|
||||||
|
Paths.get("/home/rnentjes/www/${deployDirectory}/${project.name}") // Path for the symbolic link
|
||||||
|
|
||||||
|
if (!Files.exists(targetDir)) {
|
||||||
|
throw IllegalArgumentException("Target directory does not exist: $targetDir")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Files.exists(symlink)) {
|
||||||
|
println("Symbolic link already exists: $symlink")
|
||||||
|
} else {
|
||||||
|
Files.createSymbolicLink(symlink, targetDir)
|
||||||
|
println("Symbolic link created: $symlink -> $targetDir")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register<Copy>("copyWeb") {
|
||||||
|
val webDir = layout.projectDirectory.dir("web")
|
||||||
|
val outputDir = file("/home/rnentjes/www/${deployDirectory}/web")
|
||||||
|
|
||||||
|
from(webDir)
|
||||||
|
into(outputDir)
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named<Task>("build") {
|
||||||
|
dependsOn("generateVersionProperties")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("kotlinUpgradeYarnLock") {
|
||||||
|
mustRunAfter("clean")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("build") {
|
||||||
|
mustRunAfter("kotlinUpgradeYarnLock")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("build") {
|
||||||
|
mustRunAfter("kotlinUpgradeYarnLock")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.named("copyWeb") {
|
||||||
|
mustRunAfter("build")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register("removeSymbolicLink") {
|
||||||
|
mustRunAfter("build")
|
||||||
|
doLast {
|
||||||
|
delete(layout.projectDirectory.file("/home/rnentjes/www/${deployDirectory}/${project.name}"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.register("deploy") {
|
||||||
|
dependsOn("clean")
|
||||||
|
dependsOn("kotlinUpgradeYarnLock")
|
||||||
|
dependsOn("build")
|
||||||
|
dependsOn("copyWeb")
|
||||||
|
dependsOn("removeSymbolicLink")
|
||||||
|
dependsOn("unzipDistribution")
|
||||||
|
dependsOn("createSymbolicLink")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
group = "nl.astraeus"
|
group = "nl.astraeus"
|
||||||
version = "1.0.0-SNAPSHOT"
|
version = "0.1.0"
|
||||||
|
|
||||||
allprojects {
|
allprojects {
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenLocal()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
maven {
|
||||||
|
url = uri("https://gitea.astraeus.nl:8443/api/packages/rnentjes/maven")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,36 +1,36 @@
|
|||||||
@file:OptIn(ExperimentalKotlinGradlePluginApi::class)
|
@file:OptIn(ExperimentalKotlinGradlePluginApi::class)
|
||||||
|
|
||||||
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
|
||||||
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
|
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
apply(from = "../common.gradle.kts")
|
apply(from = "../common.gradle.kts")
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("multiplatform")
|
kotlin("multiplatform")
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin {
|
kotlin {
|
||||||
js {
|
js {
|
||||||
compilerOptions {
|
compilerOptions {
|
||||||
target.set("es2015")
|
target.set("es2015")
|
||||||
}
|
|
||||||
browser()
|
|
||||||
}
|
}
|
||||||
@OptIn(ExperimentalWasmDsl::class)
|
|
||||||
wasmJs {
|
|
||||||
browser()
|
browser()
|
||||||
mavenPublication {
|
|
||||||
groupId = group as String
|
|
||||||
pom { name = "${project.name}-wasm-js" }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
jvm()
|
/* @OptIn(ExperimentalWasmDsl::class)
|
||||||
|
wasmJs {
|
||||||
|
browser()
|
||||||
|
mavenPublication {
|
||||||
|
groupId = group as String
|
||||||
|
pom { name = "${project.name}-wasm-js" }
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
jvm()
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
val commonMain by getting
|
val commonMain by getting
|
||||||
val jsMain by getting
|
val jsMain by getting
|
||||||
val wasmJsMain by getting
|
val jvmMain by getting
|
||||||
}
|
//val wasmJsMain by getting
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
|
import jdk.tools.jlink.resources.plugins
|
||||||
|
|
||||||
pluginManagement {
|
pluginManagement {
|
||||||
plugins {
|
plugins {
|
||||||
kotlin("multiplatform") version "2.0.20-RC"
|
kotlin("multiplatform") version "2.0.21"
|
||||||
id("org.gradle.toolchains.foojay-resolver-convention") version "0.5.0"
|
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
gradlePluginPortal()
|
gradlePluginPortal()
|
||||||
|
|||||||
@@ -1,15 +1,9 @@
|
|||||||
package nl.astraeus.vst.chip
|
package nl.astraeus.vst.chip
|
||||||
|
|
||||||
import com.zaxxer.hikari.HikariConfig
|
import nl.astraeus.vst.base.Settings
|
||||||
import io.undertow.Undertow
|
import nl.astraeus.vst.base.web.UndertowServer
|
||||||
import io.undertow.UndertowOptions
|
|
||||||
import io.undertow.server.session.InMemorySessionManager
|
|
||||||
import io.undertow.server.session.SessionAttachmentHandler
|
|
||||||
import io.undertow.server.session.SessionCookieConfig
|
|
||||||
import nl.astraeus.vst.chip.db.Database
|
|
||||||
import nl.astraeus.vst.chip.logger.LogLevel
|
import nl.astraeus.vst.chip.logger.LogLevel
|
||||||
import nl.astraeus.vst.chip.logger.Logger
|
import nl.astraeus.vst.chip.logger.Logger
|
||||||
import nl.astraeus.vst.chip.web.RequestHandler
|
|
||||||
|
|
||||||
fun main() {
|
fun main() {
|
||||||
Logger.level = LogLevel.DEBUG
|
Logger.level = LogLevel.DEBUG
|
||||||
@@ -18,32 +12,44 @@ fun main() {
|
|||||||
e.printStackTrace()
|
e.printStackTrace()
|
||||||
}
|
}
|
||||||
|
|
||||||
Class.forName("nl.astraeus.jdbc.Driver")
|
Settings.port = 9005
|
||||||
|
Settings.jdbcStatsPort = 6005
|
||||||
|
|
||||||
Database.initialize(HikariConfig().apply {
|
/*
|
||||||
driverClassName = "nl.astraeus.jdbc.Driver"
|
Class.forName("nl.astraeus.jdbc.Driver")
|
||||||
jdbcUrl = "jdbc:stat:webServerPort=6002:jdbc:sqlite:data/chip.db"
|
|
||||||
username = "sa"
|
|
||||||
password = ""
|
|
||||||
maximumPoolSize = 25
|
|
||||||
isAutoCommit = false
|
|
||||||
|
|
||||||
validate()
|
Database.initialize(HikariConfig().apply {
|
||||||
})
|
driverClassName = "nl.astraeus.jdbc.Driver"
|
||||||
|
jdbcUrl = "jdbc:stat:webServerPort=6002:jdbc:sqlite:data/chip.db"
|
||||||
|
username = "sa"
|
||||||
|
password = ""
|
||||||
|
maximumPoolSize = 25
|
||||||
|
isAutoCommit = false
|
||||||
|
|
||||||
val sessionHandler = SessionAttachmentHandler(
|
validate()
|
||||||
InMemorySessionManager("vst-session-manager"),
|
})
|
||||||
SessionCookieConfig()
|
|
||||||
|
val sessionHandler = SessionAttachmentHandler(
|
||||||
|
InMemorySessionManager("vst-session-manager"),
|
||||||
|
SessionCookieConfig()
|
||||||
|
)
|
||||||
|
sessionHandler.setNext(RequestHandler)
|
||||||
|
|
||||||
|
val server = Undertow.builder()
|
||||||
|
.addHttpListener(Settings.port, "localhost")
|
||||||
|
.setIoThreads(4)
|
||||||
|
.setHandler(sessionHandler)
|
||||||
|
.setServerOption(UndertowOptions.SHUTDOWN_TIMEOUT, 1000)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
println("Starting server at port ${Settings.port}...")
|
||||||
|
server?.start()
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
UndertowServer.start(
|
||||||
|
"Vst Chip",
|
||||||
|
"/vst-chip-worklet-ui.js"
|
||||||
)
|
)
|
||||||
sessionHandler.setNext(RequestHandler)
|
|
||||||
|
|
||||||
val server = Undertow.builder()
|
|
||||||
.addHttpListener(Settings.port, "localhost")
|
|
||||||
.setIoThreads(4)
|
|
||||||
.setHandler(sessionHandler)
|
|
||||||
.setServerOption(UndertowOptions.SHUTDOWN_TIMEOUT, 1000)
|
|
||||||
.build()
|
|
||||||
|
|
||||||
println("Starting server at port ${Settings.port}...")
|
|
||||||
server?.start()
|
|
||||||
}
|
}
|
||||||
|
|||||||
20
version.gradle.kts
Normal file
20
version.gradle.kts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import java.util.*
|
||||||
|
|
||||||
|
tasks.register("generateVersionProperties") {
|
||||||
|
doLast {
|
||||||
|
val versionDir = layout.buildDirectory.dir("processedResources/jvm/main")
|
||||||
|
val versionFile = versionDir.get().file("version.properties").asFile
|
||||||
|
versionDir.get().asFile.mkdirs()
|
||||||
|
|
||||||
|
val properties = Properties().apply {
|
||||||
|
setProperty("group", project.group.toString())
|
||||||
|
setProperty("name", project.name.toString())
|
||||||
|
setProperty("version", project.version.toString())
|
||||||
|
setProperty("buildTime", Date().toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
versionFile.writer().use { writer ->
|
||||||
|
properties.store(writer, "Version information")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user