Socket
Socket
Sign inDemoInstall

promptly

Package Overview
Dependencies
2
Maintainers
2
Versions
16
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    promptly

Simple command line prompting utility


Version published
Maintainers
2
Install size
38.4 kB
Created

Changelog

Source

3.0.0 (2018-01-15)

Chores

  • update project to use new features present in node lts (d3677d0)

BREAKING CHANGES

  • remove support for old node versions (only latest lts or higher is supported)
  • callback support has been removed
  • ability to call error.retry has been removed
  • built-in choice and confirm validators now run before any custom validators
  • the default option value may only be undefined or a string from now on

Readme

Source

promptly

NPM version Downloads Build Status Dependency status Dev Dependency status

Simple command line prompting utility.

Installation

$ npm install promptly

API

.prompt(message, [opts], [fn])

Prompts for a value, printing the message and waiting for the input.
When done, calls fn with error and value or returns a Promise if no fn is provided.

Default options:

{
    // The default value. If not supplied, the input is mandatory
    'default': null,
    // Automatically trim the input
    'trim': true,
    // A validator or an array of validators.
    'validator': null,
    // Automatically retry if a validator fails
    'retry': true,
    // Do not print what the user types
    'silent': false,
    // Replace each character with the specified string when 'silent' is true
    'replace': '',
    // Input and output streams to read and write to
    'input': process.stdin,
    'output': process.stdout
}

The validators have two purposes:

function (value) {
    // Validation example, throwing an error when invalid
    if (value.length !== 2) {
        throw new Error('Length must be 2');
    }

    // Parse the value, modifying it
    return value.replace('aa', 'bb');
}

Example usages

Ask for a name:

promptly.prompt('Name: ', function (err, value) {
    // err is always null in this case, because no validators are set
    console.log(value);
});

Using Promise:

promptly.prompt('Name: ')
.then(function (value) {
    // no need for catch in this case, because no validators are set
    console.log(value);
});

Ask for a name with a constraint (non-empty value and length > 2):

var validator = function (value) {
    if (value.length < 2) {
        throw new Error('Min length of 2');
    }

    return value;
};

promptly.prompt('Name: ', { validator: validator }, function (err, value) {
    // Since retry is true by default, err is always null
    // because promptly will be prompting for a name until it validates
    // Between each prompt, the error message from the validator will be printed
    console.log('Name is:', value);
});

Same as above but do not retry automatically:

var validator = function (value) {
    if (value.length < 2) {
        throw new Error('Min length of 2');
    }

    return value;
};

promptly.prompt('Name: ', { validator: validator, retry: false }, function (err, value) {
    if (err) {
        console.error('Invalid name:', err.message);
        // Manually call retry
        // The passed error has a retry method to easily prompt again.
        return err.retry();
    }

    console.log('Name is:', value);
});

.confirm(message, [opts], fn)

Ask the user to confirm something.
Calls fn with error and value (true or false).

Truthy values are: y, yes and 1.
Falsy values are n, no, and 0.
Comparison is made in a case insensitive way.

Example usage:

promptly.confirm('Are you sure? ', function (err, value) {
    console.log('Answer:', value);
});

.choose(message, choices, [opts], fn)

Ask the user to choose between multiple choices (array of choices).
Calls fn with error and value.

Example usage:

promptly.choose('Do you want an apple or an orange? ', ['apple', 'orange'], function (err, value) {
    console.log('Answer:', value);
});

.password(message, [opts], fn)

Prompts for a password, printing the message and waiting for the input.
When available, calls fn with error and value.

The available options are the same, except that trim and silent default to false and default is an empty string (to allow empty passwords).

Example usage:

promptly.password('Type a password: ', { replace: '*' }, function (err, value) {
    console.log('Password is:', value);
});

License

Released under the MIT License.

Keywords

FAQs

Last updated on 27 Mar 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc