119 lines
4.0 KiB
Markdown
119 lines
4.0 KiB
Markdown
|
# SYNOPSIS
|
||
|
A sync prompt for node. very simple. no C++ bindings and no bash scripts.
|
||
|
|
||
|
Works on Linux, OS X and Windows.
|
||
|
|
||
|
# BASIC MODE
|
||
|
```js
|
||
|
|
||
|
var prompt = require('prompt-sync')();
|
||
|
//
|
||
|
// get input from the user.
|
||
|
//
|
||
|
var n = prompt('How many more times? ');
|
||
|
```
|
||
|
# WITH HISTORY
|
||
|
|
||
|
History is an optional extra, to use simply install the history plugin.
|
||
|
|
||
|
```sh
|
||
|
npm install --save prompt-sync-history
|
||
|
```
|
||
|
|
||
|
```js
|
||
|
var prompt = require('prompt-sync')({
|
||
|
history: require('prompt-sync-history')() //open history file
|
||
|
});
|
||
|
//get some user input
|
||
|
var input = prompt()
|
||
|
prompt.history.save() //save history back to file
|
||
|
```
|
||
|
|
||
|
See the [prompt-sync-history](http://npm.im/prompt-sync-history) module
|
||
|
for options, or fork it for customized behaviour.
|
||
|
|
||
|
# API
|
||
|
|
||
|
## `require('prompt-sync')(config) => prompt`
|
||
|
|
||
|
Returns an instance of the `prompt` function.
|
||
|
Takes `config` option with the following possible properties
|
||
|
|
||
|
`sigint`: Default is `false`. A ^C may be pressed during the input process to abort the text entry. If sigint it `false`, prompt returns `null`. If sigint is `true` the ^C will be handled in the traditional way: as a SIGINT signal causing process to exit with code 130.
|
||
|
|
||
|
`eot`: Default is `false`. A ^D pressed as the first character of an input line causes prompt-sync to echo `exit` and exit the process with code 0.
|
||
|
|
||
|
`autocomplete`: A completer function that will be called when user enters TAB to allow for autocomplete. It takes a string as an argument an returns an array of strings that are possible matches for completion. An empty array is returned if there are no matches.
|
||
|
|
||
|
`history`: Takes an object that supplies a "history interface", see [prompt-sync-history](http://npm.im/prompt-sync-history) for an example.
|
||
|
|
||
|
## `prompt(ask, value, opts)`
|
||
|
|
||
|
`ask` is the label of the prompt, `value` is the default value
|
||
|
in absence of a response.
|
||
|
|
||
|
The `opts` argument can also be in the first or second parameter position.
|
||
|
|
||
|
Opts can have the following properties
|
||
|
|
||
|
`echo`: Default is `'*'`. If set the password will be masked with the specified character. For hidden input, set echo to `''` (or use `prompt.hide`).
|
||
|
|
||
|
`autocomplete`: Overrides the instance `autocomplete` function to allow for custom
|
||
|
autocompletion of a particular prompt.
|
||
|
|
||
|
`value`: Same as the `value` parameter, the default value for the prompt. If `opts`
|
||
|
is in the third position, this property will *not* overwrite the `value` parameter.
|
||
|
|
||
|
`ask`: Sames as the `value` parameter. The prompt label. If `opts` is not in the first position, the `ask` parameter will *not* be overridden by this property.
|
||
|
|
||
|
## `prompt.hide(ask)`
|
||
|
|
||
|
Convenience method for creating a standard hidden password prompt,
|
||
|
this is the same as `prompt(ask, {echo: ''})`
|
||
|
|
||
|
|
||
|
# LINE EDITING
|
||
|
Line editing is enabled in the non-hidden mode. (use up/down arrows for history and backspace and left/right arrows for editing)
|
||
|
|
||
|
History is not set when using hidden mode.
|
||
|
|
||
|
# EXAMPLES
|
||
|
|
||
|
```js
|
||
|
//basic:
|
||
|
console.log(require('prompt-sync')()('tell me something about yourself: '))
|
||
|
|
||
|
var prompt = require('prompt-sync')({
|
||
|
history: require('prompt-sync-history')(),
|
||
|
autocomplete: complete(['hello1234', 'he', 'hello', 'hello12', 'hello123456']),
|
||
|
sigint: false
|
||
|
});
|
||
|
|
||
|
var value = 'frank';
|
||
|
var name = prompt('enter name: ', value);
|
||
|
console.log('enter echo * password');
|
||
|
var pw = prompt({echo: '*'});
|
||
|
var pwb = prompt('enter hidden password (or don\'t): ', {echo: '', value: '*pwb default*'})
|
||
|
var pwc = prompt.hide('enter another hidden password: ')
|
||
|
var autocompleteTest = prompt('custom autocomplete: ', {
|
||
|
autocomplete: complete(['bye1234', 'by', 'bye12', 'bye123456'])
|
||
|
});
|
||
|
|
||
|
prompt.history.save();
|
||
|
|
||
|
console.log('\nName: %s\nPassword *: %s\nHidden password: %s\nAnother Hidden password: %s', name, pw, pwb, pwc);
|
||
|
console.log('autocomplete2: ', autocompleteTest);
|
||
|
|
||
|
function complete(commands) {
|
||
|
return function (str) {
|
||
|
var i;
|
||
|
var ret = [];
|
||
|
for (i=0; i< commands.length; i++) {
|
||
|
if (commands[i].indexOf(str) == 0)
|
||
|
ret.push(commands[i]);
|
||
|
}
|
||
|
return ret;
|
||
|
};
|
||
|
};
|
||
|
```
|