spawn-to-readstream

0.1.3 • Public • Published

spawn-to-readstream

Description

Make child process spawn behave like a read stream (buffer the error, don't emit end if error emitted).

Installation

npm install spawn-to-readstream

Examples

var toReadStream = require('spawn-to-readstream'),
    spawn        = require('child_process').spawn;
 
toReadStream(spawn('ls', ['-lah'])).on('error', function(err) {
  throw err;
}).on('end', function() {
  console.log('~~~ DONE ~~~');
}).on('data', function(data) {
  console.log('ls data :::', data.toString());
});

Limiting the output of the steam

var toReadStream = require('../index'),
    spawn        = require('child_process').spawn,
    limit, buf;
 
buf   = 0;
limit = 100 * 1024; // 100 Kb
 
// Note that it's a 'soft' limit, meaning the data you
// receive might be > 100 Kb, because the child process
// was stopped after receiving more than <LIMIT> bytes
toReadStream(spawn('cat', ['/dev/urandom']), limit)
  .on('error', function(err) {
    throw err;
  }).on('end', function(isLimited) {
    console.log('done, ' + buf + ' bytes received');
    if (isLimited) {
      console.log('child process was cut');
    }
  }).on('data', function(data) {
    buf += data.length;
  });

Tests

npm test

License

MIT

Package Sidebar

Install

npm i spawn-to-readstream

Weekly Downloads

20,158

Version

0.1.3

License

MIT

Last publish

Collaborators

  • alessioalex