Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Node.js console-based wizards in a snap.
JavaScript
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
examples
.gitignore
.npmignore
README.md
index.js
package.json

README.md

Reply

Simple way of getting user input in Node.js. Prompt is really awesome but it ships with too much stuff I don't really need.

Features

  • Verifies type of response (string, number, boolean), and returns native value.
  • Can check response against regex or array of options.
  • Custom error message for each field, or fallback to 'Invalid value'.
  • Masks password fields with '*', with support for backspace keystrokes.
  • Fields can hold a default value, be marked as required or allow an empty response.

Install

npm install reply

Usage

var reply = require('reply');

var opts = {
  name: {
    message : 'Please type in your name.',
    allow_empty: false // will require an answer
  },
  username: {
    default : 'nobody' // if left empty, will fall back to this value
    type    : 'string'    // ensure value is not a number
  },
  gender: {
    options : ['Male', 'Female', 'Robot', 'Rather not say']
  },
  password: {
    message : 'Password, please.',
    type    : 'password',
    regex   : /(\w{6})/,
    error   : 'Six chars minimum. Try again.'
  },
  country: {
    message : 'Where are you now?',
    default : get_country // use the function below to provide a default/fallback answer
  },
  zip_code: {
    message : 'Please enter your ZIP code.',
    type    : 'number', // reply uses the JS primitives, as returned by `typeof var`
    depends_on: {
      country: 'US'
    }
  }
}

function get_country(answers) {
  // answers contains the values given up to this point.
  if (answers.username == 'billgates')
    return 'US';
  else // we'll simply guess it from the LANG variable
    return process.env.LANG.split(/_|\./)[1]; 
}

reply.get(opts, function(err, answers) {
  console.log(answers); 
  /* { name: 'Bill Gates', 
       username: 'billgates',
       gender: 'Robot', 
       password: '123456',
       country: 'US',
       zip_code: 12345 } */
});

Confirm (yes/no)

reply.confirm('Are you up for it?', function(err, yes) {
  var answer = (!err && yes) ? "That's crack-a-lackin!" : 'Bummer.';
  console.log(answer);
});

Options

  • message : What's displayed when requesting the user's input. Optional, though helpful.
  • default : Default value in case user just presses the enter key. Can be a value or a function that returns a value.
  • depends_on: Key/val object containing the previous answers from which a specific entry depends on. Check the depends-on.js example for a use case.
  • type : Determines the type of response that is expected to the valid. Possible values are: string, password, number, or boolean.
  • options : Array of elements from which the user is expected to give a valid answer from.
  • regex : Validates response against the given regex.
  • allow_empty: Disallows empty answers.

You can find a few more use cases in the examples directory.

Credits

Written by Tomás Pollak.

Copyright

(c) Fork Ltd. MIT license.

Something went wrong with that request. Please try again.