blob-util/bin/dev-server.js
2015-04-25 17:24:31 -04:00

75 lines
1.5 KiB
JavaScript
Executable File

#!/usr/bin/env node
'use strict';
var HTTP_PORT = 8001;
var Promise = require('bluebird');
var http_server = require("http-server");
var fs = require('fs');
var indexfile = "./test/test.js";
var dotfile = "./test/.test-bundle.js";
var outfile = "./test/test-bundle.js";
var watchify = require("watchify");
var browserify = require('browserify');
var w = watchify(browserify(indexfile, {
cache: {},
packageCache: {},
fullPaths: true,
debug: true
}));
w.on('update', bundle);
bundle();
var filesWritten = false;
var serverStarted = false;
var readyCallback;
function bundle() {
var wb = w.bundle();
wb.on('error', function (err) {
console.error(String(err));
});
wb.on("end", end);
wb.pipe(fs.createWriteStream(dotfile));
function end() {
fs.rename(dotfile, outfile, function (err) {
if (err) { return console.error(err); }
console.log('Updated:', outfile);
filesWritten = true;
checkReady();
});
}
}
function startServers(callback) {
readyCallback = callback;
Promise.resolve().then(function () {
return http_server.createServer().listen(HTTP_PORT);
}).then(function () {
console.log('Tests: http://127.0.0.1:' + HTTP_PORT + '/test/index.html');
serverStarted = true;
checkReady();
}).catch(function (err) {
if (err) {
console.log(err);
process.exit(1);
}
});
}
function checkReady() {
if (filesWritten && serverStarted && readyCallback) {
readyCallback();
}
}
if (require.main === module) {
startServers();
} else {
module.exports.start = startServers;
}