blob: 88c790baee490798ceeb638ca3fb1ebc8db9d274 [file] [log] [blame]
import com.moowork.gradle.node.npm.NpmTask
plugins {
id("com.moowork.node").version("1.2.0")
base
}
description = "Node utils"
node {
download = true
}
val deployDir = "$buildDir/deploy_to_npm"
val templateDir = "$projectDir/templates"
val kotlincDir = "$projectDir/../../dist/kotlinc"
fun getProperty(name: String, default: String = "") = findProperty(name)?.toString() ?: default
val deployVersion = getProperty("kotlin.deploy.version", "0.0.0")
val deployTag = getProperty("kotlin.deploy.tag", "dev")
val authToken = getProperty("kotlin.npmjs.auth.token")
val dryRun = getProperty("dryRun", "false") // Pack instead of publish
fun Project.createCopyTemplateTask(templateName: String): Copy {
return task<Copy>("copy-$templateName-template") {
from("$templateDir/$templateName")
into("$deployDir/$templateName")
expand(hashMapOf("version" to deployVersion))
}
}
fun Project.createCopyLibraryFilesTask(libraryName: String, fromJar: String): Copy {
return task<Copy>("copy-$libraryName-library") {
from(zipTree(fromJar).matching {
include("$libraryName.js")
include("$libraryName.meta.js")
include("$libraryName.js.map")
include("$libraryName/**")
})
into("$deployDir/$libraryName")
}
}
fun Project.createPublishToNpmTask(templateName: String): NpmTask {
return task<NpmTask>("publish-$templateName-to-npm") {
val deployDir = File("$deployDir/$templateName")
setWorkingDir(deployDir)
val deployArgs = listOf("publish", "--//registry.npmjs.org/:_authToken=$authToken", "--tag=$deployTag")
if (dryRun == "true") {
println("$deployDir \$ npm arguments: $deployArgs");
setArgs(listOf("pack"))
}
else {
setArgs(deployArgs)
}
}
}
fun sequential(first: Task, vararg tasks: Task): Task {
tasks.fold(first) { previousTask, currentTask ->
currentTask.dependsOn(previousTask)
}
return tasks.last()
}
val publishKotlinJs = sequential(
createCopyTemplateTask("kotlin"),
createCopyLibraryFilesTask("kotlin", "$kotlincDir/lib/kotlin-stdlib-js.jar"),
createPublishToNpmTask("kotlin")
)
val publishKotlinCompiler = sequential(
createCopyTemplateTask("kotlin-compiler"),
task<Copy>("copy-kotlin-compiler") {
from(kotlincDir)
into("$deployDir/kotlin-compiler")
},
task<Exec>("chmod-kotlinc-bin") {
commandLine = listOf("chmod", "-R", "ugo+rx", "$deployDir/kotlin-compiler/bin")
},
createPublishToNpmTask("kotlin-compiler")
)
val publishKotlinTest = sequential(
createCopyTemplateTask("kotlin-test"),
createCopyLibraryFilesTask("kotlin-test", "$kotlincDir/lib/kotlin-test-js.jar"),
createPublishToNpmTask("kotlin-test")
)
task("publishAll") {
dependsOn(publishKotlinJs, publishKotlinTest, publishKotlinCompiler)
}