xref: /aosp_15_r20/external/kotlinx.atomicfu/gradle/publish-npm-js.gradle (revision 68017707106cb9da9fed635c150bc497c09c160f)
1*68017707SAndroid Build Coastguard Worker/*
2*68017707SAndroid Build Coastguard Worker * Copyright 2017-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3*68017707SAndroid Build Coastguard Worker */
4*68017707SAndroid Build Coastguard Worker
5*68017707SAndroid Build Coastguard Workerdef prop(name, defVal) {
6*68017707SAndroid Build Coastguard Worker    def value = project.properties[name]
7*68017707SAndroid Build Coastguard Worker    if (value == null) return defVal
8*68017707SAndroid Build Coastguard Worker    return value
9*68017707SAndroid Build Coastguard Worker}
10*68017707SAndroid Build Coastguard Worker
11*68017707SAndroid Build Coastguard Workerdef distTag(version) {
12*68017707SAndroid Build Coastguard Worker    def i = version.indexOf('-')
13*68017707SAndroid Build Coastguard Worker    if (i > 0) return version.substring(i + 1)
14*68017707SAndroid Build Coastguard Worker    return "latest"
15*68017707SAndroid Build Coastguard Worker}
16*68017707SAndroid Build Coastguard Worker
17*68017707SAndroid Build Coastguard Workerdef npmTemplateDir = file("$projectDir/npm")
18*68017707SAndroid Build Coastguard Workerdef npmDeployDir = file("$buildDir/npm")
19*68017707SAndroid Build Coastguard Workerdef npmDeployTag = distTag(version)
20*68017707SAndroid Build Coastguard Worker
21*68017707SAndroid Build Coastguard Workerdef authToken = prop("kotlin.npmjs.auth.token", "")
22*68017707SAndroid Build Coastguard Workerdef dryRun = prop("dryRun", "false")
23*68017707SAndroid Build Coastguard Worker
24*68017707SAndroid Build Coastguard Workerdef compileJsLegacy = tasks.hasProperty("compileKotlinJsLegacy")
25*68017707SAndroid Build Coastguard Worker        ? compileKotlinJsLegacy
26*68017707SAndroid Build Coastguard Worker        : compileKotlinJs
27*68017707SAndroid Build Coastguard Worker
28*68017707SAndroid Build Coastguard Workertask preparePublishNpm(type: Copy, dependsOn: [compileJsLegacy]) {
29*68017707SAndroid Build Coastguard Worker    from(npmTemplateDir) {
30*68017707SAndroid Build Coastguard Worker        expand (project.properties + [kotlinDependency: "\"kotlin\": \"$kotlin_version\""])
31*68017707SAndroid Build Coastguard Worker    }
32*68017707SAndroid Build Coastguard Worker    from(compileJsLegacy.destinationDirectory)
33*68017707SAndroid Build Coastguard Worker    into npmDeployDir
34*68017707SAndroid Build Coastguard Worker}
35*68017707SAndroid Build Coastguard Worker
36*68017707SAndroid Build Coastguard Workertask performPublishNpm(type: NpmTask, dependsOn: [preparePublishNpm]) {
37*68017707SAndroid Build Coastguard Worker    workingDir = npmDeployDir
38*68017707SAndroid Build Coastguard Worker    def deployArgs = ['publish',
39*68017707SAndroid Build Coastguard Worker                      "--//registry.npmjs.org/:_authToken=$authToken",
40*68017707SAndroid Build Coastguard Worker                      "--tag=$npmDeployTag"]
41*68017707SAndroid Build Coastguard Worker    doFirst {
42*68017707SAndroid Build Coastguard Worker        if (dryRun == "true") {
43*68017707SAndroid Build Coastguard Worker            println("$npmDeployDir \$ npm arguments: $deployArgs")
44*68017707SAndroid Build Coastguard Worker            args = ['pack']
45*68017707SAndroid Build Coastguard Worker        } else {
46*68017707SAndroid Build Coastguard Worker            args = deployArgs
47*68017707SAndroid Build Coastguard Worker        }
48*68017707SAndroid Build Coastguard Worker    }
49*68017707SAndroid Build Coastguard Worker
50*68017707SAndroid Build Coastguard Worker    if (authToken == "") {
51*68017707SAndroid Build Coastguard Worker        enabled = false // skip npm publishing when token is not set
52*68017707SAndroid Build Coastguard Worker    }
53*68017707SAndroid Build Coastguard Worker}
54*68017707SAndroid Build Coastguard Worker
55*68017707SAndroid Build Coastguard Workertask publishNpm(dependsOn: performPublishNpm) {
56*68017707SAndroid Build Coastguard Worker    doFirst {
57*68017707SAndroid Build Coastguard Worker        if (!performPublishNpm.enabled) {
58*68017707SAndroid Build Coastguard Worker            println("NOTE: publishNpm is skipped because 'kotlin.npmjs.auth.token' is not set")
59*68017707SAndroid Build Coastguard Worker        }
60*68017707SAndroid Build Coastguard Worker    }
61*68017707SAndroid Build Coastguard Worker}
62*68017707SAndroid Build Coastguard Worker
63