Compare commits

...

20 Commits

Author SHA1 Message Date
5221d3ee84 5.3.3 2016-06-16 03:02:37 +02:00
1f50f54fe9 now has --notest option 2016-06-16 03:02:33 +02:00
12199a668e 5.3.2 2016-06-12 04:32:00 +02:00
82df431adf improve README 2016-06-12 04:31:43 +02:00
71f0a9d37f 5.3.1 2016-06-12 00:45:49 +02:00
5f16cdd830 now printing font all right 2016-06-12 00:45:33 +02:00
966cb88c82 5.3.0 2016-06-10 06:14:18 +02:00
7f4d72f0d6 ready for npmts-g 2016-06-10 06:14:12 +02:00
3df47307a3 update gitlab ci.yml 2016-06-10 00:55:29 +02:00
e3b84af278 now stating npmts version 2016-06-10 00:53:30 +02:00
a6c4a99d82 update dependencies 2016-06-10 00:13:40 +02:00
8d506f8220 5.2.5 2016-06-07 09:03:03 +02:00
bd9ed5feb5 update gitlab ci yml 2016-06-07 09:02:58 +02:00
ec28c660dc 5.2.4 2016-06-07 08:56:27 +02:00
9f4299e52a update gitlab ci yml 2016-06-07 08:56:21 +02:00
73c583409e 5.2.3 2016-06-07 08:53:55 +02:00
f8c86f1871 small fix 2016-06-07 08:53:47 +02:00
67130ec2b6 5.2.2 2016-06-07 08:49:28 +02:00
48fa9d205a now compiling Tests seperately 2016-06-07 08:49:22 +02:00
3070584642 pages now publishing for tags 2016-06-03 16:57:03 +02:00
28 changed files with 205 additions and 233 deletions

View File

@ -1,8 +1,9 @@
image: hosttoday/ht-docker-node:latest image: hosttoday/ht-docker-node:npmts
stages: stages:
- test - test
- release - release
- trigger
- page - page
testLEGACY: testLEGACY:
@ -11,6 +12,7 @@ testLEGACY:
- npmci test legacy - npmci test legacy
tags: tags:
- docker - docker
allow_failure: true
testLTS: testLTS:
stage: test stage: test
@ -34,6 +36,15 @@ release:
- tags - tags
tags: tags:
- docker - docker
trigger:
stage: trigger
script:
- npmci trigger
only:
- tags
tags:
- docker
pages: pages:
stage: page stage: page
@ -47,4 +58,4 @@ pages:
paths: paths:
- public - public
only: only:
- master - tags

View File

@ -17,13 +17,14 @@ There is a docker image available that includes npmts to make CI a breeze:
[hosttoday/ht-docker-npmg on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-npmg/) [hosttoday/ht-docker-npmg on Dockerhub](https://hub.docker.com/r/hosttoday/ht-docker-npmg/)
### Install ### Install
First install npmts as dev dependency: First install npmts globally, then install the npmts checker:
```sh ```sh
npm install npmts --save-dev npm install npmts -g # installs npmts globally
npm install npmts-g --save-dev # installs npmts-g checking tool as devDependency
``` ```
Then use it in package.json's script section to trigger a build: Then add it to your package.json's script section to trigger a build:
```json ```json
"scripts": { "scripts": {
@ -42,8 +43,6 @@ Then use it in package.json's script section to trigger a build:
1. Instrumentalize created JavaScript files with istanbul 1. Instrumentalize created JavaScript files with istanbul
1. Run Tests 1. Run Tests
1. Create Coverage report 1. Create Coverage report
1. Upload Coverage reports to codecov.io (Tests must pass, codecov.io must be activated, by default only triggers on travis)
1. Upload JsDoc Documentation to gh-pages branch on GitHub. (Tests must pass, requires GitHub Token)
#### npmts.json #### npmts.json
the npmts.json is the main config file. You can use it to customize the behaviour of NPMTS. the npmts.json is the main config file. You can use it to customize the behaviour of NPMTS.
@ -131,6 +130,12 @@ thanks to autogenerated source maps.
> We will add more options over time. > We will add more options over time.
## Tips and tricks:
* Use [npmts-g](https://www.npmjs.com/package/npmts-g) to use globally installed npmts and install npmts locally if no global npmts is available.
* Use [npmpage](https://www.npmjs.com/package/npmtspage) to create a webpage from coverage reports and JsDocs for the module
* Use [hosttoday/ht-docker-node:npmts](https://hub.docker.com/r/hosttoday/ht-docker-node/) for speedy CI builds
## About the authors: ## About the authors:
[![Project Phase](https://mediaserve.lossless.digital/lossless.com/img/createdby_github.svg)](https://lossless.com/) [![Project Phase](https://mediaserve.lossless.digital/lossless.com/img/createdby_github.svg)](https://lossless.com/)

30
dist/index.js vendored
View File

@ -1,14 +1,28 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
/* ================================================== *
Starting NPMTS main process.
* ================================================== */
var early = require("early"); var early = require("early");
early.start("NPMTS"); early.start("NPMTS");
var plugins = require("./npmts.plugins"); var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
var npmts_promisechain_1 = require("./npmts.promisechain"); var npmts_promisechain_1 = require("./npmts.promisechain");
early.stop(); early.stop()
plugins.beautylog.figletSync("NPMTS"); .then(function () {
try { var npmtsProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.npmtsPackageRoot);
npmts_promisechain_1.promisechain(); var npmtsCli = new plugins.smartcli.Smartcli();
} npmtsCli.standardTask()
catch (err) { .then(function (argvArg) {
console.log(err); plugins.beautylog.figletSync("NPMTS");
} plugins.beautylog.info("npmts version: " + npmtsProjectInfo.version);
try {
npmts_promisechain_1.promisechain(argvArg);
}
catch (err) {
console.log(err);
}
});
npmtsCli.addVersion(npmtsProjectInfo.version);
npmtsCli.startParse();
});

View File

@ -1,12 +1,12 @@
"use strict"; "use strict";
var plugins = require("./npmts.plugins"); var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths"); var paths = require("./npmts.paths");
var outputPathIsDir = function (configArg, keyArg) { var outputPathIsDir = function (tsArrayArg, keyArg) {
return plugins.smartpath.check.isDir(plugins.path.join(paths.cwd, configArg.ts[keyArg])); return plugins.smartpath.check.isDir(plugins.path.join(paths.cwd, tsArrayArg[keyArg]));
}; };
exports.checkOutputPath = function (configArg, keyArg) { exports.checkOutputPath = function (tsArrayArg, keyArg) {
if (!outputPathIsDir(configArg, keyArg)) { if (!outputPathIsDir(tsArrayArg, keyArg)) {
plugins.beautylog.warn("Skipping " + keyArg + " because " + configArg.ts[keyArg] + " it is no directory!"); plugins.beautylog.warn("Skipping " + keyArg + " because " + tsArrayArg[keyArg] + " it is no directory!");
return false; return false;
} }
else { else {

44
dist/npmts.compile.js vendored
View File

@ -12,7 +12,7 @@ var definitionHandler = function (configArg) {
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var configTsLenght = Object.keys(configArg.ts).length; var configTsLenght = Object.keys(configArg.ts).length;
if (configTsLenght == 0) { if (configTsLenght == 0) {
plugins.beautylog.warn("No declaration files found... Are you sure you don't want them?"); plugins.beautylog.warn("No TS file and thus no definitions found!");
done.resolve(configArg); //if there are no definition files, resolve... done.resolve(configArg); //if there are no definition files, resolve...
} }
var localCounter = 0; var localCounter = 0;
@ -32,14 +32,10 @@ var definitionHandler = function (configArg) {
} }
return done.promise; return done.promise;
}; };
exports.run = function (configArg) { var compileTs = function (tsFileArrayArg, tsOptionsArg) {
if (tsOptionsArg === void 0) { tsOptionsArg = {}; }
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var config = configArg;
npmts_promisechain_1.npmtsOra.text("now compiling " + "TypeScript".yellow);
var moduleStream = plugins.merge2({ end: false }); var moduleStream = plugins.merge2({ end: false });
/* -------------------------------------------------
* ----------- compile TypeScript --------------------------
* ----------------------------------------------- */
var tsOptionsDefault = { var tsOptionsDefault = {
declaration: true, declaration: true,
target: "ES5", target: "ES5",
@ -49,30 +45,40 @@ exports.run = function (configArg) {
* merges default ts options with those found in npmts.json * merges default ts options with those found in npmts.json
*/ */
var tsOptions = function (keyArg) { var tsOptions = function (keyArg) {
return plugins.lodashObject.assign(tsOptionsDefault, config.tsOptions); return plugins.lodashObject.assign(tsOptionsDefault, tsOptionsArg);
}; };
for (var keyArg in config.ts) { for (var keyArg in tsFileArrayArg) {
if (helpers.checkOutputPath(config, keyArg)) { if (helpers.checkOutputPath(tsFileArrayArg, keyArg)) {
var tsStream = plugins.gulp.src([plugins.path.join(paths.cwd, keyArg), "!**/typings/**"]) var tsStream = plugins.gulp.src([plugins.path.join(paths.cwd, keyArg), "!**/typings/**"])
.pipe(plugins.g.sourcemaps.init()) // This means sourcemaps will be generated .pipe(plugins.g.sourcemaps.init()) // This means sourcemaps will be generated
.pipe(plugins.g.typescript(tsOptions(keyArg))); .pipe(plugins.g.typescript(tsOptions(keyArg)));
var jsStream = tsStream.js var jsStream = tsStream.js
.pipe(plugins.g.sourcemaps.write()) // Now the sourcemaps are added to the .js file .pipe(plugins.g.sourcemaps.write()) // Now the sourcemaps are added to the .js file
.pipe(plugins.gulp.dest(config.ts[keyArg])); .pipe(plugins.gulp.dest(tsFileArrayArg[keyArg]));
var declarationStream = tsStream.dts var declarationStream = tsStream.dts
.pipe(plugins.gulp.dest(config.ts[keyArg])); .pipe(plugins.gulp.dest(tsFileArrayArg[keyArg]));
moduleStream.add(tsStream, jsStream, declarationStream); moduleStream.add(tsStream, jsStream, declarationStream);
} }
} }
moduleStream.on("queueDrain", function () { moduleStream.on("queueDrain", function () {
moduleStream.on("finish", function () { done.resolve();
plugins.beautylog.ok("compiled TypeScript!"); });
definitionHandler(config) return done.promise;
.then(function () { };
done.resolve(config); exports.run = function (configArg) {
}); var done = plugins.Q.defer();
var config = configArg;
npmts_promisechain_1.npmtsOra.text("now compiling " + "TypeScript".yellow);
compileTs(config.ts, config.tsOptions)
.then(function () {
compileTs(config.testTs);
})
.then(function () {
plugins.beautylog.ok("compiled TypeScript!");
definitionHandler(config)
.then(function () {
done.resolve(config);
}); });
moduleStream.end();
}); });
/*==================== END TS Compilation =====================*/ /*==================== END TS Compilation =====================*/
return done.promise; return done.promise;

View File

@ -2,10 +2,13 @@
require("typings-global"); require("typings-global");
var plugins = require("./npmts.plugins"); var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths"); var paths = require("./npmts.paths");
exports.run = function () { exports.run = function (argvArg) {
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var config = {}; var config = {};
var configPath = plugins.path.join(paths.cwd, "npmts.json"); var configPath = plugins.path.join(paths.cwd, "npmts.json");
if (argvArg.notest) {
config.notest = true;
}
if (plugins.smartfile.checks.fileExistsSync(configPath)) { if (plugins.smartfile.checks.fileExistsSync(configPath)) {
plugins.beautylog.info("npmts.json".blue + " config file found!"); plugins.beautylog.info("npmts.json".blue + " config file found!");
config = plugins.smartfile.local.toObjectSync(configPath); config = plugins.smartfile.local.toObjectSync(configPath);

28
dist/npmts.jsdoc.js vendored
View File

@ -20,34 +20,6 @@ var genJsdoc = function (configArg) {
})); }));
return done.promise; return done.promise;
}; };
exports.publishDocs = function (configArg) {
var done = plugins.Q.defer();
var gitUrl = plugins.projectinfo.npm(paths.cwd, {
gitAccessToken: process.env.GITHUB_TOKEN
}).git.httpsUrl;
var deployScript = ""
+ "cd " + paths.docsDir + " "
+ "&& git init " + "> /dev/null 2>&1 "
+ "&& git config user.name \"TRAVIS CI\" " + "> /dev/null 2>&1 "
+ "&& git config user.email \"travis@shipzone.io\" " + "> /dev/null 2>&1 "
+ "&& git add . " + "> /dev/null 2>&1 "
+ "&& git commit -m \"Deploy to GitHub Pages\" " + "> /dev/null 2>&1 "
+ "&& git push --force --quiet "
+ "\"" + gitUrl + "\" "
+ "master:gh-pages " + "> /dev/null 2>&1";
plugins.beautylog.log("now publishing JsDoc documentation to GitHub");
if (!plugins.shelljs.which('git')) {
plugins.beautylog.error('Git is not installed!');
plugins.shelljs.exit(1);
}
else if (plugins.shelljs.exec(deployScript).code !== 0) {
plugins.beautylog.error('Git failed!');
plugins.shelljs.exit(1);
}
plugins.beautylog.ok("JsDoc documentation has been deployed to GitHub!");
done.resolve(configArg);
return done.promise;
};
exports.run = function (configArg) { exports.run = function (configArg) {
var done = plugins.Q.defer(); var done = plugins.Q.defer();
genJsdoc(configArg) genJsdoc(configArg)

27
dist/npmts.options.js vendored
View File

@ -5,19 +5,6 @@ var npmts_promisechain_1 = require("./npmts.promisechain");
exports.isCi = function () { exports.isCi = function () {
return plugins.smartci.check.isCi(); return plugins.smartci.check.isCi();
}; };
exports.isRelease = function () {
return plugins.smartci.check.isCi()
&& plugins.smartci.check.isTaggedCommit();
};
exports.doPublish = function () {
try {
return exports.isRelease()
&& plugins.smartci.get.subJobNumber() == 1;
}
catch (err) {
return false;
}
};
exports.run = function (configArg) { exports.run = function (configArg) {
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var config = configArg; var config = configArg;
@ -29,25 +16,21 @@ exports.run = function (configArg) {
]; ];
config.ts = (_a = {}, config.ts = (_a = {},
_a["./ts/**/*.ts"] = "./dist/", _a["./ts/**/*.ts"] = "./dist/",
_a["./test/test.ts"] = "./test/",
_a _a
); );
config.testTs = (_b = {},
_b["./test/test.ts"] = "./test/",
_b
);
config.test = ["./index.js"]; config.test = ["./index.js"];
} }
//check if config.tsOptions is available //check if config.tsOptions is available
config.tsOptions ? void (0) : config.tsOptions = {}; config.tsOptions ? void (0) : config.tsOptions = {};
// handle state of current build
exports.isRelease() ? plugins.beautylog.info("All right: This is a RELEASE build!")
: plugins.beautylog.info("NOT A RELEASE build!");
exports.isRelease() && exports.doPublish() ? plugins.beautylog.info("All right: This is the first subBuild, so this one publishes COVERAGE + DOCS when tests succeed!")
: plugins.beautylog.info("We are not publishing anything!");
config.coverageTreshold ? void (0) : config.coverageTreshold = 70; config.coverageTreshold ? void (0) : config.coverageTreshold = 70;
// handle docs // handle docs
config.docs ? void (0) : config.docs = {}; config.docs ? void (0) : config.docs = {};
config.docs.publish ? void (0) : config.docs.publish = false;
exports.doPublish() ? void (0) : config.docs.publish = false;
plugins.beautylog.ok("build options are ready!"); plugins.beautylog.ok("build options are ready!");
done.resolve(config); done.resolve(config);
return done.promise; return done.promise;
var _a; var _a, _b;
}; };

5
dist/npmts.paths.js vendored
View File

@ -1,7 +1,10 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
var plugins = require("./npmts.plugins"); var plugins = require("./npmts.plugins");
exports.cwd = plugins.smartcli.get.cwd().path; //Npmts Paths
exports.npmtsPackageRoot = plugins.path.join(__dirname, "../");
//Project paths
exports.cwd = process.cwd();
//Directories //Directories
exports.tsDir = plugins.path.join(exports.cwd, "ts/"); exports.tsDir = plugins.path.join(exports.cwd, "ts/");
exports.distDir = plugins.path.join(exports.cwd, "dist/"); exports.distDir = plugins.path.join(exports.cwd, "dist/");

View File

@ -2,7 +2,6 @@
require("typings-global"); require("typings-global");
var plugins = require("./npmts.plugins"); var plugins = require("./npmts.plugins");
exports.npmtsOra = new plugins.beautylog.Ora("setting up TaskChain", "cyan"); exports.npmtsOra = new plugins.beautylog.Ora("setting up TaskChain", "cyan");
exports.npmtsOra.start();
var NpmtsAssets = require("./npmts.assets"); var NpmtsAssets = require("./npmts.assets");
var NpmtsClean = require("./npmts.clean"); var NpmtsClean = require("./npmts.clean");
var NpmtsCompile = require("./npmts.compile"); var NpmtsCompile = require("./npmts.compile");
@ -12,9 +11,10 @@ var NpmtsJsdoc = require("./npmts.jsdoc");
var NpmtsOptions = require("./npmts.options"); var NpmtsOptions = require("./npmts.options");
var NpmtsPublish = require("./npmts.publish"); var NpmtsPublish = require("./npmts.publish");
var NpmtsTests = require("./npmts.tests"); var NpmtsTests = require("./npmts.tests");
exports.promisechain = function () { exports.promisechain = function (argvArg) {
var done = plugins.Q.defer(); var done = plugins.Q.defer();
NpmtsConfigFile.run() exports.npmtsOra.start();
NpmtsConfigFile.run(argvArg)
.then(NpmtsOptions.run) .then(NpmtsOptions.run)
.then(NpmtsClean.run) .then(NpmtsClean.run)
.then(NpmtsInstall.run) .then(NpmtsInstall.run)

View File

@ -1,13 +1,9 @@
"use strict"; "use strict";
require("typings-global"); require("typings-global");
var plugins = require("./npmts.plugins"); var plugins = require("./npmts.plugins");
var NpmtsJsdoc = require("./npmts.jsdoc");
exports.run = function (configArg) { exports.run = function (configArg) {
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var config = configArg; var config = configArg;
var promiseArray = []; done.resolve();
config.docs.publish ? promiseArray.push(NpmtsJsdoc.publishDocs(configArg)) : void (0);
promiseArray.length === 0 ? plugins.beautylog.info("Did not publish anything!") : void (0);
plugins.Q.all(promiseArray).then(done.resolve);
return done.promise; return done.promise;
}; };

23
dist/npmts.tests.js vendored
View File

@ -56,13 +56,20 @@ var coverage = function (configArg) {
exports.run = function (configArg) { exports.run = function (configArg) {
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var config = configArg; var config = configArg;
npmts_promisechain_1.npmtsOra.text("now starting tests"); if (!config.notest) {
plugins.beautylog.log("-------------------------------------------------------\n" + npmts_promisechain_1.npmtsOra.text("now starting tests");
"*************************** TESTS: ***************************\n" + plugins.beautylog.log("-------------------------------------------------------\n" +
"--------------------------------------------------------------"); "*************************** TESTS: ***************************\n" +
istanbul(config) "--------------------------------------------------------------");
.then(mocha) istanbul(config)
.then(coverage) .then(mocha)
.then(done.resolve); .then(coverage)
.then(function () {
done.resolve(config);
});
}
else {
done.resolve(config);
}
return done.promise; return done.promise;
}; };

View File

@ -1,14 +1,15 @@
{ {
"name": "npmts", "name": "npmts",
"version": "5.2.1", "version": "5.3.3",
"description": "write npm modules with TypeScript", "description": "write npm modules with TypeScript",
"main": "dist/index.js", "main": "dist/index.js",
"bin": { "bin": {
"npmts": "dist/cli.js" "npmts": "dist/cli.js"
}, },
"scripts": { "scripts": {
"test": "(npm run compile && npm run check)", "test": "(npm run compile && npm run check && npm run checkVersion)",
"check": "(cd ./test/assets && node ../../dist/index.js)", "check": "(cd ./test/assets && node ../../dist/index.js)",
"checkVersion": "cd ./test/assets && node ../../dist/index.js -v",
"compile": "(cd compile && node compile.js)" "compile": "(cd compile && node compile.js)"
}, },
"repository": { "repository": {
@ -26,32 +27,32 @@
}, },
"homepage": "https://gitlab.com/pushrocks/npmts#readme", "homepage": "https://gitlab.com/pushrocks/npmts#readme",
"dependencies": { "dependencies": {
"beautylog": "5.0.6", "beautylog": "5.0.11",
"early": "^2.0.1", "early": "^2.0.13",
"fs-extra": "^0.30.0", "fs-extra": "^0.30.0",
"gulp": "3.9.1", "gulp": "3.9.1",
"gulp-concat": "^2.6.0", "gulp-concat": "^2.6.0",
"gulp-function": "^1.3.1", "gulp-function": "^1.3.6",
"gulp-if": "^2.0.1", "gulp-if": "^2.0.1",
"gulp-istanbul": "^0.10.4", "gulp-istanbul": "^1.0.0",
"gulp-jsdoc3": "^0.2.1", "gulp-jsdoc3": "^0.3.0",
"gulp-mocha": "^2.2.0", "gulp-mocha": "^2.2.0",
"gulp-replace": "^0.5.4", "gulp-replace": "^0.5.4",
"gulp-sourcemaps": "^2.0.0-alpha", "gulp-sourcemaps": "^2.0.0-alpha",
"gulp-typescript": "2.13.4", "gulp-typescript": "2.13.6",
"gulp-typings": "2.0.0", "gulp-typings": "2.0.0",
"lodash": "^4.13.1", "lodash": "^4.13.1",
"merge2": "1.0.2", "merge2": "1.0.2",
"projectinfo": "1.0.1", "projectinfo": "1.0.3",
"q": "^1.4.1", "q": "^1.4.1",
"shelljs": "^0.7.0", "shelljs": "^0.7.0",
"smartci": "0.0.1", "smartci": "0.0.1",
"smartcli": "0.0.11", "smartcli": "1.0.2",
"smartcov": "0.0.6", "smartcov": "0.0.6",
"smartenv": "1.2.5", "smartenv": "1.2.5",
"smartfile": "3.0.10", "smartfile": "3.0.10",
"smartpath": "3.2.1", "smartpath": "3.2.2",
"smartstring": "^2.0.1", "smartstring": "^2.0.6",
"source-map-support": "^0.4.0", "source-map-support": "^0.4.0",
"typings-global": "*" "typings-global": "*"
}, },

View File

@ -6,4 +6,4 @@ var testplugin = {
}; };
module.exports = testplugin; module.exports = testplugin;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZDQUE2QztBQUM3QyxJQUFJLFVBQVUsR0FBRztJQUNiLFlBQVksRUFBRTtRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0osQ0FBQztBQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9pbmRleC5kLnRzXCIgLz5cclxubGV0IHRlc3RwbHVnaW4gPSB7XHJcbiAgICBsb2dTb21ldGhpbmc6IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJvbmx5IGZ1bmN0aW9uIGV4ZWN1dGVkXCIpO1xyXG4gICAgfVxyXG59O1xyXG5tb2R1bGUuZXhwb3J0cyA9IHRlc3RwbHVnaW47Il19 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZDQUE2QztBQUM3QyxJQUFJLFVBQVUsR0FBRztJQUNiLFlBQVksRUFBRTtRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0osQ0FBQztBQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4vdHlwaW5ncy9pbmRleC5kLnRzXCIgLz5cbmxldCB0ZXN0cGx1Z2luID0ge1xuICAgIGxvZ1NvbWV0aGluZzogZnVuY3Rpb24oKXtcbiAgICAgICAgY29uc29sZS5sb2coXCJvbmx5IGZ1bmN0aW9uIGV4ZWN1dGVkXCIpO1xuICAgIH1cbn07XG5tb2R1bGUuZXhwb3J0cyA9IHRlc3RwbHVnaW47Il19

View File

@ -1 +1,2 @@
/// <reference path="../ts/typings/index.d.ts" />
declare var testplugin: any; declare var testplugin: any;

View File

@ -8,4 +8,4 @@ describe("testplugins", function () {
}); });
}); });
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaURBQWlEO0FBQ2pELElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzdDLFFBQVEsQ0FBQyxhQUFhLEVBQUM7SUFDbkIsUUFBUSxDQUFDLGVBQWUsRUFBQztRQUNyQixFQUFFLENBQUMsc0JBQXNCLEVBQUM7WUFDdEIsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL3RzL3R5cGluZ3MvaW5kZXguZC50c1wiIC8+XHJcbnZhciB0ZXN0cGx1Z2luID0gcmVxdWlyZShcIi4uL2Rpc3QvaW5kZXguanNcIik7XHJcbmRlc2NyaWJlKFwidGVzdHBsdWdpbnNcIixmdW5jdGlvbigpe1xyXG4gICAgZGVzY3JpYmUoXCIubG9nU29tZXRoaW5nXCIsZnVuY3Rpb24oKXtcclxuICAgICAgICBpdChcInNob3VsZCBsb2cgc29tZXRoaW5nXCIsZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgdGVzdHBsdWdpbi5sb2dTb21ldGhpbmcoKVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn0pOyJdfQ== //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaURBQWlEO0FBQ2pELElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzdDLFFBQVEsQ0FBQyxhQUFhLEVBQUM7SUFDbkIsUUFBUSxDQUFDLGVBQWUsRUFBQztRQUNyQixFQUFFLENBQUMsc0JBQXNCLEVBQUM7WUFDdEIsVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQzdCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL3RzL3R5cGluZ3MvaW5kZXguZC50c1wiIC8+XG52YXIgdGVzdHBsdWdpbiA9IHJlcXVpcmUoXCIuLi9kaXN0L2luZGV4LmpzXCIpO1xuZGVzY3JpYmUoXCJ0ZXN0cGx1Z2luc1wiLGZ1bmN0aW9uKCl7XG4gICAgZGVzY3JpYmUoXCIubG9nU29tZXRoaW5nXCIsZnVuY3Rpb24oKXtcbiAgICAgICAgaXQoXCJzaG91bGQgbG9nIHNvbWV0aGluZ1wiLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICB0ZXN0cGx1Z2luLmxvZ1NvbWV0aGluZygpXG4gICAgICAgIH0pO1xuICAgIH0pO1xufSk7Il19

View File

@ -1 +0,0 @@
{"version":3,"file":"test.js","sourceRoot":"","sources":["test.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,IAAI,UAAU,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAC7C,QAAQ,CAAC,aAAa,EAAC;IACnB,QAAQ,CAAC,eAAe,EAAC;QACrB,EAAE,CAAC,sBAAsB,EAAC;YACtB,UAAU,CAAC,YAAY,EAAE,CAAA;QAC7B,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}

View File

@ -1,16 +1,30 @@
import "typings-global"; import "typings-global";
/* ================================================== *
Starting NPMTS main process.
* ================================================== */
import * as early from "early"; import * as early from "early";
early.start("NPMTS"); early.start("NPMTS");
import * as plugins from "./npmts.plugins" import * as plugins from "./npmts.plugins"
import * as paths from "./npmts.paths";
import {promisechain} from "./npmts.promisechain"; import {promisechain} from "./npmts.promisechain";
early.stop(); early.stop()
.then(() => {
let npmtsProjectInfo = new plugins.projectinfo.ProjectinfoNpm(paths.npmtsPackageRoot);
plugins.beautylog.figletSync("NPMTS"); let npmtsCli = new plugins.smartcli.Smartcli();
npmtsCli.standardTask()
try { .then((argvArg) => {
promisechain(); plugins.beautylog.figletSync("NPMTS");
} plugins.beautylog.info("npmts version: " + npmtsProjectInfo.version);
catch(err){ try {
console.log(err); promisechain(argvArg);
} }
catch(err){
console.log(err);
}
});
npmtsCli.addVersion(npmtsProjectInfo.version);
npmtsCli.startParse();
});

View File

@ -1,13 +1,13 @@
import plugins = require("./npmts.plugins"); import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths"); import paths = require("./npmts.paths");
let outputPathIsDir = function (configArg,keyArg) { let outputPathIsDir = function (tsArrayArg,keyArg) {
return plugins.smartpath.check.isDir(plugins.path.join(paths.cwd, configArg.ts[keyArg])); return plugins.smartpath.check.isDir(plugins.path.join(paths.cwd, tsArrayArg[keyArg]));
}; };
export let checkOutputPath = function(configArg,keyArg){ export let checkOutputPath = function(tsArrayArg,keyArg){
if(!outputPathIsDir(configArg,keyArg)) { if(!outputPathIsDir(tsArrayArg,keyArg)) {
plugins.beautylog.warn("Skipping " + keyArg + " because " + configArg.ts[keyArg] + " it is no directory!") plugins.beautylog.warn("Skipping " + keyArg + " because " + tsArrayArg[keyArg] + " it is no directory!")
return false return false
} else { } else {
return true; return true;

View File

@ -12,7 +12,7 @@ let definitionHandler = function(configArg){
let done = plugins.Q.defer(); let done = plugins.Q.defer();
let configTsLenght = Object.keys(configArg.ts).length; let configTsLenght = Object.keys(configArg.ts).length;
if(configTsLenght == 0) { if(configTsLenght == 0) {
plugins.beautylog.warn("No declaration files found... Are you sure you don't want them?"); plugins.beautylog.warn("No TS file and thus no definitions found!");
done.resolve(configArg); //if there are no definition files, resolve... done.resolve(configArg); //if there are no definition files, resolve...
} }
let localCounter = 0; let localCounter = 0;
@ -33,17 +33,10 @@ let definitionHandler = function(configArg){
return done.promise; return done.promise;
} }
let compileTs = (tsFileArrayArg,tsOptionsArg = {}) => {
export let run = function (configArg) {
let done = plugins.Q.defer(); let done = plugins.Q.defer();
let config = configArg;
npmtsOra.text("now compiling " + "TypeScript".yellow);
let moduleStream = plugins.merge2({ end: false }); let moduleStream = plugins.merge2({ end: false });
/* -------------------------------------------------
* ----------- compile TypeScript --------------------------
* ----------------------------------------------- */
let tsOptionsDefault = { let tsOptionsDefault = {
declaration: true, declaration: true,
target: "ES5", target: "ES5",
@ -54,34 +47,45 @@ export let run = function (configArg) {
* merges default ts options with those found in npmts.json * merges default ts options with those found in npmts.json
*/ */
let tsOptions = function (keyArg:string) { let tsOptions = function (keyArg:string) {
return plugins.lodashObject.assign(tsOptionsDefault, config.tsOptions) return plugins.lodashObject.assign(tsOptionsDefault, tsOptionsArg)
}; };
for (let keyArg in tsFileArrayArg) {
for (let keyArg in config.ts) { if (helpers.checkOutputPath(tsFileArrayArg,keyArg)) {
if (helpers.checkOutputPath(config,keyArg)) {
let tsStream = plugins.gulp.src([plugins.path.join(paths.cwd, keyArg), "!**/typings/**"]) let tsStream = plugins.gulp.src([plugins.path.join(paths.cwd, keyArg), "!**/typings/**"])
.pipe(plugins.g.sourcemaps.init()) // This means sourcemaps will be generated .pipe(plugins.g.sourcemaps.init()) // This means sourcemaps will be generated
.pipe(plugins.g.typescript(tsOptions(keyArg))); .pipe(plugins.g.typescript(tsOptions(keyArg)));
let jsStream = tsStream.js let jsStream = tsStream.js
.pipe(plugins.g.sourcemaps.write()) // Now the sourcemaps are added to the .js file .pipe(plugins.g.sourcemaps.write()) // Now the sourcemaps are added to the .js file
.pipe(plugins.gulp.dest(config.ts[keyArg])); .pipe(plugins.gulp.dest(tsFileArrayArg[keyArg]));
let declarationStream = tsStream.dts let declarationStream = tsStream.dts
.pipe(plugins.gulp.dest(config.ts[keyArg])); .pipe(plugins.gulp.dest(tsFileArrayArg[keyArg]));
moduleStream.add(tsStream,jsStream,declarationStream); moduleStream.add(tsStream,jsStream,declarationStream);
} }
} }
moduleStream.on("queueDrain",() => {
done.resolve();
})
return done.promise;
}
moduleStream.on("queueDrain", function () {
moduleStream.on("finish", function () { export let run = function (configArg) {
let done = plugins.Q.defer();
let config = configArg;
npmtsOra.text("now compiling " + "TypeScript".yellow);
compileTs(config.ts,config.tsOptions)
.then(() => {
compileTs(config.testTs);
})
.then(function () {
plugins.beautylog.ok("compiled TypeScript!"); plugins.beautylog.ok("compiled TypeScript!");
definitionHandler(config) definitionHandler(config)
.then(function(){ .then(function(){
done.resolve(config); done.resolve(config);
}); });
}); });
moduleStream.end();
});
/*==================== END TS Compilation =====================*/ /*==================== END TS Compilation =====================*/

View File

@ -1,10 +1,13 @@
import "typings-global"; import "typings-global";
import plugins = require("./npmts.plugins"); import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths"); import paths = require("./npmts.paths");
export var run = function(){ export var run = function(argvArg){
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var config:any = {}; var config:any = {};
var configPath = plugins.path.join(paths.cwd,"npmts.json"); var configPath = plugins.path.join(paths.cwd,"npmts.json");
if(argvArg.notest){
config.notest = true;
}
if(plugins.smartfile.checks.fileExistsSync(configPath)){ if(plugins.smartfile.checks.fileExistsSync(configPath)){
plugins.beautylog.info("npmts.json".blue + " config file found!"); plugins.beautylog.info("npmts.json".blue + " config file found!");
config = plugins.smartfile.local.toObjectSync(configPath); config = plugins.smartfile.local.toObjectSync(configPath);

View File

@ -21,41 +21,6 @@ let genJsdoc = function(configArg){
return done.promise; return done.promise;
}; };
export let publishDocs = function(configArg){
let done = plugins.Q.defer();
let gitUrl = plugins.projectinfo.npm(
paths.cwd,
{
gitAccessToken:process.env.GITHUB_TOKEN
}
).git.httpsUrl;
let deployScript = ""
+ "cd " + paths.docsDir + " "
+ "&& git init " + "> /dev/null 2>&1 "
+ "&& git config user.name \"TRAVIS CI\" " + "> /dev/null 2>&1 "
+ "&& git config user.email \"travis@shipzone.io\" " + "> /dev/null 2>&1 "
+ "&& git add . " + "> /dev/null 2>&1 "
+ "&& git commit -m \"Deploy to GitHub Pages\" " + "> /dev/null 2>&1 "
+ "&& git push --force --quiet "
+ "\"" + gitUrl + "\" "
+ "master:gh-pages " + "> /dev/null 2>&1";
plugins.beautylog.log("now publishing JsDoc documentation to GitHub");
if (!plugins.shelljs.which('git')) {
plugins.beautylog.error('Git is not installed!');
plugins.shelljs.exit(1);
} else if (plugins.shelljs.exec(deployScript).code !== 0) {
plugins.beautylog.error('Git failed!');
plugins.shelljs.exit(1);
}
plugins.beautylog.ok("JsDoc documentation has been deployed to GitHub!");
done.resolve(configArg);
return done.promise;
};
export let run = function(configArg){ export let run = function(configArg){
let done = plugins.Q.defer(); let done = plugins.Q.defer();

View File

@ -6,21 +6,6 @@ export let isCi = function(){
return plugins.smartci.check.isCi(); return plugins.smartci.check.isCi();
}; };
export let isRelease = function():boolean {
return plugins.smartci.check.isCi()
&& plugins.smartci.check.isTaggedCommit();
};
export let doPublish = function():boolean {
try {
return isRelease()
&& plugins.smartci.get.subJobNumber() == 1;
}
catch (err){
return false;
}
};
export var run = function(configArg){ export var run = function(configArg){
var done = plugins.Q.defer(); var done = plugins.Q.defer();
var config = configArg; var config = configArg;
@ -33,7 +18,9 @@ export var run = function(configArg){
"./ts/typings.json" "./ts/typings.json"
]; ];
config.ts = { config.ts = {
["./ts/**/*.ts"]: "./dist/", ["./ts/**/*.ts"]: "./dist/"
};
config.testTs = {
["./test/test.ts"]: "./test/" ["./test/test.ts"]: "./test/"
}; };
config.test = ["./index.js"]; config.test = ["./index.js"];
@ -42,21 +29,12 @@ export var run = function(configArg){
//check if config.tsOptions is available //check if config.tsOptions is available
config.tsOptions ? void(0) : config.tsOptions = {}; config.tsOptions ? void(0) : config.tsOptions = {};
// handle state of current build
isRelease() ? plugins.beautylog.info("All right: This is a RELEASE build!")
: plugins.beautylog.info("NOT A RELEASE build!");
isRelease() && doPublish() ? plugins.beautylog.info("All right: This is the first subBuild, so this one publishes COVERAGE + DOCS when tests succeed!")
: plugins.beautylog.info("We are not publishing anything!");
config.coverageTreshold ? void(0) : config.coverageTreshold = 70; config.coverageTreshold ? void(0) : config.coverageTreshold = 70;
// handle docs // handle docs
config.docs ? void(0) : config.docs = {}; config.docs ? void(0) : config.docs = {};
config.docs.publish ? void(0) : config.docs.publish = false;
doPublish() ? void(0) : config.docs.publish = false;
plugins.beautylog.ok("build options are ready!"); plugins.beautylog.ok("build options are ready!");
done.resolve(config); done.resolve(config);

View File

@ -1,7 +1,12 @@
import "typings-global"; import "typings-global";
import plugins = require("./npmts.plugins"); import plugins = require("./npmts.plugins");
export let cwd = plugins.smartcli.get.cwd().path; //Npmts Paths
export let npmtsPackageRoot = plugins.path.join(__dirname,"../");
//Project paths
export let cwd = process.cwd();
//Directories //Directories
export let tsDir = plugins.path.join(cwd,"ts/"); export let tsDir = plugins.path.join(cwd,"ts/");

View File

@ -15,15 +15,15 @@ export let g = {
}; };
export let lodashObject = require('lodash/fp/object'); export let lodashObject = require('lodash/fp/object');
export let merge2 = require("merge2"); export let merge2 = require("merge2");
export let projectinfo = require("projectinfo"); export import projectinfo = require("projectinfo");
export let path = require("path"); export let path = require("path");
export let Q = require("q"); export let Q = require("q");
export let shelljs = require("shelljs"); export let shelljs = require("shelljs");
export let smartci = require("smartci"); export let smartci = require("smartci");
export let smartcli = require("smartcli"); export import smartcli = require("smartcli");
export let smartcov = require("smartcov"); export let smartcov = require("smartcov");
export let smartenv = require("smartenv"); export import smartenv = require("smartenv");
export let smartfile = require("smartfile"); export import smartfile = require("smartfile");
export import smartpath = require("smartpath"); export import smartpath = require("smartpath");
export import smartstring = require("smartstring"); export import smartstring = require("smartstring");
export let sourceMapSupport = require("source-map-support").install(); // this is required to display errors correctly during testing export let sourceMapSupport = require("source-map-support").install(); // this is required to display errors correctly during testing

View File

@ -2,7 +2,6 @@ import "typings-global";
import plugins = require("./npmts.plugins"); import plugins = require("./npmts.plugins");
export let npmtsOra = new plugins.beautylog.Ora("setting up TaskChain","cyan"); export let npmtsOra = new plugins.beautylog.Ora("setting up TaskChain","cyan");
npmtsOra.start();
import NpmtsAssets = require("./npmts.assets"); import NpmtsAssets = require("./npmts.assets");
import NpmtsClean = require("./npmts.clean"); import NpmtsClean = require("./npmts.clean");
@ -14,9 +13,10 @@ import NpmtsOptions = require("./npmts.options");
import NpmtsPublish = require("./npmts.publish"); import NpmtsPublish = require("./npmts.publish");
import NpmtsTests = require("./npmts.tests"); import NpmtsTests = require("./npmts.tests");
export let promisechain = function(){ export let promisechain = function(argvArg){
let done = plugins.Q.defer(); let done = plugins.Q.defer();
NpmtsConfigFile.run() npmtsOra.start();
NpmtsConfigFile.run(argvArg)
.then(NpmtsOptions.run) .then(NpmtsOptions.run)
.then(NpmtsClean.run) .then(NpmtsClean.run)
.then(NpmtsInstall.run) .then(NpmtsInstall.run)

View File

@ -6,10 +6,6 @@ import NpmtsJsdoc = require("./npmts.jsdoc");
export let run = function(configArg){ export let run = function(configArg){
let done = plugins.Q.defer(); let done = plugins.Q.defer();
let config = configArg; let config = configArg;
let promiseArray = []; done.resolve();
config.docs.publish ? promiseArray.push(NpmtsJsdoc.publishDocs(configArg)) : void(0);
promiseArray.length === 0 ? plugins.beautylog.info("Did not publish anything!") : void(0);
plugins.Q.all(promiseArray).then(done.resolve);
return done.promise; return done.promise;
}; };

View File

@ -62,6 +62,7 @@ let coverage = function(configArg){
export let run = function(configArg) { export let run = function(configArg) {
let done = plugins.Q.defer(); let done = plugins.Q.defer();
let config = configArg; let config = configArg;
if(!config.notest){
npmtsOra.text("now starting tests"); npmtsOra.text("now starting tests");
plugins.beautylog.log( plugins.beautylog.log(
@ -73,6 +74,11 @@ export let run = function(configArg) {
istanbul(config) istanbul(config)
.then(mocha) .then(mocha)
.then(coverage) .then(coverage)
.then(done.resolve); .then(() => {
done.resolve(config);
});
} else {
done.resolve(config);
}
return done.promise; return done.promise;
}; };