glass-build
Version:
Contains scripts for building glass based projects.
186 lines (168 loc) • 5.04 kB
JavaScript
// Generated by CoffeeScript 1.6.3
(function() {
var ae, browserBuild, build, buildCommon, check, cp, exports, fs, getPackageJson, np, runTest, utility, watchCoffee, watchTest, watcher, _ref;
require('sugar');
if (global.window != null) {
return;
}
fs = require('fs');
np = require('path');
cp = require('./coffeepages');
ae = require('./appengine');
_ref = browserBuild = require('browser-build'), watcher = _ref.watcher, utility = _ref.utility;
check = function(config) {
var _base, _base1, _base2, _ref1;
if (config.node == null) {
throw new Error("config.node is required");
}
if (config.source == null) {
throw new Error("config.source is required");
}
if (Object.isString(config.node)) {
config.node = {
directory: config.node
};
}
if (Object.isString(config.source)) {
config.source = {
directory: config.source
};
}
if (config.browser != null) {
if ((_base = config.browser.output).directory == null) {
_base.directory = "www/js";
}
if ((_base1 = config.browser.output).webroot == null) {
_base1.webroot = "www";
}
if ((_base2 = config.browser.output).test == null) {
_base2.test = "glass-test";
}
}
if ((_ref1 = config.appengine) != null ? _ref1.pages : void 0) {
config.pages = {
input: {
directory: 'war'
},
output: {
directory: 'war/WEB-INF/pages'
}
};
}
};
build = function(config, callback) {
return utility.buildCoffee(config.source.directory, config.node.directory, callback);
};
watchCoffee = function(config) {
utility.watchCoffee(config.source.directory, config.node.directory);
if (config.browser != null) {
return browserBuild.watch(config.browser);
}
};
runTest = function(config, callback) {
var list, testModule;
list = utility.list(config.node.directory, {
include: ".js"
});
if (config.browser.output.test == null) {
return;
}
testModule = np.join(config.browser.output.directory, 'test/test.js');
return utility.spawn("node.cmd " + testModule + " " + (list.join(' ')), callback);
};
watchTest = function(config) {
var debouncedRunTest, options;
debouncedRunTest = (function() {
return runTest(config);
}).debounce(500);
options = {
filter: ".js",
initial: false
};
return watcher.watchDirectory(config.node.directory, options, debouncedRunTest);
};
getPackageJson = function(config) {
var path;
path = 'package.json';
return JSON.parse(fs.readFileSync(path, 'utf8'));
};
buildCommon = function(config) {
var file, _i, _len, _ref1, _results;
check(config);
_ref1 = ["README.md", "package.json"];
_results = [];
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
file = _ref1[_i];
if (fs.existsSync(file)) {
_results.push(utility.copy(file, "" + config.node.directory + "/" + file));
} else {
_results.push(void 0);
}
}
return _results;
};
module.exports = exports = {
utility: utility,
watcher: watcher,
build: function(config, callback) {
buildCommon(config);
return build(config, function() {
if (config.browser != null) {
browserBuild.build(config.browser);
}
cp.buildCoffeePages(config.pages);
if (config.appengine != null) {
ae.build();
}
return runTest(config, callback);
});
},
watch: function(config) {
var _ref1;
buildCommon(config);
watchCoffee(config);
watchTest(config);
cp.watchCoffeePages(config.pages);
if (config.appengine != null) {
ae.run();
if (config.appengine.java != null) {
return watcher.watchDirectory(config.appengine.java, {
initial: false
}, function(file) {
return ae.restart();
});
}
} else if (((_ref1 = config.browser) != null ? _ref1.port : void 0) != null) {
return utility.startWebServer({
root: config.browser.output.webroot,
port: config.browser.port
});
}
},
kill: function(config, callback) {
if (config.appengine != null) {
return ae.kill();
}
},
test: function(config, callback) {
check(config);
return runTest(config, callback);
},
publish: function(config, callback) {
return exports.build(config, function() {
return utility.spawn("npm.cmd publish " + config.node.directory, callback);
});
},
bump: function(config, callback) {
var pj, version;
pj = getPackageJson(config);
version = pj.version.split('.');
version[2] = parseInt(version[2]) + 1;
version = version.join('.');
return utility.spawn("npm.cmd version " + version, callback);
}
};
}).call(this);
/*
//@ sourceMappingURL=index.map
*/