Package Exports
- master-inquisitor
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (master-inquisitor) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Master Inquisitor
Wrapper for various inquirer libraries to suit most of your requirements!
Install
npm i master-inquisitor --save
Node.js require
const inquisitor = require('master-inquisitor')
ES6 modules import
import inquisitor from 'master-inquisitor'
Import selected namespaces
import { folder, repoName } from 'master-inquisitor'
Demo
The file demo.js
in the repo currently contains some "demo code".
Usage
The main API is based on inquirer-shortcuts which wraps inquirer with some additional useful methods.
const inquisitor = require('master-inquisitor')
// multiple questions
inquirer.prompt([{
type: "input",
name: "animal",
message: "Favorite animal?",
default: "wapiti"}
])
.then(results => console.log(results.animal));
// single question
inquisitor.question({
type: "input",
message: "Favorite animal?",
default: "wapiti"
})
.then(animal => console.log(animal));
inquisitor.input("Favorite animal?", {default: "wapiti"})
.then(animal => console.log(animal));
inquirer.confirm("Is the wapiti your favorite animal?")
.then(answer => console.log(answer));
// choose single option from list
inquirer.list("Favorite animal?", ["cat", "dog", "wapiti"])
.then(animal => console.log(animal));
// choose single option from "raw" list
inquirer.rawlist("Favorite animal?", ["cat", "dog", "wapiti"])
.then(animal => console.log(animal));
// press key and make single selection
inquirer.expand("Favorite animal?",
[{key: "c", name: "cat"}
{key: "d", name: "dog"}
{key: "w", name: "wapiti"}])
.then(animal => console.log(animal));
// choose multiple options from checkbox list
inquirer.checkbox("Favorite animals?", ["cat", "dog", "wapiti"])
.then(animals => console.log(animals));
// enter secret
inquirer.password("Enter password.")
.then(password => console.log("Don't print passwords!"));
Extensions
List and text input combined
inquirer..question({
type: 'list-input',
// ...
})
Directory
Select a directory
inquirer..question({
type: 'directory',
// ...
})
Path
Currently unavailable babel-runtime error
Select a path
inquirer..question({
type: 'path',
// ...
})
Folder explorer
inquirer.folder('Please choose a folder', 'src')
.then(folder => console.log(`you selected: ${folder}`))
.catch(err => console.error(err));
Traverse
For usage, see this basic example or the advanced example
traverse({
/* Put your branched questions object here */
})
.then((value) => {
// Handle a successfull resolution ...
})
.catch((err) => {
// Handle a rejection ...
});
Menus
Choose from nested menus:
let level = 0;
const redMenu = {
message: 'red-menu',
choices: {
callApi: function() {
console.log('red-api called');
return;
}
}
};
const blueMenu = {
message: 'blue-menu',
choices: {
callApi: function() {
console.log('blue-api called');
return;
}
}
};
createMenu() => {
return {
message: 'main-menu level ' + level,
choices: {
setupData: () => {
level++;
return;
},
blueMenu: blueMenu,
redMenu: redMenu
}
};
};
inquisitor.menu(createMenu)
.then(() => {
// do sth
})
.catch((err) => {
console.log(err.stack);
});
Ask for repo and npm module name
inquisitor.npmName({
name: 'name',
message: 'Module Name'
})
.then(answer => console.log(answer.name))
inquisitor.repoName({
name: 'repoUrl',
message: 'GitHub repository link (username/repo pair)'
})
.then((repoUrl) => {
})
Secret Credentials
Example will store the secrets prompted for in the file .secrets
Note: result
is an instance of dot-file-config
let creds = inquisitor.credentials('.secrets')
creds.prompt([
username,
password
])
.then((result) => {
result.data //=> { username: 'string', password: 'string' }
result.save() // persists config to fs
Object.keys(creds.config.data) //=> ['username', 'password'] })
})
Test inquirer
Test your inquire
prompts, when you write code generators CLI binaries etc.
Save as dev dependency: npm i master-inquisitor --save-dev
See inquirer-test for test examples.
const inquisitor = require('master-inquisitor');
const testRun, { UP, DOWN, ENTER } = inquisitor;
// ...
ES6 modules
import testRun, { UP, DOWN, ENTER } from 'master-inquisitor';
// ...
Test suite for this project
TODO
Development
Just do it!
License
MIT