plugins { id "org.implab.gradle-typescript" version "1.0.1-rc1" } // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}*** // результатом будет версия '{num}.{distance}' где distance - расстояние от // текущей ревизии до ревизии с тэгом def tagDistance = 0; def isRelease = false; if (!version) { def rev = ["hg", "log", "-r", ".", "--template", "{latesttag('re:^v') % '{tag}-{distance}'}"].execute().text.trim(); def tagVersion; def match = (rev =~ /^v(\d+\.\d+\.\d+).*-(\d+)$/); if (match.size()) { tagVersion = match[0][1]; tagDistance = match[0][2].toInteger(); } else { throw new Exception("A version must be specied"); } version = tagVersion; if (tagDistance > 0) version++; } else { println "explicit version: $version"; } if (hasProperty('versionSuffix') && versionSuffix) { version += "-$versionSuffix" } if(!npmName) npmName = name; if (hasProperty('release')) { isRelease = (release != 'false') } else { isRelease = (tagDistance == 0); } 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") def targetLibs = [ "es3" : ["es5", "es2015.promise", "es2015.symbol", "dom", "scripthost"], "es5" : ["es5", "es2015.promise", "es2015.symbol", "dom", "scripthost"] ]; ext { packageName = "@$npmScope/$npmName" } def jstarget = target; sources { } typescript { compilerOptions { lib = targetLibs[target] ?: [target, "dom"] target = jstarget module = jsmodule types = [] } tsLintCmd = "tslint" esLintCmd = "eslint" npmCmd = "npm" } task printVersion { doLast { println "version: $version"; println "isRelease: $isRelease, tagDistance: $tagDistance"; println "packageName: $packageName"; println "bundle: ${npmPack.outputs.files.join(',')}"; println "target: $jstarget"; println "module: $jsmodule"; } } task clean { doLast { delete buildDir } } npmPackMeta { meta { name = "@$npmScope/$npmName" } } task markRelease(type: Exec) { onlyIf { tagDistance > 1 } commandLine "hg", "tag", "v$version"; }