concat.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. var util = require("util"),
  2. Promise = require("promised-io").Promise,
  3. fs = require("fs"),
  4. files,
  5. _logger;
  6. var addFile = function (stream, p) {
  7. var file = files.shift();
  8. readstream = fs.createReadStream(file, { encoding: 'utf-8' });
  9. readstream.on("end",function(){
  10. _logger.debug("in end method of readstream.");
  11. if (files.length > 0) {
  12. _logger.debug("going around again.");
  13. addFile(stream,p);
  14. } else {
  15. _logger.debug("closing stream and resolving promise...");
  16. stream.end();
  17. p.resolve(true);
  18. }
  19. });
  20. readstream.pipe(stream, {end: false});
  21. };
  22. module.exports.tasks = {
  23. concat: function (options, config, logger) {
  24. var p = new Promise(),
  25. newFile = fs.createWriteStream(options.target);
  26. logger.info("In concat... options passed: " + util.inspect(options,false,null));
  27. _logger = logger;
  28. files = Array.clone(options.files);
  29. addFile(newFile, p);
  30. return p;
  31. }
  32. };