Compare commits

...

11 Commits

Author SHA1 Message Date
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
16 changed files with 98 additions and 160 deletions

View File

@ -1,8 +1,9 @@
image: hosttoday/ht-docker-node:npmci
image: hosttoday/ht-docker-node:npmts
stages:
- test
- release
- trigger
- page
testLEGACY:
@ -11,6 +12,7 @@ testLEGACY:
- npmci test legacy
tags:
- docker
allow_failure: true
testLTS:
stage: test
@ -35,6 +37,15 @@ release:
tags:
- docker
trigger:
stage: trigger
script:
- npmci trigger
only:
- tags
tags:
- docker
pages:
stage: page
script:

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/)
### Install
First install npmts as dev dependency:
First install npmts globally, then install the npmts checker:
```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
"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. Run Tests
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
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.
## 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:
[![Project Phase](https://mediaserve.lossless.digital/lossless.com/img/createdby_github.svg)](https://lossless.com/)

16
dist/index.js vendored
View File

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

28
dist/npmts.jsdoc.js vendored
View File

@ -20,34 +20,6 @@ var genJsdoc = function (configArg) {
}));
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) {
var done = plugins.Q.defer();
genJsdoc(configArg)

20
dist/npmts.options.js vendored
View File

@ -5,19 +5,6 @@ var npmts_promisechain_1 = require("./npmts.promisechain");
exports.isCi = function () {
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) {
var done = plugins.Q.defer();
var config = configArg;
@ -39,16 +26,9 @@ exports.run = function (configArg) {
}
//check if config.tsOptions is available
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;
// handle 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!");
done.resolve(config);
return done.promise;

5
dist/npmts.paths.js vendored
View File

@ -1,7 +1,10 @@
"use strict";
require("typings-global");
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
exports.tsDir = plugins.path.join(exports.cwd, "ts/");
exports.distDir = plugins.path.join(exports.cwd, "dist/");

View File

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

View File

@ -1,13 +1,9 @@
"use strict";
require("typings-global");
var plugins = require("./npmts.plugins");
var NpmtsJsdoc = require("./npmts.jsdoc");
exports.run = function (configArg) {
var done = plugins.Q.defer();
var config = configArg;
var promiseArray = [];
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);
done.resolve();
return done.promise;
};

View File

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

View File

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

View File

@ -21,41 +21,6 @@ let genJsdoc = function(configArg){
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){
let done = plugins.Q.defer();

View File

@ -6,21 +6,6 @@ export let isCi = function(){
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){
var done = plugins.Q.defer();
var config = configArg;
@ -44,21 +29,12 @@ export var run = function(configArg){
//check if config.tsOptions is available
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;
// handle 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!");
done.resolve(config);

View File

@ -1,7 +1,12 @@
import "typings-global";
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
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 merge2 = require("merge2");
export let projectinfo = require("projectinfo");
export import projectinfo = require("projectinfo");
export let path = require("path");
export let Q = require("q");
export let shelljs = require("shelljs");
export let smartci = require("smartci");
export let smartcli = require("smartcli");
export import smartcli = require("smartcli");
export let smartcov = require("smartcov");
export let smartenv = require("smartenv");
export let smartfile = require("smartfile");
export import smartenv = require("smartenv");
export import smartfile = require("smartfile");
export import smartpath = require("smartpath");
export import smartstring = require("smartstring");
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");
export let npmtsOra = new plugins.beautylog.Ora("setting up TaskChain","cyan");
npmtsOra.start();
import NpmtsAssets = require("./npmts.assets");
import NpmtsClean = require("./npmts.clean");
@ -16,6 +15,7 @@ import NpmtsTests = require("./npmts.tests");
export let promisechain = function(){
let done = plugins.Q.defer();
npmtsOra.start();
NpmtsConfigFile.run()
.then(NpmtsOptions.run)
.then(NpmtsClean.run)

View File

@ -6,10 +6,6 @@ import NpmtsJsdoc = require("./npmts.jsdoc");
export let run = function(configArg){
let done = plugins.Q.defer();
let config = configArg;
let promiseArray = [];
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);
done.resolve();
return done.promise;
};