Nanobots Producing Megastructures

    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

    Install

    npm i spawn-to-readstream

    DownloadsWeekly Downloads

    17,683

    Version

    0.1.3

    License

    MIT

    Last publish

    Collaborators

    • alessioalex