import java.nio.file.Files import java.nio.file.Paths buildscript { apply(from = "common.gradle.kts") apply(from = "version.gradle.kts") } plugins { kotlin("multiplatform") id("maven-publish") application } kotlin { js { compilerOptions { target.set("es2015") } //useEsModules() //useCommonJs() binaries.executable() browser { commonWebpackConfig { outputFileName = "vst-string-worklet-ui.js" sourceMaps = true } distribution { outputDirectory.set(File("$projectDir/web/")) } } } 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.4.0") implementation("nl.astraeus:vst-ui-base:1.1.2") } } val jsMain by getting { dependencies { //base implementation("nl.astraeus:kotlin-komponent-js:1.2.4") } } val jsTest by getting { dependencies { implementation(kotlin("test-js")) } } 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.string.MainKt") } /* Hardcoded deploy configuration */ val deployDirectory = "vst-string.midi-vst.com" tasks.register("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("copyWeb") { val webDir = layout.projectDirectory.dir("web") val outputDir = file("/home/rnentjes/www/${deployDirectory}/web") from(webDir) into(outputDir) } tasks.named("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") }