UNPKG

1.03 kBJavaScriptView Raw
1/* eslint-env node */
2/* eslint-disable no-console */
3const emoji = require('./emoji');
4const messages = require('./messages');
5
6module.exports = function(componentNames) {
7 // Has to be required when called, or else 'shell-select' will initialize early and make everything behave weirdly
8 const list = require('select-shell')({
9 pointer: emoji(' ☛ ', ' ► '),
10 checked: emoji(' ☑️ ', ' ■ '),
11 unchecked: emoji(' ◻️ ', ' ■ '),
12 checkedColor: 'green',
13 uncheckedColor: 'grey',
14 msgCancel: '',
15 multiSelect: true,
16 prepend: true
17 });
18
19 return new Promise(resolve => {
20 messages.emptyLine();
21 messages.selectComponents();
22
23 componentNames.forEach(name => {
24 list.option(name);
25 });
26
27 list.list();
28
29 list.on('select', options => {
30 return resolve(options.map(({ text }) => text));
31 });
32
33 list.on('cancel', () => {
34 messages.emptyLine();
35 messages.selectComponentsCancel();
36 messages.emptyLine();
37 process.exit(0);
38 });
39 });
40};