Files
vst-chip/build.gradle.kts
rnentjes 2cfc8a8201 Update output directories and Kotlin version, add buildJS task
Modified outputDirectory paths in build scripts and upgraded the Kotlin multiplatform plugin to version 2.1.20. Added a new buildJS task to handle copying files from multiple directories into the web folder. These changes streamline the build process and ensure compatibility with updated tooling.
2025-05-06 18:59:15 +02:00

169 lines
3.8 KiB
Kotlin

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-chip-worklet-ui.js"
sourceMaps = true
devtool = "inline-source-map"
}
distribution {
outputDirectory.set(File("$projectDir/web1/"))
}
}
}
/*
@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 {
api("nl.astraeus:vst-ui-base:2.0.0")
implementation("nl.astraeus:midi-arrays:0.3.4")
}
}
val jsMain by getting
val jsTest by getting {
dependencies {
implementation(kotlin("test-js"))
}
}
val jvmMain by getting
}
}
application {
mainClass.set("nl.astraeus.vst.chip.MainKt")
}
tasks.register<Copy>("buildJS") {
duplicatesStrategy = DuplicatesStrategy.INCLUDE
dependsOn("audio-worklet:jsBrowserDevelopmentExecutableDistribution")
dependsOn("jsBrowserDevelopmentExecutableDistribution")
from(layout.projectDirectory.dir("web1"))
into(layout.projectDirectory.dir("web"))
from(layout.projectDirectory.dir("web2"))
into(layout.projectDirectory.dir("web"))
}
/* 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")
}