loader.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //require dependencies
  2. var jxLoader = require('jxLoader').jxLoader,
  3. Promise = require('promised-io').Promise,
  4. fs = require('fs'),
  5. util = require("util");
  6. //the loader instance itself
  7. var loader = null,
  8. _logger;
  9. module.exports.tasks = {
  10. combine: function(options, config, logger){
  11. var p = new Promise();
  12. _logger = logger;
  13. if (loader === null) {
  14. config.loader.base.logger = _logger;
  15. loader = new jxLoader(config.loader.base);
  16. loader.addEvent('loadRepoDone', function(){
  17. runCombine(options, p);
  18. });
  19. loader.addRepository(config.loader.repos);
  20. } else {
  21. runCombine(options, p);
  22. }
  23. return p;
  24. },
  25. createDeps: function(options, config, logger){
  26. var p = new Promise();
  27. _logger = logger;
  28. if (loader === null) {
  29. _logger.info("no loader object found... creating.");
  30. config.loader.base.logger = _logger;
  31. loader = new jxLoader(config.loader.base);
  32. loader.addEvent('loadRepoDone', function(){
  33. fs.writeFileSync(options.target + '/deps.json',JSON.stringify(loader.getRepoArray()),'utf8');
  34. p.resolve(true);
  35. });
  36. loader.addRepository(config.loader.repos);
  37. } else {
  38. //console.warn("object from getRepoArray(): " + util.inspect(loader.getRepoArray(),false, null));
  39. fs.writeFileSync(options.target + '/deps.json',JSON.stringify(loader.getRepoArray()),'utf8');
  40. p.resolve(true);
  41. }
  42. return p;
  43. }
  44. };
  45. var runCombine = function(options, promise) {
  46. //_logger.info("options passed into runCombine: " + util.inspect(options,false,null));
  47. Array.from(options).each(function(opts){
  48. var classes = !nil(opts.classes) ? opts.classes : null;
  49. var repos = !nil(opts.repos) ? opts.repos : null;
  50. var type = !nil(opts.type) ? opts.type : 'js';
  51. var includeDeps = !nil(opts.includeDeps) ? opts.includeDeps : true;
  52. var theme = !nil(opts.theme) ? opts.theme : null;
  53. var exclude = !nil(opts.exclude) ? opts.exclude : null;
  54. var opt = !nil(opts.opts) ? opts.opts : true;
  55. loader.options.tags = opts.tags;
  56. _logger.debug('tags passed in:' + util.inspect(loader.options.tags,false,null));
  57. var compiled = loader.compile(classes, repos, type, includeDeps, theme, exclude, opt);
  58. //_logger.info("returned from compile: " + util.inspect(compiled, false, null));
  59. _logger.warn("writing to target: " + opts.target);
  60. fs.writeFileSync(opts.target, compiled.source, 'utf8');
  61. });
  62. promise.resolve(true);
  63. };