exec.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. var util = require("util"),
  2. Promise = require("promised-io").Promise,
  3. spawn = require('child_process').spawn,
  4. fs = require("fs");
  5. module.exports.tasks = {
  6. exec: function(options,config,logger){
  7. var p = new Promise();
  8. logger.info("platform is: " + process.platform);
  9. //grab the correct options
  10. var opt;
  11. Array.from(options).each(function(o){
  12. if (o.os.contains(process.platform)){
  13. opt = o;
  14. }
  15. });
  16. var opts = Object.merge({ cwd: undefined,
  17. env: process.env,
  18. customFds: [-1, -1, -1],
  19. setsid: false
  20. },opt.options);
  21. logger.warn("type of process.env: " + typeOf(process.env));
  22. //logger.warn("options object after merge: " + util.inspect(opts,false,null));
  23. var exec = spawn(opt.cmd,opt.args,opt.options);
  24. //hook events to get status
  25. exec.stdout.on("data",function(data){
  26. logger.info(data);
  27. });
  28. exec.stderr.on('data', function(data) {
  29. logger.debug('exec errored: ' + data);
  30. throw new Error(data);
  31. });
  32. exec.on('exit', function(code) {
  33. p.resolve(true);
  34. });
  35. return p;
  36. }
  37. };