Conditionally prompt the user based on options. For use with Base applications or question-store.
(TOC generated by verb using markdown-toc)
Install with npm:
$ npm install --save ask-when
var askWhen = require('ask-when');
var questions = require('base-questions');
var Base = require('base');
var app = new Base({isApp: true});
// register plugins
app.use(questions());
app.use(askWhen());
The main export is a function that can be passed to .use(), if you want to register this as a plugin.
app.askWhen(name, options, cb);
Params
name {String}: question nameoptions {Object|Function}: Callback, or options object. If options, an "answer" value may be passed on options[name].cb {Function}: callbackPrerequisites
base-questions plugin must be registered before ask-when is registeredisApp must be defined on the instance (either define app.isApp = true, or pass {isApp: true} to the constructor. This prevents the plugin from loading on invalid instances):Register the plugin
var askWhen = require('ask-when');
var questions = require('base-questions');
var Base = require('base');
var app = new Base({isApp: true});
// register plugins
app.use(questions());
app.use(askWhen());
Example usage
// define when
app.options.askWhen = 'not-answered';
app.question('dest', 'Destination directory?', {default: process.cwd()})
.askWhen('dest', function(err, answers) {
if (err) return console.log(err);
console.log(answers)
});
Alternatively, a .when method is exposed if you don't want to register this as a plugin.
ask.when(app, name, val, cb);
Params
app {Object}: instance of base (one of the applications listed in the compatibility section)name {String}: question nameoptions {Object|Function}: Callback, or options object. If options, an "answer" value may be passed on options[name].cb {Function}: callbackPrerequisites
base-questions plugin must be registered before ask-when is registeredvar ask = require('ask-when');
var askWhen = require('ask-when');
var questions = require('base-questions');
var Base = require('base');
var app = new Base({isApp: true});
// register the `base-questions` plugin first
app.use(questions());
// ask questions
app.question('dest', 'Destination directory?', {default: process.cwd()})
ask.when(app, 'dest', function(err, answers) {
if (err) return console.log(err);
console.log(answers)
});
This library wraps the .ask method from base-questions to allow prompts to be conditionally skipped when one of the following values is defined on options (either on app.options, or options passed to askWhen directly)
never: the question will always be skippedalways: the question will always be askednot-answered: the question will only be asked if a value is not already definedCan be used with any of the following libs:
assemblefile.jsgenerator.jsupdatefile.jsverbfile.jsPull requests and stars are always welcome. For bugs and feature requests, please create an issue.
(This document was generated by verb-generate-readme (a verb generator), please don't edit the readme directly. Any changes to the readme must be made in .verb.md.)
To generate the readme and API documentation with verb:
$ npm install -g verb verb-generate-readme && verb
Install dev dependencies:
$ npm install -d && npm test
Jon Schlinkert
Copyright © 2016, Jon Schlinkert. Released under the MIT license.
This file was generated by verb-generate-readme, v0.1.30, on August 17, 2016.