import com.github.gradle.node.util.PlatformHelper
import groovy.text.SimpleTemplateEngine

plugins {
    id 'java'
    id 'com.github.node-gradle.node' version '3.5.1'
    id "de.undercouch.download" version '5.3.1'
}

node {
    version = '18.15.0'
    download = true
}

jar.dependsOn 'npmBuild'

clean.dependsOn 'npmClean'

nodeSetup.dependsOn 'downloadNode'

jar {
    from 'dist'
    into 'static'
    final devHost = 'http://localhost:8080'
    final prodHost = ''
    filesMatching('index.html') {
        filter { line -> line.replaceAll(devHost, prodHost) }
    }
}

task downloadNode(type: Download) {
    final helper = new PlatformHelper()
    final templateData = [
            "url"    : node.distBaseUrl.get(),
            "version": node.version.get(),
            "os"     : helper.osName,
            "arch"   : helper.osArch,
            "ext"    : helper.windows ? 'zip' : 'tar.gz'
    ]
    final urlTemplate = '${url}/v${version}/node-v${version}-${os}-${arch}.${ext}'
    final engine = new SimpleTemplateEngine()
    final url = engine.createTemplate(urlTemplate).make(templateData).toString()
    final String destDir = '.gradle/'
    file(destDir).mkdirs()
    src url
    dest destDir
    overwrite false
}

tasks.register('npmBuild', NpmTask) {
    dependsOn npmInstall
    args = ['run-script', 'build']
}

tasks.register('npmClean', NpmTask) {
    dependsOn npmInstall
    args = ['run-script', 'clean']
}