question-store
Ask questions, persist the answers. Basic support for i18n and storing answers based on current working directory.
TOC
(TOC generated by verb using markdown-toc)
Install
Install with npm:
$ npm i question-store --save
Similar to question-cache, but persists answers to disk and supports locales and storing answers based on current working directory.
Usage
var Questions = require('question-store');
API
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?'
});
Get question name
, or group name
if question is not found. You can also do a direct lookup using quesions.cache['foo']
.
Params
name
{String}returns
{Object}: Returns the question object.
Example
var name = questions.get('name');
Returns true if questions.cache
or questions.groups
has question name
.
{String}
: The name of the question to check
Example
var name = questions.has('name');
Delete the given question or group.
{String}
: The name of the question to delete
Example
questions.del('name');
questions.get('name');
Delete the given question or group.
{String}
: The name of the question to delete
Example
questions.del('name');
questions.get('name');
Delete a question.
Params
name
{String}: The question to delete.
Example
question.delQuestion(name);
Get a group with the given key
. If key
has a dot, only the substring before the dot is used for the lookup.
Params
key
{String}returns
{Object}
Example
questions
.set('author.name', 'Author name?')
.set('author.url', 'Author url?')
.set('project.name', 'Project name?')
.set('project.url', 'Project url?')
var group = questions.getGroup('author');
questions.ask(group, function(err, answers) {
});
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);
});
Get a the index of question name
from the queue.
Params
name
{String}returns
{Object}
Example
questions.getIndex('author');
Remove a question from the queue.
Params
items
{Object}: Object of views
Example
console.log(questions.queue);
questions.unqueue('a');
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);
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.set('foo', 'bar');
Get key
from the question.
Params
Example
question.set('foo', 'bar');
question.get('foo');
Return the answer for the current locale and current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.getAnswer(locale);
Return the answer for the current locale and current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.getAnswer(locale);
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.hasAnswer(locale);
Return the answer for the current locale and current working directory.
Params
locale
{String}: Optionally pass a locale
Example
question.setDefault('Jon', 'en');
question.setDefault('Jean', 'fr');
Erase the answer for a question.
{Boolean}
Example
question.erase();
question.hasAnswer();
Force the question to be asked.
{Boolean}
Example
question.options.force = true;
question.isForced();
Return true if the question will be forced (asked even if it already has an answer).
{Boolean}
Example
question.options.force = true;
question.isForced();
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);
});
Set the answer for question name
at the current cwd.
Optionally specify a locale to set, otherwise the answer is set
for the default locale.
Params
name
{String}locale
{String}returns
{Object}: Returns the answer object.
Example
questions.setAnswer('name', 'Jack');
questions.getAnswer('name');
questions.setAnswer('name', 'fr');
questions.getAnswer('name');
questions.getAnswer('name', 'fr');
Get the answer for question name
at the current cwd.
Optionally specify a locale to get, otherwise the default locale's
answer is returend.
Params
name
{String}locale
{String}returns
{Object}: Returns the question object.
Example
var name = questions.getAnswer('name');
var name = questions.getAnswer('name', 'fr');
Get the answer for question name
at the current cwd.
Optionally specify a locale to get, otherwise the default locale's
answer is returend.
Params
name
{String}locale
{String}returns
{Object}: Returns the question object.
Example
var name = questions.getAnswer('name');
var name = questions.hasAnswer('name', 'fr');
Set the answer for question name
at the current cwd.
Optionally specify a locale to set, otherwise the answer is set
for the default locale.
Params
name
{String}locale
{String}returns
{Object}: Returns the answer object.
Example
questions.setDefault('name', 'Jack');
questions.getDefault('name');
questions.setDefault('name', 'fr');
questions.getDefault('name');
questions.getDefault('name', 'fr');
Get the answer for question name
at the current cwd.
Optionally specify a locale to get, otherwise the default locale's
answer is returend.
Params
name
{String}locale
{String}returns
{Object}: Returns the question object.
Example
var name = questions.setDefault('name', 'Brian');
var name = questions.setDefault('name', 'Jean', 'fr');
var name = questions.getDefault('name');
var name = questions.getDefault('name', 'fr');
Get the answer for question name
at the current cwd.
Optionally specify a locale to get, otherwise the default locale's
answer is returend.
Params
name
{String}locale
{String}returns
{Object}: Returns the question object.
Example
var name = questions.setDefault('name', 'Brian', 'fr');
var name = questions.hasDefault('name', 'fr');
var name = questions.hasDefault('name', 'en');
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 merge 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');
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
Generate docs
Generate readme and API documentation with verb:
$ npm i -d && npm run docs
Or, if verb is installed globally:
$ verb
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 © 2016 Jon Schlinkert
Released under the MIT license.
This file was generated by verb, v0.9.0, on February 20, 2016.