build.gradle
141 lines
| 3.2 KiB
| text/x-groovy
|
GroovyLexer
|
|
r87 | plugins { | |
|
|
r88 | id "org.implab.gradle-typescript" version "1.0.1-rc1" | |
|
|
r87 | } | |
|
|
r61 | // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}*** | |
| // результатом будет версия '{num}.{distance}' где distance - расстояние от | |||
| // текущей ревизии до ревизии с тэгом | |||
|
|
r68 | def tagDistance = 0; | |
|
|
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 | ||
|
|
r89 | if(! jsmodule in ["amd", "commonjs", "system", "umd", "es6", "esnext"]) | |
|
|
r59 | throw new Exception("Invalid jsmodule specified: $jsmodule"); | |
|
|
r89 | if(! target in ["es3", "es5", "es6", "es2016", "es2017", "esnext"]) | |
|
|
r59 | throw new Exception("Invalid target specified: $target") | |
|
|
r51 | ||
|
|
r87 | ext { | |
| packageName = "@$npmScope/$npmName" | |||
| } | |||
|
|
r51 | ||
|
|
r87 | def jstarget = target; | |
|
|
r59 | ||
|
|
r87 | sources { | |
|
|
r89 | amd { | |
|
|
r90 | typings { | |
| srcDir main.output.typingsDir | |||
| } | |||
|
|
r89 | } | |
| cjs { | |||
|
|
r90 | typings { | |
| srcDir main.output.typingsDir | |||
| } | |||
| } | |||
| testAmd { | |||
| typings { | |||
| srcDir main.output.typingsDir | |||
| srcDir amd.output.typingsDir | |||
| srcDir test.output.typingsDir | |||
| } | |||
| } | |||
| testCjs { | |||
| typings { | |||
| srcDir main.output.typingsDir | |||
| srcDir cjs.output.typingsDir | |||
| srcDir test.output.typingsDir | |||
| } | |||
|
|
r89 | } | |
|
|
r59 | } | |
|
|
r87 | typescript { | |
| compilerOptions { | |||
|
|
r89 | lib = [target, "dom", "scripthost"] | |
| if (jstarget in ["es5", "es3"]) | |||
|
|
r90 | lib += ["es2015.promise", "es2015.symbol", "es2015.iterable"] | |
|
|
r89 | ||
|
|
r87 | target = jstarget | |
| module = jsmodule | |||
| types = [] | |||
|
|
r89 | declaration = true | |
| listFiles = true | |||
|
|
r59 | } | |
|
|
r91 | tscCmd = "$projectDir/node_modules/.bin/tsc" | |
| tsLintCmd = "$projectDir/node_modules/.bin/tslint" | |||
| esLintCmd = "$projectDir/node_modules/.bin/eslint" | |||
|
|
r87 | npmCmd = "npm" | |
|
|
r59 | } | |
|
|
r47 | ||
| task printVersion { | |||
|
|
r48 | doLast { | |
|
|
r68 | println "version: $version"; | |
|
|
r89 | println "tagDistance: $tagDistance"; | |
|
|
r68 | println "packageName: $packageName"; | |
|
|
r88 | println "target: $jstarget"; | |
|
|
r68 | println "module: $jsmodule"; | |
|
|
r48 | } | |
|
|
r47 | } | |
|
|
r4 | task clean { | |
| doLast { | |||
| delete buildDir | |||
|
|
r59 | } | |
| } | |||
|
|
r88 | npmPackMeta { | |
| meta { | |||
|
|
r89 | name = packageName | |
|
|
r60 | } | |
| } | |||
|
|
r90 | ||
| compileTsAmd { | |||
| dependsOn sources.main.output | |||
| } | |||
| configureTsAmd { | |||
| compilerOptions { | |||
| types += [ "requirejs", "dojo-typings" ] | |||
| } | |||
| } | |||
|
|
r91 | test { | |
| workingDir layout.buildDirectory.dir("test"); | |||
| commandLine "node", "tests/index.js" | |||
| } | |||
|
|
r90 | assembleTest { | |
| dependsOn sources.main.output | |||
| dependsOn sources.amd.output | |||
| dependsOn sources.testAmd.output | |||
| from(sources.main.output.compiledDir) | |||
| from(sources.amd.output.compiledDir) | |||
| from(sources.testAmd.output.compiledDir) | |||
| } |
