ember-introjs
Version:
An Ember Component for intro.js
70 lines (63 loc) • 2.73 kB
JavaScript
//require dependencies
var jxLoader = require('jxLoader').jxLoader,
Promise = require('promised-io').Promise,
fs = require('fs'),
util = require("util");
//the loader instance itself
var loader = null,
_logger;
module.exports.tasks = {
combine: function(options, config, logger){
var p = new Promise();
_logger = logger;
if (loader === null) {
config.loader.base.logger = _logger;
loader = new jxLoader(config.loader.base);
loader.addEvent('loadRepoDone', function(){
runCombine(options, p);
});
loader.addRepository(config.loader.repos);
} else {
runCombine(options, p);
}
return p;
},
createDeps: function(options, config, logger){
var p = new Promise();
_logger = logger;
if (loader === null) {
_logger.info("no loader object found... creating.");
config.loader.base.logger = _logger;
loader = new jxLoader(config.loader.base);
loader.addEvent('loadRepoDone', function(){
fs.writeFileSync(options.target + '/deps.json',JSON.stringify(loader.getRepoArray()),'utf8');
p.resolve(true);
});
loader.addRepository(config.loader.repos);
} else {
//console.warn("object from getRepoArray(): " + util.inspect(loader.getRepoArray(),false, null));
fs.writeFileSync(options.target + '/deps.json',JSON.stringify(loader.getRepoArray()),'utf8');
p.resolve(true);
}
return p;
}
};
var runCombine = function(options, promise) {
//_logger.info("options passed into runCombine: " + util.inspect(options,false,null));
Array.from(options).each(function(opts){
var classes = !nil(opts.classes) ? opts.classes : null;
var repos = !nil(opts.repos) ? opts.repos : null;
var type = !nil(opts.type) ? opts.type : 'js';
var includeDeps = !nil(opts.includeDeps) ? opts.includeDeps : true;
var theme = !nil(opts.theme) ? opts.theme : null;
var exclude = !nil(opts.exclude) ? opts.exclude : null;
var opt = !nil(opts.opts) ? opts.opts : true;
loader.options.tags = opts.tags;
_logger.debug('tags passed in:' + util.inspect(loader.options.tags,false,null));
var compiled = loader.compile(classes, repos, type, includeDeps, theme, exclude, opt);
//_logger.info("returned from compile: " + util.inspect(compiled, false, null));
_logger.warn("writing to target: " + opts.target);
fs.writeFileSync(opts.target, compiled.source, 'utf8');
});
promise.resolve(true);
};