ask-once

Only ask a question one time and store the answer.
Install
Install with npm
$ npm i ask-once && question-cache --save
Usage
1. Pass an instance of question-cache
var questions = require('question-cache')();
var ask = require('ask-once')({questions: questions});
2. Ask a question!
ask('May I have your username?', function (err, answer) {
console.log(answer);
});
The user's answer is saved, and the question won't be asked again unless:
force: true is passed on the options, or
- the answer is deleted directly
FAQ
Where are the answers stored?
The user's answers are saved on a global config store that is uniquely identified to the application using ask-once.
Can I change where answers are stored?
Yes, you can pass your own instance of data-store with the cwd option set to whatever you want it to be. Here's an example:
var questions = require('question-cache')();
var store = require('data-store')('foo', {cwd: 'bar'});
var ask = require('ask-once')({
questions: questions,
store: store
});
ask('May I have your username?' function (err, answer) {
console.log(answer);
});
Docs
options
To re-ask questions or reset the stored values:
options.force: will re-ask the given question or questions, regardless of whether or not previously stored values exists.
options.init: will delete the entire store and start over again.
API
Returns a question-asking function that only asks a question if the answer is not already stored, or if forced.
Params
options {Object}
options.questions {Object}: (required) Pass an instance of [question-cache][]
options.store {Object}: (optional) Pass an instance of data-store
Example
var ask = new Ask({questions: questions});
Ask a question only if the answer is not already stored. If
the answer is passed on the options the question is bypassed
and the answer is be returned.
Params
question {String}: Key of the question to ask.
options {Object}: Answers or options to force re-asking questions.
cb {Function}: Callback function with err and answer.
Examples
First time the program is run, the user is prompted to answer a question:

Additional runs of the program will skip prompting the user:

Passing the init option will delete all the stored answers and prompt the user to answer the question again:

Additional runs after clearing the stop will return the newly saved answer:

Passing the force option will force the question to be asked:

Additional runs after forcing the question, will return the newly saved answer:

Related projects
Running tests
Install dev dependencies:
$ npm i -d && npm test
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Author
Brian Woodward
License
Copyright © 2015 Brian Woodward
Released under the MIT license.
This file was generated by verb-cli on October 14, 2015.