1.3.1 • Published 7 years ago

helper-prompt v1.3.1

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

helper-prompt NPM version NPM monthly downloads NPM total downloads

Async helper that prompts the user for input then uses the answers to render templates. Must be registered with a library that supports async helpers, like assemble or generate. After that it should work with handlebars, lo-dash or any other node.js engine that supports helper functions.

Install

Install with npm:

$ npm install --save helper-prompt

How it works

  1. Prompts you for input
  2. If "answered", a second prompt asks if you want to save the answer (this can be skipped)
  3. If "yes", the answer is persisted to a local data store, and the prompt will be skipped the next time the same question is asked.

This is really simple and basic at the moment, it would probably be good to keep it that way. There are lots of interesting things we can do with prompts and templates, but it would be better to do those things with custom implementations.

Usage

Register as an async helper with assemble, generate, templates or any library that uses async-helpers.

var prompt = require('helper-prompt');
var assemble = require('assemble');
var app = assemble();

// "app" can be any of the mentioned libraries above
app.asyncHelper('prompt', prompt());

Example

var templates = require('templates');
var app = templates();

app.engine('hbs', require('engine-handlebars'));
app.asyncHelper('prompt', prompt({save: false}));

app.create('pages');
app.page('example.hbs', 'My name is: {{prompt "What is your name?"}}');

app.render('example.hbs', function(err, view) {
  if (err) {
    console.log(err);
    process.exit(1);
  }
  console.log(view.contents.toString());
  //=> 'My name is: Jon'
});

Prompt types

Currently only the following prompt types are supported:

Any prompt options may be defined using hash arguments.

Options

options.save

Type: boolean

Default: undefined

By default, you will be prompted to confirm whether or not an answer value should be persisted. You can disable this by setting options.save to false.

var prompt = require('helper-prompt');
var assemble = require('assemble');
var app = assemble();

app.asyncHelper('prompt', prompt({save: false}));

options.prompt

Type: boolean

Default: undefined

Don't skip the prompt, regardless of whether or not the answer was persisted. This is especially useful when argv is passed to helper options.

This is different from save in that it forces the prompt to be presented, it does not have any effect on whether or not the answer value is persisted.

var prompt = require('helper-prompt');
var minimist = require('minimist')(process.argv.slice(2));
var assemble = require('assemble');
var app = assemble();

// $ your-app --prompt
app.asyncHelper('prompt', prompt(argv));

Data store

Answer values are persisted using data-store. Options are passed to that library, so you'll need to visit the data-store docs to see all available options and features.

Here is an example of how to change the path of the data store:

// persist answers to a local folder in "data/prompt-answers.json"
prompt({path: 'data/prompt-answers.json'});

About

Related projects

Contributing

Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.

Please read the contributing guide for advice on opening issues, pull requests, and coding standards.

Building docs

(This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)

To generate the readme, run the following command:

$ npm install -g verbose/verb#dev verb-generate-readme && verb

Running tests

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

$ npm install && npm test

Author

Jon Schlinkert

License

Copyright © 2017, Jon Schlinkert. Released under the MIT License.


This file was generated by verb-generate-readme, v0.6.0, on May 28, 2017.