read-input

0.3.1 • Public • Published

read-input

Write CLI utilities that take a stream of data either stdin from one of more files. To be able to handle this:

$ yourutil file.txt
$ yourutil file1.txt file2.txt
$ yourutil < file.txt
$ cat file.txt | yourutil

Just do this:

#!/usr/bin/env node
var read = require('read-input');
var fnames = process.argv.slice(2);
 
read(fnames, function (err, res) {
  // `err` will be given if at least one of the files fail.
  if (err) {
    console.error(err.message);
    process.exit(8);
  }
 
  res.data /* => "..." */
});

read()

read(files, function(err, res) { ... })

Reads from files. If no files are given, read from stdin. The result res is a result object. If any of the files can't be read, err will be an error object.

var read = require('read-input');
var fnames = process.argv.slice(2); //=> ['readme.txt']
 
read(fnames).then(function (res) {
  res.data       // '...'
  res.error      // undefined or Error()
  res.stdin      // true or false
  res.files      // [...]
  res.successes  // [...]
  res.failures   // [...]
}).catch(function (err) {
  // stdin error
});

To support older versions of Node.js without Promises, you can use callbacks:

read(fname, function (err, res) {
});

You can also iterate through res.files.

read(fnames).then(function(res) {
  res.files.forEach(function (f) {
    f.data    // ...
    f.error   // undefined or Error(...)
    f.stdin   // true or false
    f.name    // 'readme.txt'
  }
});

If files is a blank array (or null), data will be read from stdin. The resulting data will have a similar schema.

read([]).then(fucntion (res) {
  ...
});

read.stdin()

read.stdin(fn)

Read data from standard input. This will not throw errors.

read.stdin().then(function (data) {
  console.log(data); // string
});
 
read.stdin(function (err, data) {
  ...
});

res

The results value is an object passed to the callback of read().

  • data (String) a concatenation of all data in all the files.
  • error (Error) The first error in all files. undefined if successful.
  • stdin (Boolean) is true if the file is read from stdin
  • files (Array) A list of files.
  • failures (Array) A list of files that failed.
  • successes (Array) A list of files that succeeded.

The files, failures and successes are lists of files. Each of the items in these lists has a similar list of values:

  • data (String) File data
  • error (Error) the first error encountered, if applicable
  • stdin (Boolean) is true if the file is read from stdin
  • name (String) File name

There's also error.result which refers to the result object.

See read() for an example.

Thanks

read-input © 2014+, Rico Sta. Cruz. Released under the MIT License.
Authored and maintained by Rico Sta. Cruz with help from contributors.

ricostacruz.com  ·  GitHub @rstacruz  ·  Twitter @rstacruz

Dependencies (0)

    Dev Dependencies (4)

    Package Sidebar

    Install

    npm i read-input

    Weekly Downloads

    50,559

    Version

    0.3.1

    License

    MIT

    Last publish

    Collaborators

    • rstacruz