build.gradle
144 lines
| 3.5 KiB
| text/x-groovy
|
GroovyLexer
|
|
r87 | plugins { | |
| id "org.implab.gradle-typescript" version "1.0-SNAPSHOT" | |||
| } | |||
|
|
r61 | // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}*** | |
| // результатом будет версия '{num}.{distance}' где distance - расстояние от | |||
| // текущей ревизии до ревизии с тэгом | |||
|
|
r68 | def tagDistance = 0; | |
| def isRelease = false; | |||
|
|
r61 | if (!version) { | |
|
|
r68 | ||
|
|
r61 | def rev = ["hg", "log", "-r", ".", "--template", "{latesttag('re:^v') % '{tag}-{distance}'}"].execute().text.trim(); | |
| def tagVersion; | |||
|
|
r68 | def match = (rev =~ /^v(\d+\.\d+\.\d+).*-(\d+)$/); | |
|
|
r61 | ||
| if (match.size()) { | |||
| tagVersion = match[0][1]; | |||
| tagDistance = match[0][2].toInteger(); | |||
| } else { | |||
| throw new Exception("A version must be specied"); | |||
| } | |||
|
|
r68 | version = tagVersion; | |
| if (tagDistance > 0) | |||
| version++; | |||
|
|
r61 | } else { | |
| println "explicit version: $version"; | |||
| } | |||
| if (hasProperty('versionSuffix') && versionSuffix) { | |||
| version += "-$versionSuffix" | |||
|
|
r27 | } | |
|
|
r0 | ||
|
|
r47 | if(!npmName) | |
| npmName = name; | |||
|
|
r68 | if (hasProperty('release')) { | |
| isRelease = (release != 'false') | |||
| } else { | |||
| isRelease = (tagDistance == 0); | |||
| } | |||
|
|
r59 | if(!["amd", "commonjs", "system", "umd", "es6", "esnext"].contains(jsmodule)) | |
| throw new Exception("Invalid jsmodule specified: $jsmodule"); | |||
| if(!["es3", "es5", "es6", "es2016", "es2017", "esnext"].contains(target)) | |||
| throw new Exception("Invalid target specified: $target") | |||
|
|
r51 | ||
|
|
r59 | def targetLibs = [ | |
|
|
r87 | "es3" : ["es5", "es2015.promise", "es2015.symbol", "dom", "scripthost"], | |
| "es5" : ["es5", "es2015.promise", "es2015.symbol", "dom", "scripthost"] | |||
|
|
r59 | ]; | |
|
|
r0 | ||
|
|
r87 | ext { | |
| packageName = "@$npmScope/$npmName" | |||
| } | |||
|
|
r51 | ||
| def srcDir = "$projectDir/src" | |||
| def typingsDir = "$srcDir/typings" | |||
|
|
r59 | def distDir = "$buildDir/dist" | |
| def testDir = "$buildDir/test" | |||
|
|
r87 | def jstarget = target; | |
|
|
r59 | ||
|
|
r87 | sources { | |
|
|
r59 | ||
| } | |||
|
|
r87 | typescript { | |
| compilerOptions { | |||
| lib = targetLibs[target] ?: [target, "dom"] | |||
| target = jstarget | |||
| module = jsmodule | |||
| types = [] | |||
|
|
r59 | } | |
|
|
r87 | tsLintCmd = "tslint" | |
| esLintCmd = "eslint" | |||
| npmCmd = "npm" | |||
|
|
r59 | } | |
|
|
r47 | ||
| task printVersion { | |||
|
|
r48 | doLast { | |
|
|
r68 | println "version: $version"; | |
| println "isRelease: $isRelease, tagDistance: $tagDistance"; | |||
| println "packageName: $packageName"; | |||
| println "bundle: ${pack.outputs.files.join(',')}"; | |||
| println "target: $target"; | |||
| println "module: $jsmodule"; | |||
|
|
r48 | } | |
|
|
r47 | } | |
|
|
r4 | task clean { | |
| doLast { | |||
| delete buildDir | |||
|
|
r51 | delete typingsDir | |
|
|
r4 | } | |
|
|
r2 | } | |
|
|
r59 | task _initBuild { | |
| mustRunAfter clean | |||
| def buildInfoFile = "$buildDir/platform"; | |||
| inputs.property('target',target); | |||
| inputs.property('jsmodule',jsmodule); | |||
| outputs.file(buildInfoFile); | |||
| doLast { | |||
| delete buildDir | |||
| mkdir buildDir | |||
| def f = new File(buildInfoFile); | |||
| f << "$target-$jsmodule"; | |||
| } | |||
| } | |||
|
|
r87 | /* | |
|
|
r60 | task _installLocalCjsDependency(dependsOn: [buildTestCjs, "_packageMeta"], type: Exec) { | |
| inputs.file("$distDir/package.json") | |||
| outputs.upToDateWhen { | |||
| new File("$testDir/$packageName").exists() | |||
| } | |||
| workingDir testDir | |||
| commandLine 'npm', 'install', '--no-save', '--force', distDir | |||
| } | |||
|
|
r87 | task _test(dependsOn: [buildTest], type: Exec) { | |
|
|
r60 | if (jsmodule == "amd") | |
| dependsOn buildTestAmd | |||
| if (jsmodule == "commonjs") { | |||
| dependsOn buildTestCjs | |||
| dependsOn _installLocalCjsDependency | |||
| } | |||
| commandLine 'node', "$testDir/run-tests.js" | |||
|
|
r8 | } | |
|
|
r87 | */ | |
|
|
r68 | ||
| task markRelease(type: Exec) { | |||
| onlyIf { tagDistance > 1 } | |||
| commandLine "hg", "tag", "v$version"; | |||
|
|
r0 | } |
