question-store
Ask questions, persist the answers. Basic support for i18n and storing answers based on current working directory.
Similar to question-cache, but persists answers to disk and supports locales and storing answers based on current working directory.
Install
Install with npm
$ npm i question-store --save
Usage
var Questions = require('question-store');
API
Questions
Create an instance of Questions
with the given options
.
Params
options
{Object}: question store options
Example
var Questions = new Questions(options);
Cache a question to be asked at a later point. Creates an instance of Question, so any Question
options or settings may be used.
Params
value
{Object|String}: Question object, message (string), or options object.locale
{String}: Optionally pass the locale to use, otherwise the default locale is used.
Example
questions.set('drink', 'What is your favorite beverage?');
questions.set('drink', {
type: 'input',
message: 'What is your favorite beverage?'
});
questions.set({
name: 'drink'
type: 'input',
message: 'What is your favorite beverage?'
});
Set data to be used for answering questions, or as default answers when force
is true.
Params
key
{String|Object}: Property name to set, or object to extend onto questions.data
val
{any}: The value to assign to key
Example
questions.setData('foo', 'bar');
questions.setData({foo: 'bar'});
Return true if property key
has a value on questions.data
.
Params
key
{String}: The property to lookup.returns
{Boolean}
Example
questions.hasData('abc');
Get the value of property key
from questions.data
.
Params
key
{String}: The property to get.returns
{any}: Returns the value of property key
Example
questions.setData('foo', 'bar');
questions.getData('foo');
Add a question that, when answered, will save the value as the default value to be used for the current locale.
Params
name
{String}val
{Object}options
{Object}
Example
questions.setDefault('author.name', 'What is your name?');
Get the answer object for question name
, for the current locale and cwd.
Params
name
{String}locale
{String}returns
{Object}: Returns the question object.
Example
var name = questions.get('name');
var name = questions.get('name', 'fr');
Get the question
instance stored for the given name
. This is the entire Question
object, with all answers for all locales and directories.
Params
name
{String}returns
{Object}: Returns the question instance.
Example
var name = questions.question('name');
Return true if question name
has been answered for the current locale and the current working directory.
Params
name
{String}: Question namelocale
{String}: Optionally pass a locale
Example
question.isAnswered(locale);
Delete the answer for question name
for the current (or given) locale.
Params
name
{String}: Question namelocale
{String}: Optionally pass a locale
Example
question.del(locale);
Delete answers for all questions for the current (or given) locale.
Params
locale
{String}: Optionally pass a locale
Example
question.deleteAll(locale);
Erase all answers for question name
from the file system.
Params
name
{String}: Question name
Example
question.erase(name);
Ask one or more questions, with the given options
and callback.
Params
queue
{String|Array}: Name or array of question names.options
{Object|Function}: Question options or callback functioncallback
{Function}: callback function
Example
questions.ask(['name', 'description'], function(err, answers) {
console.log(answers);
});
Question
Create new Question
store name
, with the given options
.
Params
name
{String}: The question property name.options
{Object}: Store options
Example
var question = new Question(name, options);
Set the answer to the question for the current (or given) locale, at the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.set('foo');
Get the answer for the current (or given) locale for the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.get(locale);
Delete the answer for the current (or given) locale and the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.del(locale);
Delete the answer store (all answers for the question) from the file system.
Example
question.erase();
Return true if the question has been answered for the current locale and the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.isAnswered(locale);
Set the default answer to use for the current (or given) locale, at the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.setDefault('foo');
Get the default answer for the current (or given) locale
Params
locale
{String}: Optionally pass a locale
Example
question.getDefault();
Return true if the question has been given a default answer for the current (or given) locale, at the current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.hasDefault('foo');
Ask the question.
- If an answer has already been stored for the current locale and cwd it will be returned directly without asking the question.
- If
options.force
is true, the answer will be asked asked even if the answer is already stored. - If
options.save
is false, the answer will not be persisted to the file system, and the question will be re-asked each time .ask()
is called (which means it's also not necessary to define force
when save
is false).
Params
options
{Object|Function}: Question options or callback functioncallback
{Function}: callback function
Example
question.ask({force: true}, function(err, answer) {
console.log(answer);
});
Persist the answer for the current locale and cwd to disk.
Example
question.save();
Related projects
- answer-store: Store answers to user prompts, based on locale and/or current working directory. | homepage
- inquirer: A collection of common interactive command line user interfaces. | homepage
- question-cache: A wrapper around inquirer that makes it easy to create and selectively reuse questions. | homepage
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
Jon Schlinkert
License
Copyright © 2015 Jon Schlinkert
Released under the MIT license.
This file was generated by verb-cli on November 27, 2015.