Compare commits

...

44 Commits

Author SHA1 Message Date
3cdd22044e 3.6.6 2016-03-26 17:36:00 +01:00
60d200135e fix small promise error 2016-03-26 17:35:55 +01:00
e8238dc907 3.6.5 2016-03-26 17:26:48 +01:00
007e7539c8 removed redundant if 2016-03-26 17:25:45 +01:00
e3c2c56548 3.6.4 2016-03-26 14:08:56 +01:00
f0954b19e0 improved execution order 2016-03-26 14:08:48 +01:00
48a9d19b8e 3.6.3 2016-03-23 15:55:12 +01:00
7d39683972 fix doPublish function 2016-03-23 15:55:07 +01:00
01e9f386a6 3.6.2 2016-03-23 15:47:34 +01:00
2f4fb28b5d made options handling easier 2016-03-23 15:47:28 +01:00
50b14e60c6 3.6.1 2016-03-23 15:23:14 +01:00
4753a4ff82 fix small error 2016-03-23 15:23:04 +01:00
fe9ea47208 3.6.0 2016-03-23 14:13:09 +01:00
c8f29dc146 now correctly determining release builds 2016-03-23 14:12:58 +01:00
e7e228c900 now cleaning up 2016-03-21 01:07:34 +01:00
b76cb1376d update deps 2016-03-20 19:09:58 +01:00
eed1a65415 add some beauty 2016-03-14 04:53:35 +01:00
040100b73f 3.5.0 2016-03-14 04:33:10 +01:00
3ce49c7e97 now handling cli option 2016-03-14 04:32:52 +01:00
55d7018891 add ship 2016-03-12 11:09:54 +01:00
d98d035902 3.4.1 2016-03-12 10:26:53 +01:00
217af24d25 fixs some cosmetics 2016-03-12 10:26:42 +01:00
11c43f59d9 update devDeps 2016-03-12 10:23:32 +01:00
14c36dd894 3.4.0 2016-03-12 10:21:34 +01:00
9f74fab2b2 now using gulp-typings 2016-03-12 10:21:16 +01:00
8efa67a4ff 3.3.2 2016-02-25 08:39:48 +01:00
f7304f59a5 add optional docs publishing 2016-02-25 08:39:38 +01:00
070385867e 3.3.1 2016-02-25 08:26:32 +01:00
e429eb8ae0 fix cli call 2016-02-25 08:26:00 +01:00
6045174edb 3.3.0 2016-02-23 20:02:18 +01:00
08dcdb2c9f now installing typings before compiling 2016-02-23 20:02:07 +01:00
44aa92c83c now completeley hiding git console output 2016-02-23 18:58:44 +01:00
e43541cf90 3.2.2 2016-02-23 18:35:36 +01:00
414e845b80 fix config traveling 2016-02-23 18:35:28 +01:00
c18eb85ec8 fixed repo path 2016-02-23 18:24:07 +01:00
3ae3598c96 update env vars 2016-02-23 18:10:03 +01:00
26eca7aa65 added GitHub Token again 2016-02-23 17:44:35 +01:00
48d9de65a0 3.2.1 2016-02-23 17:33:04 +01:00
db63e07fa3 3.2.0 2016-02-23 17:27:12 +01:00
be65ee65cb fix errors 2016-02-23 17:27:07 +01:00
78bbe2d1d7 update travis tests 2016-02-23 15:43:18 +01:00
3960cd9973 more cleanup 2016-02-22 22:38:26 +01:00
0bad43d726 cleanup 2016-02-22 22:22:39 +01:00
d5407e33dd now using commonjs module system 2016-02-20 00:53:23 +01:00
51 changed files with 910 additions and 5259 deletions

9
.gitignore vendored
View File

@ -1,10 +1,13 @@
.idea/ .idea/
.c9/ .c9/
node_modules/ node_modules/
test/**/node_modules/ test/assets/**/node_modules/
test/**/typings/ test/assets/**/docs/
test/**/coverage/ test/assets/**/typings/
test/assets/**/coverage/
ts/*.js ts/*.js
ts/*.js.map ts/*.js.map
ts/typings/
docs/
.DS_Store .DS_Store

View File

@ -2,5 +2,6 @@
support support
compile compile
test/ test/
docs/
examples examples
.gitignore .gitignore

View File

@ -1,6 +1,7 @@
language: node_js language: node_js
node_js: node_js:
- "4.2.4" - 4.3.1
- stable
deploy: deploy:
provider: npm provider: npm
email: npm@lossless.digital email: npm@lossless.digital
@ -9,3 +10,6 @@ deploy:
on: on:
tags: true tags: true
repo: pushrocks/npmts repo: pushrocks/npmts
env:
global:
secure: kPKBMnEKoC+K5dXpl11NhuK3LSp0c0fRO60Akj3QeQBjUWnVAcF0Ht30c31y0lnJaMEzXhmUIKdR7RQnlmw5be4TYGINzY7FD3Dcv7o+HO1ZQrkpMWSu46jF6ZJer9moGjZ8e0rX8wZyB9SqsXYlwWRzqvxfOVxQfTvU3BEnJKHbhq+R5JMJ8dwLBPNTJKMWKq85KNsjo3ap0BjxdBUoRLzvrn31VOPH30BkvmLGc5YiIz5QmITll/T2wmQKYTNT2qDlEJ729B8pYa3eNlCNi89AxsLDGCmEoJAVrPsyw5g+gAyBqZ1GRULy83UJbELUq7cse3MRLMSwCAm4f0INRAuqcyiKYJ4+LHd0NwKrFQ/dQ0pvyBTbbEjNemXaakkWH7S6F03UvF+u+tiQ7C97XH0CRsseGlm36zCkAClEhtWVWA4U0Q5c6zqRAAOYOI0xquXalRKPTJe7fCYewp2eqmlp8drt8MxancyKI/ynXNoR5vGFzDTSRoPjTlaYQPmbiH4+Nd5+6Qoj94PEIqghebIPDQo3C7vWts4WGccux5b2q524UgB63hjJQA6+GQOo1q4RibouS6WScn8/tW/ZOEP+sNhDfkeiZUIjye+Q3PyzonGHefgSQ8wBbsc8LOX0cKUcEFWr14nhdQ9ZeW+hrSSF04TbM4zGJPGcKhmT2UU=

2
assets/cli.js Normal file
View File

@ -0,0 +1,2 @@
#!/usr/bin/env node
var index = require("./index.js");

1
assets/node-shebang.js Normal file
View File

@ -0,0 +1 @@
#!/usr/bin/env node

View File

@ -4,31 +4,45 @@ var plugins = {
gulp: require("gulp"), gulp: require("gulp"),
g:{ g:{
typescript: require("gulp-typescript"), typescript: require("gulp-typescript"),
header: require("gulp-header") typings:require("gulp-typings")
}, },
mergeStream: require("merge2") mergeStream: require("merge2"),
path: require("path")
}; };
paths = {
packageBase: plugins.path.resolve(
plugins.path.join(__dirname,"../")
)
};
plugins.beautylog.log('now compiling NPMTS'); plugins.beautylog.log('now compiling NPMTS');
plugins.gulp.task('indexTS', function() { plugins.gulp.task("typings",function(){
var tsResult = plugins.gulp.src('../ts/index.ts') var stream = plugins.gulp.src(plugins.path.join(paths.packageBase,"ts/typings.json"))
.pipe(plugins.g.typescript({ .pipe(plugins.g.typings());
out:"index.js", return stream;
declaration:true
}));
return plugins.mergeStream([
tsResult.dts.pipe(plugins.gulp.dest('../')),
tsResult.js
.pipe(plugins.g.header('#!/usr/bin/env node\n\n'))
.pipe(plugins.gulp.dest('../'))
]);
}); });
plugins.gulp.task('default',['indexTS'], function() { plugins.gulp.task("TS",["typings"], function() {
var stream = plugins.gulp.src([
plugins.path.join(paths.packageBase,'ts/**/*.ts'),
"!" + plugins.path.join(paths.packageBase,'ts/typings/**/*.d.ts')
])
.pipe(plugins.g.typescript({
target:"ES5",
module:"commonjs"
}))
.pipe(plugins.gulp.dest(plugins.path.join(paths.packageBase, 'dist/')));
return stream;
});
plugins.gulp.task("CLI",function(){
var stream = plugins.gulp.src(plugins.path.join(paths.packageBase,"assets/cli.js"))
.pipe(plugins.gulp.dest(plugins.path.join(paths.packageBase, 'dist/')))
});
plugins.gulp.task('default',['TS',"CLI"], function() {
plugins.beautylog.success('Typescript compiled'); plugins.beautylog.success('Typescript compiled');
}); });

2
dist/cli.js vendored Normal file
View File

@ -0,0 +1,2 @@
#!/usr/bin/env node
var index = require("./index.js");

12
dist/index.js vendored Normal file
View File

@ -0,0 +1,12 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
console.log("**** starting NPMTS ****");
var plugins = require("./npmts.plugins");
var promisechain = require("./npmts.promisechain");
plugins.beautylog.figletSync("NPMTS");
try {
promisechain.run();
}
catch (err) {
console.log(err);
}

18
dist/npmts.assets.js vendored Normal file
View File

@ -0,0 +1,18 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
exports.run = function (configArg) {
var done = plugins.Q.defer();
var config = configArg;
plugins.beautylog.log("now looking at required assets");
if (config.cli == true) {
plugins.smartfile.fsaction.copy(plugins.path.join(paths.npmtsAssetsDir, "cli.js"), paths.distDir);
plugins.beautylog.ok("CLI asset has been installed!");
done.resolve(config);
}
else {
done.resolve(config);
}
return done.promise;
};

13
dist/npmts.clean.js vendored Normal file
View File

@ -0,0 +1,13 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
exports.run = function (configArg) {
plugins.beautylog.log("now cleaning up from previous builds");
var done = plugins.Q.defer();
plugins.smartfile.fsaction.remove(paths.distDir)
.then(function () {
done.resolve(configArg);
});
return done.promise;
};

1
dist/npmts.cli.js vendored Normal file
View File

@ -0,0 +1 @@
/// <reference path="./typings/main.d.ts" />

62
dist/npmts.compile.js vendored Normal file
View File

@ -0,0 +1,62 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
exports.run = function (configArg) {
var done = plugins.Q.defer();
var config = configArg;
plugins.beautylog.log("now compiling " + "TypeScript".yellow);
var moduleStream = plugins.merge2({ end: false });
/* -------------------------------------------------
* ----------- compile TypeScript --------------------------
* ----------------------------------------------- */
for (var key in config.ts) {
var outputPathIsDir;
try {
if (plugins.fs.statSync(plugins.path.join(paths.cwd, config.ts[key])).isDirectory()) {
outputPathIsDir = true;
}
}
catch (err) {
outputPathIsDir = false;
}
//do some evaluation of the environment
var outputNameSpecified = (!outputPathIsDir
&& (plugins.path.extname(config.ts[key]) == ".js"));
var outputName = (function () {
if (outputNameSpecified) {
return plugins.path.basename(config.ts[key]);
}
else {
return undefined;
}
})();
var outputDir = (function () {
if (outputNameSpecified) {
return plugins.path.dirname(plugins.path.join(paths.cwd, config.ts[key]));
}
else {
return plugins.path.join(paths.cwd, config.ts[key]);
}
})();
var stream = plugins.gulp.src([plugins.path.join(paths.cwd, key), "!**/typings/**"])
.pipe(plugins.g.sourcemaps.init()) // This means sourcemaps will be generated
.pipe(plugins.g.typescript({
out: outputName,
target: "ES5",
module: "commonjs"
}))
.pipe(plugins.g.sourcemaps.write()) // Now the sourcemaps are added to the .js file
.pipe(plugins.gulp.dest(outputDir));
moduleStream.add(stream);
}
moduleStream.on("queueDrain", function () {
plugins.beautylog.ok("TypeScript has been compiled!");
moduleStream.on("finish", function () {
done.resolve(config);
});
moduleStream.end();
});
/*==================== END TYPESCRIPT =====================*/
return done.promise;
};

31
dist/npmts.configfile.js vendored Normal file
View File

@ -0,0 +1,31 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
exports.run = function () {
var done = plugins.Q.defer();
var config = {};
var configPath = plugins.path.join(paths.cwd, "npmts.json");
if (plugins.smartfile.checks.fileExistsSync(configPath)) {
plugins.beautylog.info("npmts.json".blue + " config file found!");
config = plugins.smartfile.local.toObjectSync(configPath);
switch (config.mode) {
case "default":
case "custom":
plugins.beautylog.log("mode is " + config.mode.yellow);
done.resolve(config);
break;
default:
plugins.beautylog.error("mode " + config.mode.yellow + " not recognised!".red);
process.exit(1);
}
;
}
else {
plugins.beautylog.log("no config file found: so mode is " + "default".yellow);
config.mode = "default";
done.resolve(config);
}
;
return done.promise;
};

20
dist/npmts.install.js vendored Normal file
View File

@ -0,0 +1,20 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
exports.run = function (configArg) {
var config = configArg;
var done = plugins.Q.defer();
/* -------------------------------------------------
* ----------- install typings ---------------
* ----------------------------------------------- */
plugins.beautylog.log("now installing " + "typings".yellow);
var absoluteTypingsArray = plugins.smartpath.transform.toAbsolute(config.typings, paths.cwd);
plugins.gulp.src(absoluteTypingsArray)
.pipe(plugins.g.typings())
.pipe(plugins.g.gFunction(function () {
plugins.beautylog.ok("typings have been installed!");
done.resolve(config);
}, "atEnd"));
return done.promise;
};

55
dist/npmts.jsdoc.js vendored Normal file
View File

@ -0,0 +1,55 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
var genJsdoc = function (configArg) {
var done = plugins.Q.defer();
plugins.beautylog.log("now generating " + "JsDoc documentation".blue);
plugins.gulp.src([
plugins.path.join(paths.cwd, "README.md"),
plugins.path.join(paths.distDir, "**/*.js")
])
.pipe(plugins.g.jsdoc3({
opts: {
destination: paths.docsDir
}
}, function () {
plugins.beautylog.ok("JsDoc documentation has been generated!");
done.resolve(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)
.then(done.resolve);
return done.promise;
};

43
dist/npmts.options.js vendored Normal file
View File

@ -0,0 +1,43 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
exports.isRelease = function () {
return plugins.smartci.check.isCi()
&& plugins.smartci.check.isTaggedCommit();
};
exports.doPublish = function () {
return exports.isRelease()
&& plugins.smartci.get.subJobNumber() == 1;
};
exports.run = function (configArg) {
var done = plugins.Q.defer();
var config = configArg;
plugins.beautylog.log("now determining build options");
//handle default mode
if (config.mode == "default") {
config.typings = [
"./ts/typings.json"
];
config.ts = (_a = {},
_a["./ts/**/*.ts"] = "./dist/",
_a["./test/test.ts"] = "./test/",
_a
);
config.test = ["./index.js"];
}
// 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 and docs when tests succeed!")
: plugins.beautylog.info("We are not publishing anything!");
// handle coveralls
config.coveralls ? void (0) : config.coveralls = false;
exports.doPublish() ? void (0) : config.coveralls = false;
// 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;
done.resolve(config);
return done.promise;
var _a;
};

15
dist/npmts.paths.js vendored Normal file
View File

@ -0,0 +1,15 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var paths = {};
paths.cwd = plugins.smartcli.get.cwd().path;
//Directories
paths.tsDir = plugins.path.join(paths.cwd, "ts/");
paths.distDir = plugins.path.join(paths.cwd, "dist/");
paths.docsDir = plugins.path.join(paths.cwd, "docs/");
paths.testDir = plugins.path.join(paths.cwd, "test/");
paths.npmtsAssetsDir = plugins.path.join(__dirname, "../assets/");
//Files
paths.indexTS = plugins.path.join(paths.cwd, "ts/index.ts");
paths.testTS = plugins.path.join(paths.cwd, "ts/test.ts");
module.exports = paths;

26
dist/npmts.plugins.js vendored Normal file
View File

@ -0,0 +1,26 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
exports.beautylog = require("beautylog");
exports.fs = require("fs-extra");
exports.gulp = require("gulp");
exports.g = {
coveralls: require("gulp-coveralls"),
gFunction: require("gulp-function"),
istanbul: require("gulp-istanbul"),
jsdoc3: require("gulp-jsdoc3"),
mocha: require("gulp-mocha"),
sourcemaps: require("gulp-sourcemaps"),
typescript: require("gulp-typescript"),
typings: require("gulp-typings")
};
exports.merge2 = require("merge2");
exports.projectinfo = require("projectinfo");
exports.sourceMapSupport = require("source-map-support").install();
exports.path = require("path");
exports.Q = require("q");
exports.shelljs = require("shelljs");
exports.smartci = require("smartci");
exports.smartcli = require("smartcli");
exports.smartenv = require("smartenv");
exports.smartfile = require("smartfile");
exports.smartpath = require("smartpath");

48
dist/npmts.promisechain.js vendored Normal file
View File

@ -0,0 +1,48 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var NpmtsAssets = require("./npmts.assets");
var NpmtsClean = require("./npmts.clean");
var NpmtsCompile = require("./npmts.compile");
var NpmtsConfigFile = require("./npmts.configfile");
var NpmtsInstall = require("./npmts.install");
var NpmtsJsdoc = require("./npmts.jsdoc");
var NpmtsOptions = require("./npmts.options");
var NpmtsPublish = require("./npmts.publish");
var NpmtsTests = require("./npmts.tests");
exports.run = function () {
var promisechain;
NpmtsConfigFile.run()
.then(NpmtsOptions.run)
.then(NpmtsClean.run)
.then(NpmtsInstall.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(NpmtsJsdoc.run)
.then(NpmtsTests.run)
.then(NpmtsPublish.run)
.then(function (configArg) {
var shipString = "" +
"\n" +
"\n" +
" # # ( )\n" +
" ___#_#___|__\n" +
" _ |____________| _\n" +
" _=====| | | | | |==== _\n" +
" =====| |.---------------------------. | |====\n" +
" <--------------------' . . . . . . . . '--------------/\n" +
" \\ /\n" +
" \\___________________________________________________________/\n" +
" wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n" +
" wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n" +
" wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n";
if (process.env.CI) {
console.log(shipString);
plugins.beautylog.success("READY TO SHIP!");
}
else {
plugins.beautylog.success("Done!");
}
});
return promisechain;
};

15
dist/npmts.publish.js vendored Normal file
View File

@ -0,0 +1,15 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var NpmtsTests = require("./npmts.tests");
var NpmtsJsdoc = require("./npmts.jsdoc");
exports.run = function (configArg) {
var done = plugins.Q.defer();
var config = configArg;
var promiseArray = [];
config.coveralls ? promiseArray.push(NpmtsTests.publishCoverage(configArg)) : void (0);
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;
};

40
dist/npmts.tests.js vendored Normal file
View File

@ -0,0 +1,40 @@
"use strict";
/// <reference path="./typings/main.d.ts" />
var plugins = require("./npmts.plugins");
var paths = require("./npmts.paths");
exports.publishCoverage = function (configArg) {
var done = plugins.Q.defer();
plugins.beautylog.log("now uploading coverage data to coveralls");
var stream = plugins.gulp.src([plugins.path.join(paths.cwd, "./coverage/lcov.info")])
.pipe(plugins.g.coveralls())
.pipe(plugins.g.gFunction(function () {
plugins.beautylog.ok("Coverage data has been uploaded to Coveralls!");
done.resolve(configArg);
}, "atEnd"));
return done.promise;
};
exports.run = function (configArg) {
var done = plugins.Q.defer();
var config = configArg;
var istanbul = function () {
var stream = plugins.gulp.src([plugins.path.join(paths.cwd, "dist/*.js")])
.pipe(plugins.g.istanbul())
.pipe(plugins.g.istanbul.hookRequire());
return stream;
};
var mocha = function () {
var stream = plugins.gulp.src(["./test/test.js"])
.pipe(plugins.g.mocha())
.pipe(plugins.g.istanbul.writeReports())
.pipe(plugins.g.istanbul.enforceThresholds({ thresholds: { global: 30 } }));
return stream;
};
plugins.beautylog.log("now starting tests");
istanbul().on("finish", function () {
mocha().on("finish", function () {
plugins.beautylog.ok("Tests have passed!");
done.resolve(config);
});
});
return done.promise;
};

61
index.d.ts vendored
View File

@ -1,61 +0,0 @@
/// <reference path="../ts/typings/main.d.ts" />
declare module NpmtsPlugins {
var init: () => {
beautylog: any;
fs: any;
gulp: any;
g: {
coveralls: any;
istanbul: any;
mocha: any;
sourcemaps: any;
typescript: any;
};
mergeStream: any;
sourceMapSupport: any;
path: any;
q: any;
smartcli: any;
smartfile: any;
typings: any;
};
}
declare module NpmtsPaths {
var init: () => any;
}
declare module NpmtsConfigFile {
var run: () => any;
}
declare module NpmtsOptions {
var run: (configArg: any) => any;
}
declare module NpmtsCompile {
var run: (configArg: any) => any;
}
declare module NpmtsTests {
var run: (configArg: any) => any;
}
declare module NpmtsPromisechain {
var init: () => any;
}
declare var plugins: {
beautylog: any;
fs: any;
gulp: any;
g: {
coveralls: any;
istanbul: any;
mocha: any;
sourcemaps: any;
typescript: any;
};
mergeStream: any;
sourceMapSupport: any;
path: any;
q: any;
smartcli: any;
smartfile: any;
typings: any;
};
declare var paths: any;
declare var promisechain: any;

255
index.js
View File

@ -1,255 +0,0 @@
#!/usr/bin/env node
/// <reference path="./index.ts" />
var NpmtsPlugins;
(function (NpmtsPlugins) {
NpmtsPlugins.init = function () {
var plugins = {
beautylog: require("beautylog"),
fs: require("fs-extra"),
gulp: require("gulp"),
g: {
coveralls: require("gulp-coveralls"),
istanbul: require("gulp-istanbul"),
mocha: require("gulp-mocha"),
sourcemaps: require("gulp-sourcemaps"),
typescript: require("gulp-typescript")
},
mergeStream: require("merge2"),
sourceMapSupport: require("source-map-support").install(),
path: require("path"),
q: require("q"),
smartcli: require("smartcli"),
smartfile: require("smartfile"),
typings: require("typings")
};
return plugins;
};
})(NpmtsPlugins || (NpmtsPlugins = {}));
/// <reference path="./index.ts" />
/// <reference path="./index.ts" />
var NpmtsPaths;
(function (NpmtsPaths) {
NpmtsPaths.init = function () {
var paths = {};
paths.cwd = plugins.smartcli.get.cwd().path;
paths.tsDir = plugins.path.join(paths.cwd, "ts/");
paths.indexTS = plugins.path.join(paths.cwd, "ts/index.ts");
paths.testTS = plugins.path.join(paths.cwd, "ts/test.ts");
paths.testDir = plugins.path.join(paths.cwd, "test/");
return paths;
};
})(NpmtsPaths || (NpmtsPaths = {}));
/// <reference path="./index.ts" />
var NpmtsConfigFile;
(function (NpmtsConfigFile) {
NpmtsConfigFile.run = function () {
var done = plugins.q.defer();
var config = {};
var configPath = plugins.path.join(paths.cwd, "npmts.json");
if (plugins.smartfile.checks.fileExistsSync(configPath)) {
plugins.beautylog.info("npmts.json".blue + " config file found!");
config = plugins.smartfile.readFileToObject(configPath);
switch (config.mode) {
case "default":
case "custom":
plugins.beautylog.log("mode is " + config.mode.yellow);
done.resolve(config);
break;
default:
plugins.beautylog.error("mode " + config.mode.yellow + " not recognised!".red);
}
;
}
else {
plugins.beautylog.log("no config file found: so mode is " + "default".yellow);
config.mode = "default";
done.resolve(config);
}
;
return done.promise;
};
})(NpmtsConfigFile || (NpmtsConfigFile = {}));
/// <reference path="./index.ts" />
var NpmtsOptions;
(function (NpmtsOptions) {
NpmtsOptions.run = function (configArg) {
var done = plugins.q.defer();
var config = configArg;
if (typeof config.coveralls === "undefined") {
config.coveralls = false;
}
if (config.mode == "default") {
config.typings = [
"./ts/"
];
config.ts = (_a = {},
_a["./ts/**/*.ts"] = "./dist/",
_a["./test/test.ts"] = "./test/",
_a
);
config.test = ["./index.js"];
done.resolve(config);
}
else {
done.resolve(config);
}
return done.promise;
var _a;
};
})(NpmtsOptions || (NpmtsOptions = {}));
/// <reference path="./index.ts" />
var NpmtsCompile;
(function (NpmtsCompile) {
NpmtsCompile.run = function (configArg) {
var done = plugins.q.defer();
var config = configArg;
plugins.beautylog.log("now running custom tasks");
var moduleStream = plugins.mergeStream({ end: false });
/* -------------------------------------------------
* ----------- first install typings ---------------
* ----------------------------------------------- */
var typingsDone = plugins.q.defer();
var typingsCounter = 0;
var typingsCounterAdvance = function () {
typingsCounter++;
if (typeof config.typings[typingsCounter] != "undefined") {
installTypings();
}
else {
plugins.beautylog.success("custom typings installed successfully");
typingsDone.resolve();
}
};
var installTypings = function () {
plugins.beautylog.log("now installing " + "typings.json".yellow + " from " + config.typings[typingsCounter].blue);
plugins.typings.install({ production: false, cwd: plugins.path.join(paths.cwd, config.typings[typingsCounter]) })
.then(function () {
typingsCounterAdvance();
}, function () {
plugins.beautylog.error("something went wrong: Check if path is correct: " + config.typings[typingsCounter].blue);
typingsCounterAdvance();
});
};
installTypings();
/* -------------------------------------------------
* ----------- second compile TS -------------------
* ----------------------------------------------- */
typingsDone.promise.then(function () {
for (var key in config.ts) {
plugins.beautylog.log("now compiling" + key.blue);
var outputPathIsDir;
try {
if (plugins.fs.statSync(plugins.path.join(paths.cwd, config.ts[key])).isDirectory()) {
outputPathIsDir = true;
}
}
catch (err) {
outputPathIsDir = false;
}
//do some evaluation of the environment
var outputNameSpecified = (!outputPathIsDir
&& (plugins.path.extname(config.ts[key]) == ".js"));
var outputName = (function () {
if (outputNameSpecified) {
return plugins.path.basename(config.ts[key]);
}
else {
return undefined;
}
})();
var outputDir = (function () {
if (outputNameSpecified) {
return plugins.path.dirname(plugins.path.join(paths.cwd, config.ts[key]));
}
else {
return plugins.path.join(paths.cwd, config.ts[key]);
}
})();
var stream = plugins.gulp.src([plugins.path.join(paths.cwd, key), "!**/typings/**"])
.pipe(plugins.g.sourcemaps.init()) // This means sourcemaps will be generated
.pipe(plugins.g.typescript({
out: outputName,
target: "ES5",
module: "commonjs"
}))
.pipe(plugins.g.sourcemaps.write()) // Now the sourcemaps are added to the .js file
.pipe(plugins.gulp.dest(outputDir));
moduleStream.add(stream);
}
moduleStream.on("queueDrain", function () {
plugins.beautylog.success("custom TypeScript installed successfully");
moduleStream.on("finish", function () {
done.resolve(config);
});
moduleStream.end();
});
});
return done.promise;
};
})(NpmtsCompile || (NpmtsCompile = {}));
/// <reference path="./index.ts" />
var NpmtsTests;
(function (NpmtsTests) {
NpmtsTests.run = function (configArg) {
var done = plugins.q.defer();
var config = configArg;
var istanbul = function () {
var stream = plugins.gulp.src([plugins.path.join(paths.cwd, "dist/*.js")])
.pipe(plugins.g.istanbul())
.pipe(plugins.g.istanbul.hookRequire());
return stream;
};
var mocha = function () {
var stream = plugins.gulp.src(["./test/test.js"])
.pipe(plugins.g.mocha())
.pipe(plugins.g.istanbul.writeReports())
.pipe(plugins.g.istanbul.enforceThresholds({ thresholds: { global: 30 } }));
return stream;
};
var coveralls = function () {
var stream = plugins.gulp.src([plugins.path.join(paths.cwd, "./coverage/lcov.info")])
.pipe(plugins.g.coveralls());
return stream;
};
istanbul().on("finish", function () {
mocha().on("finish", function () {
if (process.env.TRAVIS && config.coveralls) {
coveralls().on("finish", function () {
done.resolve(config);
});
}
else {
done.resolve(config);
}
});
});
return done.promise;
};
})(NpmtsTests || (NpmtsTests = {}));
/// <reference path="./index.ts" />
var NpmtsPromisechain;
(function (NpmtsPromisechain) {
NpmtsPromisechain.init = function () {
var promisechain;
NpmtsConfigFile.run()
.then(NpmtsOptions.run)
.then(NpmtsCompile.run)
.then(NpmtsTests.run);
return promisechain;
};
})(NpmtsPromisechain || (NpmtsPromisechain = {}));
/// <reference path="./typings/main.d.ts" />
/// <reference path="./npmts.plugins.ts" />
/// <reference path="./npmts.cli.ts" />
/// <reference path="./npmts.paths.ts" />
/// <reference path="./npmts.configfile.ts" />
/// <reference path="./npmts.options.ts" />
/// <reference path="./npmts.compile.ts" />
/// <reference path="./npmts.tests.ts" />
/// <reference path="./npmts.promisechain.ts" />
console.log("**** starting NPMTS ****");
var plugins = NpmtsPlugins.init();
plugins.beautylog.figletSync("NPMTS");
var paths = NpmtsPaths.init();
var promisechain = NpmtsPromisechain.init();

View File

@ -1,14 +1,13 @@
{ {
"name": "npmts", "name": "npmts",
"version": "3.1.2", "version": "3.6.6",
"description": "write npm modules with TypeScript", "description": "write npm modules with TypeScript",
"main": "index.js", "main": "dist/index.js",
"typings": "./index.d.ts",
"bin": { "bin": {
"npmts": "./index.js" "npmts": "dist/cli.js"
}, },
"scripts": { "scripts": {
"test": "(cd compile && node compile.js) && (cd test/assets && node ../../index.js)", "test": "(cd compile && node compile.js) && (cd test/assets && node ../../dist/index.js)",
"release": "(git add -A && git commit -m 'update' && git push origin master && npm version patch && npm publish)" "release": "(git add -A && git commit -m 'update' && git push origin master && npm version patch && npm publish)"
}, },
"repository": { "repository": {
@ -26,23 +25,29 @@
}, },
"homepage": "https://github.com/pushrocks/npmts#readme", "homepage": "https://github.com/pushrocks/npmts#readme",
"dependencies": { "dependencies": {
"beautylog": "2.1.1", "beautylog": "3.1.2",
"fs-extra": "^0.26.5", "fs-extra": "^0.26.7",
"gulp": "3.9.1", "gulp": "3.9.1",
"gulp-concat": "^2.6.0",
"gulp-coveralls": "^0.1.4", "gulp-coveralls": "^0.1.4",
"gulp-function": "^1.1.1",
"gulp-if": "^2.0.0",
"gulp-istanbul": "^0.10.3", "gulp-istanbul": "^0.10.3",
"gulp-jsdoc3": "^0.2.1",
"gulp-mocha": "^2.2.0", "gulp-mocha": "^2.2.0",
"gulp-sourcemaps": "^1.6.0", "gulp-sourcemaps": "^1.6.0",
"gulp-typescript": "2.11.0", "gulp-typescript": "2.12.1",
"gulp-typings": "0.0.0", "gulp-typings": "1.3.0",
"merge2": "1.0.1", "merge2": "1.0.1",
"projectinfo": "1.0.1",
"q": "^1.4.1", "q": "^1.4.1",
"shelljs": "^0.6.0",
"smartci": "0.0.1",
"smartcli": "0.0.11", "smartcli": "0.0.11",
"smartfile": "0.0.11", "smartenv": "1.2.0",
"source-map-support": "^0.4.0", "smartfile": "2.2.0",
"typings": "^0.6.8" "smartpath": "3.0.1",
"source-map-support": "^0.4.0"
}, },
"devDependencies": { "devDependencies": {}
"gulp-header": "^1.7.1"
}
} }

3
test/assets/custom.js Normal file
View File

@ -0,0 +1,3 @@
var hello = "hello";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImN1c3RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMiLCJmaWxlIjoiY3VzdG9tLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGhlbGxvID0gXCJoZWxsb1wiOyJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==

View File

@ -4,10 +4,14 @@
"./customdir/*.ts":"./" "./customdir/*.ts":"./"
}, },
"typings":[ "typings":[
"./ts", "./ts/typings.json",
"./subts1/", "./subts1/typings.json",
"./subts2/", "./subts2/typings.json",
"./customdir" "./customdir/typings.json"
], ],
"coveralls":true "coveralls":true,
"docs": {
"publish":true
},
"cli":true
} }

View File

@ -1,8 +1,12 @@
{ {
"name": "test", "name": "testpackage",
"version": "2.0.0", "version": "2.0.0",
"description": "", "description": "",
"main": "index.js", "main": "index.js",
"repository": {
"type": "git",
"url": "git+https://github.com/pushrocks/npmts.git"
},
"scripts": { "scripts": {
"test": "(npmts)" "test": "(npmts)"
}, },

View File

@ -1,8 +1,8 @@
{ {
"ambientDependencies": { "ambientDependencies": {
"node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts#78d36dd49b6b55b9fdfe61776a12bf05c8b07777", "node": "github:DefinitelyTyped/DefinitelyTyped/node/node.d.ts",
"mocha": "github:Bartvds/tsd-deftools/typings/DefinitelyTyped/mocha/mocha.d.ts", "mocha": "github:Bartvds/tsd-deftools/typings/DefinitelyTyped/mocha/mocha.d.ts",
"colors": "github:DefinitelyTyped/DefinitelyTyped/colors/colors.d.ts#09e37435ffb2c56a6f908081194a74756f24f99d", "colors": "github:DefinitelyTyped/DefinitelyTyped/colors/colors.d.ts",
"vinyl": "github:DefinitelyTyped/DefinitelyTyped/vinyl/vinyl.d.ts#78d36dd49b6b55b9fdfe61776a12bf05c8b07777" "vinyl": "github:DefinitelyTyped/DefinitelyTyped/vinyl/vinyl.d.ts"
} }
} }

3
test/assets/tsfile1.js Normal file
View File

@ -0,0 +1,3 @@
var something = "something";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRzZmlsZTEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSSxTQUFTLEdBQUcsV0FBVyxDQUFDIiwiZmlsZSI6InRzZmlsZTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgc29tZXRoaW5nID0gXCJzb21ldGhpbmdcIjsiXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=

View File

@ -1,14 +1,13 @@
/// <reference path="./typings/main.d.ts" /> /// <reference path="./typings/main.d.ts" />
/// <reference path="./npmts.plugins.ts" />
/// <reference path="./npmts.cli.ts" />
/// <reference path="./npmts.paths.ts" />
/// <reference path="./npmts.configfile.ts" />
/// <reference path="./npmts.options.ts" />
/// <reference path="./npmts.compile.ts" />
/// <reference path="./npmts.tests.ts" />
/// <reference path="./npmts.promisechain.ts" />
console.log("**** starting NPMTS ****"); console.log("**** starting NPMTS ****");
var plugins = NpmtsPlugins.init(); import plugins = require("./npmts.plugins");
import promisechain = require("./npmts.promisechain");
plugins.beautylog.figletSync("NPMTS"); plugins.beautylog.figletSync("NPMTS");
var paths = NpmtsPaths.init();
var promisechain = NpmtsPromisechain.init(); try {
promisechain.run();
}
catch(err){
console.log(err);
}

17
ts/npmts.assets.ts Normal file
View File

@ -0,0 +1,17 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
export var run = function(configArg){
let done = plugins.Q.defer();
let config = configArg;
plugins.beautylog.log("now looking at required assets");
if(config.cli == true){
plugins.smartfile.fsaction.copy(plugins.path.join(paths.npmtsAssetsDir,"cli.js"),paths.distDir);
plugins.beautylog.ok("CLI asset has been installed!");
done.resolve(config);
} else {
done.resolve(config);
}
return done.promise;
};

13
ts/npmts.clean.ts Normal file
View File

@ -0,0 +1,13 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
export let run = function(configArg){
plugins.beautylog.log("now cleaning up from previous builds");
let done = plugins.Q.defer();
plugins.smartfile.fsaction.remove(paths.distDir)
.then(function(){
done.resolve(configArg);
});
return done.promise;
};

View File

@ -1 +1 @@
/// <reference path="./index.ts" /> /// <reference path="./typings/main.d.ts" />

View File

@ -1,92 +1,69 @@
/// <reference path="./index.ts" /> /// <reference path="./typings/main.d.ts" />
module NpmtsCompile { import plugins = require("./npmts.plugins");
export var run = function(configArg){ import paths = require("./npmts.paths");
var done = plugins.q.defer(); export var run = function(configArg){
var config = configArg; var done = plugins.Q.defer();
plugins.beautylog.log("now running custom tasks"); var config = configArg;
var moduleStream = plugins.mergeStream({end: false}); plugins.beautylog.log("now compiling " + "TypeScript".yellow);
/* ------------------------------------------------- var moduleStream = plugins.merge2({end: false});
* ----------- first install typings ---------------
* ----------------------------------------------- */
var typingsDone = plugins.q.defer();
var typingsCounter:number = 0;
var typingsCounterAdvance = function(){
typingsCounter++;
if(typeof config.typings[typingsCounter] != "undefined"){
installTypings();
} else {
plugins.beautylog.success("custom typings installed successfully");
typingsDone.resolve();
}
};
var installTypings = function() {
plugins.beautylog.log("now installing " + "typings.json".yellow + " from " + config.typings[typingsCounter].blue);
plugins.typings.install({production: false, cwd: plugins.path.join(paths.cwd,config.typings[typingsCounter])})
.then(function(){
typingsCounterAdvance();
},function(){
plugins.beautylog.error("something went wrong: Check if path is correct: " + config.typings[typingsCounter].blue);
typingsCounterAdvance();
});
};
installTypings();
/* -------------------------------------------------
* ----------- second compile TS -------------------
* ----------------------------------------------- */
typingsDone.promise.then(function(){
for (var key in config.ts) {
plugins.beautylog.log("now compiling" + key.blue);
var outputPathIsDir:boolean;
try {
if(plugins.fs.statSync(plugins.path.join(paths.cwd,config.ts[key])).isDirectory()){
outputPathIsDir = true;
}
}
catch(err) {
outputPathIsDir = false;
}
//do some evaluation of the environment
var outputNameSpecified:boolean = (
!outputPathIsDir
&& (plugins.path.extname(config.ts[key]) == ".js")
);
var outputName = (function(){
if(outputNameSpecified){
return plugins.path.basename(config.ts[key])
} else {
return undefined
}
})();
var outputDir = (function(){
if(outputNameSpecified){
return plugins.path.dirname(
plugins.path.join(paths.cwd,config.ts[key])
)
} else {
return plugins.path.join(paths.cwd,config.ts[key])
}
})();
var stream = plugins.gulp.src([plugins.path.join(paths.cwd,key),"!**/typings/**"]) /* -------------------------------------------------
.pipe(plugins.g.sourcemaps.init()) // This means sourcemaps will be generated * ----------- compile TypeScript --------------------------
.pipe(plugins.g.typescript({ * ----------------------------------------------- */
out: outputName, for (var key in config.ts) {
target: "ES5", var outputPathIsDir:boolean;
module: "commonjs" try {
})) if(plugins.fs.statSync(plugins.path.join(paths.cwd,config.ts[key])).isDirectory()){
.pipe(plugins.g.sourcemaps.write()) // Now the sourcemaps are added to the .js file outputPathIsDir = true;
//.pipe(plugins.g.header('#!/usr/bin/env node\n\n'))
.pipe(plugins.gulp.dest(outputDir));
moduleStream.add(stream);
} }
moduleStream.on("queueDrain",function(){ }
plugins.beautylog.success("custom TypeScript installed successfully"); catch(err) {
moduleStream.on("finish",function(){ outputPathIsDir = false;
done.resolve(config); }
}); //do some evaluation of the environment
moduleStream.end(); var outputNameSpecified:boolean = (
}); !outputPathIsDir
}); && (plugins.path.extname(config.ts[key]) == ".js")
return done.promise; );
var outputName = (function(){
if(outputNameSpecified){
return plugins.path.basename(config.ts[key])
} else {
return undefined
}
})();
var outputDir = (function(){
if(outputNameSpecified){
return plugins.path.dirname(
plugins.path.join(paths.cwd,config.ts[key])
)
} else {
return plugins.path.join(paths.cwd,config.ts[key])
}
})();
var stream = plugins.gulp.src([plugins.path.join(paths.cwd,key),"!**/typings/**"])
.pipe(plugins.g.sourcemaps.init()) // This means sourcemaps will be generated
.pipe(plugins.g.typescript({
out: outputName,
target: "ES5",
module: "commonjs"
}))
.pipe(plugins.g.sourcemaps.write()) // Now the sourcemaps are added to the .js file
//.pipe(plugins.g.header('#!/usr/bin/env node\n\n'))
.pipe(plugins.gulp.dest(outputDir));
moduleStream.add(stream);
} }
} moduleStream.on("queueDrain",function(){
plugins.beautylog.ok("TypeScript has been compiled!");
moduleStream.on("finish",function(){
done.resolve(config);
});
moduleStream.end();
});
/*==================== END TYPESCRIPT =====================*/
return done.promise;
};

View File

@ -1,26 +1,27 @@
/// <reference path="./index.ts" /> /// <reference path="./typings/main.d.ts" />
module NpmtsConfigFile { import plugins = require("./npmts.plugins");
export var run = function(){ import paths = require("./npmts.paths");
var done = plugins.q.defer(); export var run = function(){
var config:any = {}; var done = plugins.Q.defer();
var configPath = plugins.path.join(paths.cwd,"npmts.json"); var config:any = {};
if(plugins.smartfile.checks.fileExistsSync(configPath)){ var configPath = plugins.path.join(paths.cwd,"npmts.json");
plugins.beautylog.info("npmts.json".blue + " config file found!"); if(plugins.smartfile.checks.fileExistsSync(configPath)){
config = plugins.smartfile.readFileToObject(configPath); plugins.beautylog.info("npmts.json".blue + " config file found!");
switch (config.mode){ config = plugins.smartfile.local.toObjectSync(configPath);
case "default": switch (config.mode){
case "custom": case "default":
plugins.beautylog.log("mode is " + config.mode.yellow); case "custom":
done.resolve(config); plugins.beautylog.log("mode is " + config.mode.yellow);
break; done.resolve(config);
default: break;
plugins.beautylog.error("mode " + config.mode.yellow + " not recognised!".red); default:
}; plugins.beautylog.error("mode " + config.mode.yellow + " not recognised!".red);
} else { process.exit(1);
plugins.beautylog.log("no config file found: so mode is " + "default".yellow);
config.mode = "default";
done.resolve(config);
}; };
return done.promise; } else {
} plugins.beautylog.log("no config file found: so mode is " + "default".yellow);
} config.mode = "default";
done.resolve(config);
};
return done.promise;
};

19
ts/npmts.install.ts Normal file
View File

@ -0,0 +1,19 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
export var run = function(configArg){
var config = configArg;
var done = plugins.Q.defer();
/* -------------------------------------------------
* ----------- install typings ---------------
* ----------------------------------------------- */
plugins.beautylog.log("now installing " + "typings".yellow);
var absoluteTypingsArray = plugins.smartpath.transform.toAbsolute(config.typings,paths.cwd);
plugins.gulp.src(absoluteTypingsArray)
.pipe(plugins.g.typings())
.pipe(plugins.g.gFunction(function(){
plugins.beautylog.ok("typings have been installed!");
done.resolve(config);
},"atEnd"));
return done.promise;
};

64
ts/npmts.jsdoc.ts Normal file
View File

@ -0,0 +1,64 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
let genJsdoc = function(configArg){
let done = plugins.Q.defer();
plugins.beautylog.log("now generating " + "JsDoc documentation".blue);
plugins.gulp.src([
plugins.path.join(paths.cwd,"README.md"),
plugins.path.join(paths.distDir,"**/*.js")
])
.pipe(plugins.g.jsdoc3({
opts: {
destination: paths.docsDir
}
}, function(){
plugins.beautylog.ok("JsDoc documentation has been generated!");
done.resolve(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();
genJsdoc(configArg)
.then(done.resolve);
return done.promise;
};

View File

@ -1,24 +1,50 @@
/// <reference path="./index.ts" /> /// <reference path="./typings/main.d.ts" />
module NpmtsOptions { import plugins = require("./npmts.plugins");
export var run = function(configArg){
var done = plugins.q.defer(); export let isRelease = function():boolean {
var config = configArg; return plugins.smartci.check.isCi()
if (typeof config.coveralls === "undefined"){ && plugins.smartci.check.isTaggedCommit();
config.coveralls = false; };
}
if (config.mode == "default"){ export let doPublish = function():boolean {
config.typings = [ return isRelease()
"./ts/" && plugins.smartci.get.subJobNumber() == 1;
]; };
config.ts = {
["./ts/**/*.ts"]: "./dist/", export var run = function(configArg){
["./test/test.ts"]: "./test/" var done = plugins.Q.defer();
}; var config = configArg;
config.test = ["./index.js"];
done.resolve(config); plugins.beautylog.log("now determining build options");
} else {
done.resolve(config); //handle default mode
} if (config.mode == "default"){
return done.promise; config.typings = [
"./ts/typings.json"
];
config.ts = {
["./ts/**/*.ts"]: "./dist/",
["./test/test.ts"]: "./test/"
};
config.test = ["./index.js"];
} }
}
// 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 and docs when tests succeed!")
: plugins.beautylog.info("We are not publishing anything!");
// handle coveralls
config.coveralls ? void(0) : config.coveralls = false;
doPublish() ? void(0) : config.coveralls = false;
// handle docs
config.docs ? void(0) : config.docs = {};
config.docs.publish ? void(0) : config.docs.publish = false;
doPublish() ? void(0) : config.docs.publish = false;
done.resolve(config);
return done.promise;
};

View File

@ -1,12 +1,18 @@
/// <reference path="./index.ts" /> /// <reference path="./typings/main.d.ts" />
module NpmtsPaths { import plugins = require("./npmts.plugins");
export var init = function() { var paths:any = {};
var paths:any = {}; paths.cwd = plugins.smartcli.get.cwd().path;
paths.cwd = plugins.smartcli.get.cwd().path;
paths.tsDir = plugins.path.join(paths.cwd,"ts/"); //Directories
paths.indexTS = plugins.path.join(paths.cwd,"ts/index.ts"); paths.tsDir = plugins.path.join(paths.cwd,"ts/");
paths.testTS = plugins.path.join(paths.cwd,"ts/test.ts"); paths.distDir = plugins.path.join(paths.cwd,"dist/");
paths.testDir = plugins.path.join(paths.cwd,"test/"); paths.docsDir = plugins.path.join(paths.cwd,"docs/");
return paths; paths.testDir = plugins.path.join(paths.cwd,"test/");
}
} paths.npmtsAssetsDir = plugins.path.join(__dirname,"../assets/");
//Files
paths.indexTS = plugins.path.join(paths.cwd,"ts/index.ts");
paths.testTS = plugins.path.join(paths.cwd,"ts/test.ts");
export = paths;

View File

@ -1,26 +1,26 @@
/// <reference path="./index.ts" /> /// <reference path="./typings/main.d.ts" />
module NpmtsPlugins { export let beautylog = require("beautylog");
export var init = function() { export let fs = require("fs-extra");
var plugins = { export let gulp = require("gulp");
beautylog: require("beautylog"), export let g = {
fs: require("fs-extra"), coveralls: require("gulp-coveralls"),
gulp: require("gulp"), gFunction: require("gulp-function"),
g: { istanbul: require("gulp-istanbul"),
coveralls: require("gulp-coveralls"), jsdoc3: require("gulp-jsdoc3"),
istanbul: require("gulp-istanbul"), mocha: require("gulp-mocha"),
mocha: require("gulp-mocha"), sourcemaps: require("gulp-sourcemaps"),
sourcemaps: require("gulp-sourcemaps"), typescript: require("gulp-typescript"),
typescript: require("gulp-typescript") typings: require("gulp-typings")
}, };
mergeStream: require("merge2"), export let merge2 = require("merge2");
sourceMapSupport:require("source-map-support").install(), export let projectinfo = require("projectinfo");
path: require("path"), export let sourceMapSupport = require("source-map-support").install();
q:require("q"), export let path = require("path");
smartcli: require("smartcli"), export let Q = require("q");
smartfile: require("smartfile"), export let shelljs = require("shelljs");
typings: require("typings") export let smartci = require("smartci");
}; export let smartcli = require("smartcli");
return plugins; export let smartenv = require("smartenv");
} export let smartfile = require("smartfile");
} export let smartpath = require("smartpath");

View File

@ -1,11 +1,49 @@
/// <reference path="./index.ts" /> /// <reference path="./typings/main.d.ts" />
module NpmtsPromisechain { import plugins = require("./npmts.plugins");
export var init = function(){
var promisechain; import NpmtsAssets = require("./npmts.assets");
NpmtsConfigFile.run() import NpmtsClean = require("./npmts.clean");
.then(NpmtsOptions.run) import NpmtsCompile = require("./npmts.compile");
.then(NpmtsCompile.run) import NpmtsConfigFile = require("./npmts.configfile");
.then(NpmtsTests.run); import NpmtsInstall = require("./npmts.install");
return promisechain; import NpmtsJsdoc = require("./npmts.jsdoc");
} import NpmtsOptions = require("./npmts.options");
} import NpmtsPublish = require("./npmts.publish");
import NpmtsTests = require("./npmts.tests");
export var run = function(){
var promisechain;
NpmtsConfigFile.run()
.then(NpmtsOptions.run)
.then(NpmtsClean.run)
.then(NpmtsInstall.run)
.then(NpmtsCompile.run)
.then(NpmtsAssets.run)
.then(NpmtsJsdoc.run)
.then(NpmtsTests.run)
.then(NpmtsPublish.run)
.then(function(configArg){
let shipString = "" +
"\n" +
"\n" +
" # # ( )\n" +
" ___#_#___|__\n" +
" _ |____________| _\n" +
" _=====| | | | | |==== _\n" +
" =====| |.---------------------------. | |====\n" +
" <--------------------' . . . . . . . . '--------------/\n" +
" \\ /\n" +
" \\___________________________________________________________/\n" +
" wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n" +
" wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n" +
" wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww\n"
if (process.env.CI){
console.log(shipString);
plugins.beautylog.success("READY TO SHIP!");
} else {
plugins.beautylog.success("Done!")
}
});
return promisechain;
};

19
ts/npmts.publish.ts Normal file
View File

@ -0,0 +1,19 @@
/// <reference path="./typings/main.d.ts" />
import plugins = require("./npmts.plugins");
import paths = require("./npmts.paths");
import NpmtsTests = require("./npmts.tests");
import NpmtsJsdoc = require("./npmts.jsdoc");
export let run = function(configArg){
let done = plugins.Q.defer();
let config = configArg;
let promiseArray = [];
config.coveralls ? promiseArray.push(NpmtsTests.publishCoverage(configArg)) : void(0);
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;
};

View File

@ -1,44 +1,47 @@
/// <reference path="./index.ts" /> /// <reference path="./typings/main.d.ts" />
module NpmtsTests { import plugins = require("./npmts.plugins");
export var run = function(configArg) { import paths = require("./npmts.paths");
var done = plugins.q.defer();
var config = configArg;
var istanbul = function () {
var stream = plugins.gulp.src([plugins.path.join(paths.cwd,"dist/*.js")])
// Covering files
.pipe(plugins.g.istanbul())
// Force `require` to return covered files
.pipe(plugins.g.istanbul.hookRequire());
return stream;
};
var mocha = function () { export let publishCoverage = function(configArg){
var stream = plugins.gulp.src(["./test/test.js"]) let done = plugins.Q.defer();
.pipe(plugins.g.mocha()) plugins.beautylog.log("now uploading coverage data to coveralls");
// Creating the reports after tests ran var stream = plugins.gulp.src([plugins.path.join(paths.cwd,"./coverage/lcov.info")])
.pipe(plugins.g.istanbul.writeReports()) .pipe(plugins.g.coveralls())
// Enforce a coverage of at least 90% .pipe(plugins.g.gFunction(function(){
.pipe(plugins.g.istanbul.enforceThresholds({ thresholds: { global: 30 } })); plugins.beautylog.ok("Coverage data has been uploaded to Coveralls!");
return stream; done.resolve(configArg);
}; },"atEnd"));
return done.promise;
};
var coveralls = function(){ export var run = function(configArg) {
var stream = plugins.gulp.src([plugins.path.join(paths.cwd,"./coverage/lcov.info")]) var done = plugins.Q.defer();
.pipe(plugins.g.coveralls()); var config = configArg;
return stream; var istanbul = function () {
}; var stream = plugins.gulp.src([plugins.path.join(paths.cwd,"dist/*.js")])
// Covering files
.pipe(plugins.g.istanbul())
// Force `require` to return covered files
.pipe(plugins.g.istanbul.hookRequire());
return stream;
};
istanbul().on("finish",function(){ var mocha = function () {
mocha().on("finish",function(){ var stream = plugins.gulp.src(["./test/test.js"])
if(process.env.TRAVIS && config.coveralls){ .pipe(plugins.g.mocha())
coveralls().on("finish",function(){ // Creating the reports after tests ran
done.resolve(config); .pipe(plugins.g.istanbul.writeReports())
}) // Enforce a coverage of at least 90%
} else { .pipe(plugins.g.istanbul.enforceThresholds({ thresholds: { global: 30 } }));
done.resolve(config); return stream;
} };
})
}); plugins.beautylog.log("now starting tests");
return done.promise; istanbul().on("finish",function(){
} mocha().on("finish",function(){
} plugins.beautylog.ok("Tests have passed!");
done.resolve(config);
})
});
return done.promise;
};

View File

@ -1,3 +0,0 @@
/// <reference path="browser/ambient/colors/colors.d.ts" />
/// <reference path="browser/ambient/node/node.d.ts" />
/// <reference path="browser/ambient/vinyl/vinyl.d.ts" />

View File

@ -1,125 +0,0 @@
// Compiled using typings@0.6.3
// Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/09e37435ffb2c56a6f908081194a74756f24f99d/colors/colors.d.ts
// Type definitions for Colors.js 0.6.0-1
// Project: https://github.com/Marak/colors.js
// Definitions by: Bart van der Schoor <https://github.com/Bartvds>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module "colors" {
interface Color {
(text: string): string;
black: Color;
red: Color;
green: Color;
yellow: Color;
blue: Color;
magenta: Color;
cyan: Color;
white: Color;
gray: Color;
grey: Color;
bgBlack: Color;
bgRed: Color;
bgGreen: Color;
bgYellow: Color;
bgBlue: Color;
bgMagenta: Color;
bgCyan: Color;
bgWhite: Color;
reset: Color;
bold: Color;
dim: Color;
italic: Color;
underline: Color;
inverse: Color;
hidden: Color;
strikethrough: Color;
rainbow: Color;
zebra: Color;
america: Color;
trap: Color;
random: Color;
}
module e {
export function setTheme(theme:any): void;
export var black: Color;
export var red: Color;
export var green: Color;
export var yellow: Color;
export var blue: Color;
export var magenta: Color;
export var cyan: Color;
export var white: Color;
export var gray: Color;
export var grey: Color;
export var bgBlack: Color;
export var bgRed: Color;
export var bgGreen: Color;
export var bgYellow: Color;
export var bgBlue: Color;
export var bgMagenta: Color;
export var bgCyan: Color;
export var bgWhite: Color;
export var reset: Color;
export var bold: Color;
export var dim: Color;
export var italic: Color;
export var underline: Color;
export var inverse: Color;
export var hidden: Color;
export var strikethrough: Color;
export var rainbow: Color;
export var zebra: Color;
export var america: Color;
export var trap: Color;
export var random: Color;
}
export = e;
}
interface String {
black: string;
red: string;
green: string;
yellow: string;
blue: string;
magenta: string;
cyan: string;
white: string;
gray: string;
grey: string;
bgBlack: string;
bgRed: string;
bgGreen: string;
bgYellow: string;
bgBlue: string;
bgMagenta: string;
bgCyan: string;
bgWhite: string;
reset: string;
bold: string;
dim: string;
italic: string;
underline: string;
inverse: string;
hidden: string;
strikethrough: string;
rainbow: string;
zebra: string;
america: string;
trap: string;
random: string;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,110 +0,0 @@
// Compiled using typings@0.6.3
// Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/78d36dd49b6b55b9fdfe61776a12bf05c8b07777/vinyl/vinyl.d.ts
// Type definitions for vinyl 0.4.3
// Project: https://github.com/wearefractal/vinyl
// Definitions by: vvakame <https://github.com/vvakame/>, jedmao <https://github.com/jedmao>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module 'vinyl' {
import fs = require('fs');
/**
* A virtual file format.
*/
class File {
constructor(options?: {
/**
* Default: process.cwd()
*/
cwd?: string;
/**
* Used for relative pathing. Typically where a glob starts.
*/
base?: string;
/**
* Full path to the file.
*/
path?: string;
/**
* Path history. Has no effect if options.path is passed.
*/
history?: string[];
/**
* The result of an fs.stat call. See fs.Stats for more information.
*/
stat?: fs.Stats;
/**
* File contents.
* Type: Buffer, Stream, or null
*/
contents?: Buffer | NodeJS.ReadWriteStream;
});
/**
* Default: process.cwd()
*/
public cwd: string;
/**
* Used for relative pathing. Typically where a glob starts.
*/
public base: string;
/**
* Full path to the file.
*/
public path: string;
public stat: fs.Stats;
/**
* Type: Buffer|Stream|null (Default: null)
*/
public contents: Buffer | NodeJS.ReadableStream;
/**
* Returns path.relative for the file base and file path.
* Example:
* var file = new File({
* cwd: "/",
* base: "/test/",
* path: "/test/file.js"
* });
* console.log(file.relative); // file.js
*/
public relative: string;
public isBuffer(): boolean;
public isStream(): boolean;
public isNull(): boolean;
public isDirectory(): boolean;
/**
* Returns a new File object with all attributes cloned. Custom attributes are deep-cloned.
*/
public clone(opts?: { contents?: boolean }): File;
/**
* If file.contents is a Buffer, it will write it to the stream.
* If file.contents is a Stream, it will pipe it to the stream.
* If file.contents is null, it will do nothing.
*/
public pipe<T extends NodeJS.ReadWriteStream>(
stream: T,
opts?: {
/**
* If false, the destination stream will not be ended (same as node core).
*/
end?: boolean;
}
): T;
/**
* Returns a pretty String interpretation of the File. Useful for console.log.
*/
public inspect(): string;
}
export = File;
}

View File

@ -1,3 +0,0 @@
/// <reference path="main/ambient/colors/colors.d.ts" />
/// <reference path="main/ambient/node/node.d.ts" />
/// <reference path="main/ambient/vinyl/vinyl.d.ts" />

View File

@ -1,125 +0,0 @@
// Compiled using typings@0.6.3
// Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/09e37435ffb2c56a6f908081194a74756f24f99d/colors/colors.d.ts
// Type definitions for Colors.js 0.6.0-1
// Project: https://github.com/Marak/colors.js
// Definitions by: Bart van der Schoor <https://github.com/Bartvds>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module "colors" {
interface Color {
(text: string): string;
black: Color;
red: Color;
green: Color;
yellow: Color;
blue: Color;
magenta: Color;
cyan: Color;
white: Color;
gray: Color;
grey: Color;
bgBlack: Color;
bgRed: Color;
bgGreen: Color;
bgYellow: Color;
bgBlue: Color;
bgMagenta: Color;
bgCyan: Color;
bgWhite: Color;
reset: Color;
bold: Color;
dim: Color;
italic: Color;
underline: Color;
inverse: Color;
hidden: Color;
strikethrough: Color;
rainbow: Color;
zebra: Color;
america: Color;
trap: Color;
random: Color;
}
module e {
export function setTheme(theme:any): void;
export var black: Color;
export var red: Color;
export var green: Color;
export var yellow: Color;
export var blue: Color;
export var magenta: Color;
export var cyan: Color;
export var white: Color;
export var gray: Color;
export var grey: Color;
export var bgBlack: Color;
export var bgRed: Color;
export var bgGreen: Color;
export var bgYellow: Color;
export var bgBlue: Color;
export var bgMagenta: Color;
export var bgCyan: Color;
export var bgWhite: Color;
export var reset: Color;
export var bold: Color;
export var dim: Color;
export var italic: Color;
export var underline: Color;
export var inverse: Color;
export var hidden: Color;
export var strikethrough: Color;
export var rainbow: Color;
export var zebra: Color;
export var america: Color;
export var trap: Color;
export var random: Color;
}
export = e;
}
interface String {
black: string;
red: string;
green: string;
yellow: string;
blue: string;
magenta: string;
cyan: string;
white: string;
gray: string;
grey: string;
bgBlack: string;
bgRed: string;
bgGreen: string;
bgYellow: string;
bgBlue: string;
bgMagenta: string;
bgCyan: string;
bgWhite: string;
reset: string;
bold: string;
dim: string;
italic: string;
underline: string;
inverse: string;
hidden: string;
strikethrough: string;
rainbow: string;
zebra: string;
america: string;
trap: string;
random: string;
}

File diff suppressed because it is too large Load Diff

View File

@ -1,110 +0,0 @@
// Compiled using typings@0.6.3
// Source: https://raw.githubusercontent.com/DefinitelyTyped/DefinitelyTyped/78d36dd49b6b55b9fdfe61776a12bf05c8b07777/vinyl/vinyl.d.ts
// Type definitions for vinyl 0.4.3
// Project: https://github.com/wearefractal/vinyl
// Definitions by: vvakame <https://github.com/vvakame/>, jedmao <https://github.com/jedmao>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare module 'vinyl' {
import fs = require('fs');
/**
* A virtual file format.
*/
class File {
constructor(options?: {
/**
* Default: process.cwd()
*/
cwd?: string;
/**
* Used for relative pathing. Typically where a glob starts.
*/
base?: string;
/**
* Full path to the file.
*/
path?: string;
/**
* Path history. Has no effect if options.path is passed.
*/
history?: string[];
/**
* The result of an fs.stat call. See fs.Stats for more information.
*/
stat?: fs.Stats;
/**
* File contents.
* Type: Buffer, Stream, or null
*/
contents?: Buffer | NodeJS.ReadWriteStream;
});
/**
* Default: process.cwd()
*/
public cwd: string;
/**
* Used for relative pathing. Typically where a glob starts.
*/
public base: string;
/**
* Full path to the file.
*/
public path: string;
public stat: fs.Stats;
/**
* Type: Buffer|Stream|null (Default: null)
*/
public contents: Buffer | NodeJS.ReadableStream;
/**
* Returns path.relative for the file base and file path.
* Example:
* var file = new File({
* cwd: "/",
* base: "/test/",
* path: "/test/file.js"
* });
* console.log(file.relative); // file.js
*/
public relative: string;
public isBuffer(): boolean;
public isStream(): boolean;
public isNull(): boolean;
public isDirectory(): boolean;
/**
* Returns a new File object with all attributes cloned. Custom attributes are deep-cloned.
*/
public clone(opts?: { contents?: boolean }): File;
/**
* If file.contents is a Buffer, it will write it to the stream.
* If file.contents is a Stream, it will pipe it to the stream.
* If file.contents is null, it will do nothing.
*/
public pipe<T extends NodeJS.ReadWriteStream>(
stream: T,
opts?: {
/**
* If false, the destination stream will not be ended (same as node core).
*/
end?: boolean;
}
): T;
/**
* Returns a pretty String interpretation of the File. Useful for console.log.
*/
public inspect(): string;
}
export = File;
}