stdin

Read data from stdin.

Usage

var stdin = require( '@stdlib/process/read-stdin' );

stdin( [encoding,] clbk )

Reads data from stdin.

function onRead( error, data ) {
    if ( error ) {
        return console.error( 'Error: %s', error.message );
    }
    console.log( data.toString() );
    // => '...'
}

stdin( onRead );

By default, returned data is a Buffer. To return a string of a specified encoding, provide an encoding parameter.

function onRead( error, data ) {
    if ( error ) {
        return console.error( 'Error: %s', error.message );
    }
    console.log( data );
    // => '...'
}

stdin( 'utf8', onRead );

When a file's calling Node.js process is running in a TTY context (i.e., no stdin), data will either be an empty Buffer (no encoding provided) or an empty string (encoding provided).

var stream = require( '@stdlib/streams/node/stdin' );

function onRead( error, data ) {
    if ( error ) {
        return console.error( 'Error: %s', error.message );
    }
    console.log( data );
    // => ''
}

stream.isTTY = true;

stdin( 'utf8', onRead );

Examples

var string2buffer = require( '@stdlib/buffer/from-string' );
var stream = require( '@stdlib/streams/node/stdin' );
var stdin = require( '@stdlib/process/read-stdin' );

function onRead( error, data ) {
    if ( error ) {
        console.error( 'Error: %s', error.message );
    } else {
        console.log( data.toString() );
        // => 'beep boop'
    }
}

// Fake not being in a terminal context:
stream.isTTY = false;

// Provide a callback to consume all data from `stdin`:
stdin( onRead );

// Push some data to `stdin`:
stream.push( string2buffer( 'beep' ) );
stream.push( string2buffer( ' ' ) );
stream.push( string2buffer( 'boop' ) );

// End the stream:
stream.push( null );
Did you find this page helpful?