input-shell 1.0.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -9
- package/demos/demos.input.async.js +28 -0
- package/demos/demos.input.js +1 -1
- package/demos/demos.input.select.checkbox.async.js +30 -0
- package/demos/demos.input.select.checkbox.js +5 -9
- package/demos/demos.input.select.multiple.questions.async.js +42 -0
- package/demos/demos.input.select.multiple.questions.js +27 -3
- package/demos/demos.input.select.radio.async.js +29 -0
- package/demos/demos.input.select.radio.js +6 -9
- package/index.js +389 -36
- package/package.json +1 -1
- package/test/test.input.js +18 -0
- package/test/test.input.multiple.async.js +175 -0
- package/test/test.input.multiple.js +93 -74
- package/test/test.input.select.js +18 -0
- package/test/test.input.select.multiple.js +84 -0
package/README.md
CHANGED
@@ -1,9 +1,30 @@
|
|
1
1
|
# input-shell
|
2
|
-
python like `input` function using input-shell in nodejs
|
2
|
+
python like `input` function using `input-shell` in nodejs
|
3
|
+
|
4
|
+
|
5
|
+
---
|
6
|
+
|
7
|
+
#### EXPORTED FUNCTIONS:
|
8
|
+
|
9
|
+
The asynchronous callback versions and promise versions of `input`, `inputSelect`, `inputSelectMultiple`:
|
10
|
+
|
11
|
+
- `input` : input(text: string)
|
12
|
+
- `inputAsync` : inputAsync(text: string, callback: function)
|
13
|
+
- `inputSelect` : inputSelect(questionText: string, options: string, type: string)
|
14
|
+
- `inputSelectAsync` : inputSelectAsync(questionText : string, options: string, type: string, callback: function)
|
15
|
+
- `inputSelectMultipleAsync` : inputSelectMultipleAsync(questions: string, finalCallback: function)
|
16
|
+
- `inputSelectMultiple` : inputSelectMultiple(questions: string)
|
17
|
+
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
#### DEMOS:
|
22
|
+
|
23
|
+
##### 1. input
|
3
24
|
|
4
25
|
```
|
5
26
|
|
6
|
-
var { input } = require(input-shell);
|
27
|
+
var { input } = require("input-shell");
|
7
28
|
|
8
29
|
// Example usage:
|
9
30
|
input("Input Text: ")
|
@@ -19,13 +40,30 @@ input("Input Text: ")
|
|
19
40
|
|
20
41
|
```
|
21
42
|
|
43
|
+
##### 2. inputAsync
|
44
|
+
|
45
|
+
```
|
46
|
+
|
47
|
+
var { inputAsync } = require("input-shell");
|
48
|
+
|
49
|
+
inputAsync("Enter some text: ", (err, result) => {
|
50
|
+
if (err) {
|
51
|
+
console.error("Error:", err);
|
52
|
+
} else {
|
53
|
+
console.log("Input:", result.toString());
|
54
|
+
}
|
55
|
+
});
|
22
56
|
|
23
57
|
```
|
24
58
|
|
25
|
-
|
59
|
+
##### 3. inputSelectAsync checkbox
|
60
|
+
|
61
|
+
```
|
62
|
+
|
63
|
+
var { inputSelectAsync } = require("input-shell");
|
26
64
|
|
27
65
|
// Example usage: checkboxes
|
28
|
-
|
66
|
+
inputSelectAsync(
|
29
67
|
'Which fruits do you like? (Use space to select, enter to finish)',
|
30
68
|
['Apple', 'Banana', 'Orange', 'Grape'],
|
31
69
|
'checkbox',
|
@@ -36,12 +74,14 @@ inputSelect(
|
|
36
74
|
|
37
75
|
```
|
38
76
|
|
77
|
+
##### 4. inputSelectAsync radio
|
78
|
+
|
39
79
|
```
|
40
80
|
|
41
|
-
var {
|
81
|
+
var { inputSelectAsync } = require("input-shell");
|
42
82
|
|
43
83
|
// Example usage: radio button
|
44
|
-
|
84
|
+
inputSelectAsync(
|
45
85
|
'What is your favorite color?',
|
46
86
|
['Red', 'Blue', 'Green', 'Yellow'],
|
47
87
|
'radio',
|
@@ -52,9 +92,41 @@ inputSelect(
|
|
52
92
|
|
53
93
|
```
|
54
94
|
|
95
|
+
##### 5. inputSelect checkbox
|
96
|
+
|
97
|
+
```
|
98
|
+
|
99
|
+
var { inputSelect } = require("input-shell");
|
100
|
+
|
101
|
+
// Example usage: checkboxes
|
102
|
+
inputSelect(
|
103
|
+
'Select multiple options:',
|
104
|
+
['Checkbox A', 'Checkbox B', 'Checkbox C', 'Checkbox D'],
|
105
|
+
'checkbox'
|
106
|
+
).then(e => console.log(e))
|
107
|
+
|
55
108
|
```
|
56
109
|
|
57
|
-
|
110
|
+
##### 6. inputSelect radio
|
111
|
+
|
112
|
+
```
|
113
|
+
|
114
|
+
var { inputSelect } = require("input-shell");
|
115
|
+
|
116
|
+
// Example usage: radio button
|
117
|
+
inputSelect(
|
118
|
+
'Choose an option:',
|
119
|
+
['Option 1', 'Option 2', 'Option 3'],
|
120
|
+
'radio'
|
121
|
+
).then(e => console.log(e))
|
122
|
+
|
123
|
+
```
|
124
|
+
|
125
|
+
##### 7. inputSelectMultipleAsync
|
126
|
+
|
127
|
+
```
|
128
|
+
|
129
|
+
var { inputSelectMultipleAsync } = require("input-shell");
|
58
130
|
|
59
131
|
// Example usage: Multiple questions with Radio, Checkbox, and Text answers
|
60
132
|
const questions = [
|
@@ -64,12 +136,44 @@ const questions = [
|
|
64
136
|
{ text: 'What is your age?', type: 'text' },
|
65
137
|
];
|
66
138
|
|
67
|
-
|
68
|
-
|
139
|
+
inputSelectMultipleAsync(questions, (err, results) => {
|
140
|
+
if (err) {
|
141
|
+
console.error('Error:', err);
|
142
|
+
process.exit(1);
|
143
|
+
} else {
|
144
|
+
console.clear();
|
145
|
+
console.log('Answers:');
|
146
|
+
<!-- results.forEach((result) => {
|
147
|
+
console.log(`${result.question}: ${Array.isArray(result.answer) ? result.answer.join(', ') : result.answer}`);
|
148
|
+
}); -->
|
149
|
+
console.log("results: ", results);
|
150
|
+
process.exit();
|
151
|
+
}
|
69
152
|
});
|
70
153
|
|
71
154
|
```
|
72
155
|
|
156
|
+
##### 8. inputSelectMultipleAsync
|
157
|
+
|
158
|
+
```
|
159
|
+
|
160
|
+
var { inputSelectMultiple } = require("input-shell");
|
161
|
+
|
162
|
+
// Example usage:
|
163
|
+
const questions = [
|
164
|
+
{ text: 'What is your name?', type: 'text' },
|
165
|
+
{ text: 'What is your favorite color?', type: 'radio', options: ['Red', 'Blue', 'Green'] },
|
166
|
+
{ text: 'Which fruits do you like?', type: 'checkbox', options: ['Apple', 'Banana', 'Orange', 'Grape'] },
|
167
|
+
{ text: 'What is your age?', type: 'text' },
|
168
|
+
];
|
169
|
+
|
170
|
+
inputSelectMultiple(questions).then((results) => {
|
171
|
+
console.log('Results:', results);
|
172
|
+
}).catch((error) => {
|
173
|
+
console.log('Error:', error);
|
174
|
+
});
|
175
|
+
|
176
|
+
```
|
73
177
|
|
74
178
|
#### TESTS
|
75
179
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/**
|
2
|
+
*
|
3
|
+
* Package:
|
4
|
+
* Author: Ganesh B
|
5
|
+
* Description:
|
6
|
+
* Install: npm i input-shell --save
|
7
|
+
* Github: https://github.com/ganeshkbhat/
|
8
|
+
* npmjs Link: https://www.npmjs.com/package/
|
9
|
+
* File: index.js
|
10
|
+
* File Description:
|
11
|
+
*
|
12
|
+
*
|
13
|
+
*/
|
14
|
+
|
15
|
+
/* eslint no-console: 0 */
|
16
|
+
|
17
|
+
'use strict';
|
18
|
+
|
19
|
+
var { inputAsync } = require("../index");
|
20
|
+
|
21
|
+
inputAsync("Enter some text: ", (err, result) => {
|
22
|
+
if (err) {
|
23
|
+
console.error("Error:", err);
|
24
|
+
} else {
|
25
|
+
console.log("Input:", result.toString());
|
26
|
+
}
|
27
|
+
});
|
28
|
+
|
package/demos/demos.input.js
CHANGED
@@ -0,0 +1,30 @@
|
|
1
|
+
/**
|
2
|
+
*
|
3
|
+
* Package:
|
4
|
+
* Author: Ganesh B
|
5
|
+
* Description:
|
6
|
+
* Install: npm i input-shell --save
|
7
|
+
* Github: https://github.com/ganeshkbhat/
|
8
|
+
* npmjs Link: https://www.npmjs.com/package/
|
9
|
+
* File: index.js
|
10
|
+
* File Description:
|
11
|
+
*
|
12
|
+
*
|
13
|
+
*/
|
14
|
+
|
15
|
+
/* eslint no-console: 0 */
|
16
|
+
|
17
|
+
'use strict';
|
18
|
+
|
19
|
+
var { inputSelectAsync } = require("../index");
|
20
|
+
|
21
|
+
// Example usage: checkboxes
|
22
|
+
inputSelectAsync(
|
23
|
+
'Which fruits do you like? (Use space to select, enter to finish)',
|
24
|
+
['Apple', 'Banana', 'Orange', 'Grape'],
|
25
|
+
'checkbox',
|
26
|
+
(selections) => {
|
27
|
+
console.log('You selected:', selections);
|
28
|
+
}
|
29
|
+
);
|
30
|
+
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* Package:
|
4
4
|
* Author: Ganesh B
|
5
5
|
* Description:
|
6
|
-
* Install: npm i input --save
|
6
|
+
* Install: npm i input-shell --save
|
7
7
|
* Github: https://github.com/ganeshkbhat/
|
8
8
|
* npmjs Link: https://www.npmjs.com/package/
|
9
9
|
* File: index.js
|
@@ -20,11 +20,7 @@ var { inputSelect } = require("../index");
|
|
20
20
|
|
21
21
|
// Example usage: checkboxes
|
22
22
|
inputSelect(
|
23
|
-
'
|
24
|
-
['
|
25
|
-
'checkbox'
|
26
|
-
|
27
|
-
console.log('You selected:', selections);
|
28
|
-
}
|
29
|
-
);
|
30
|
-
|
23
|
+
'Select multiple options:',
|
24
|
+
['Checkbox A', 'Checkbox B', 'Checkbox C', 'Checkbox D'],
|
25
|
+
'checkbox'
|
26
|
+
).then(e => console.log(e))
|
@@ -0,0 +1,42 @@
|
|
1
|
+
/**
|
2
|
+
*
|
3
|
+
* Package:
|
4
|
+
* Author: Ganesh B
|
5
|
+
* Description:
|
6
|
+
* Install: npm i input-shell --save
|
7
|
+
* Github: https://github.com/ganeshkbhat/
|
8
|
+
* npmjs Link: https://www.npmjs.com/package/
|
9
|
+
* File: index.js
|
10
|
+
* File Description:
|
11
|
+
*
|
12
|
+
*
|
13
|
+
*/
|
14
|
+
|
15
|
+
/* eslint no-console: 0 */
|
16
|
+
|
17
|
+
'use strict';
|
18
|
+
|
19
|
+
var { inputSelectMultipleAsync } = require("../index");
|
20
|
+
|
21
|
+
// Example usage:
|
22
|
+
const questions = [
|
23
|
+
{ text: 'What is your name?', type: 'text' },
|
24
|
+
{ text: 'What is your favorite color?', type: 'radio', options: ['Red', 'Blue', 'Green'] },
|
25
|
+
{ text: 'Which fruits do you like?', type: 'checkbox', options: ['Apple', 'Banana', 'Orange', 'Grape'] },
|
26
|
+
{ text: 'What is your age?', type: 'text' },
|
27
|
+
];
|
28
|
+
|
29
|
+
inputSelectMultipleAsync(questions, (err, results) => {
|
30
|
+
if (err) {
|
31
|
+
console.error('Error:', err);
|
32
|
+
process.exit(1);
|
33
|
+
} else {
|
34
|
+
console.clear();
|
35
|
+
console.log('Answers:');
|
36
|
+
results.forEach((result) => {
|
37
|
+
console.log(`${result.question}: ${Array.isArray(result.answer) ? result.answer.join(', ') : result.answer}`);
|
38
|
+
});
|
39
|
+
console.log("results: ", results);
|
40
|
+
process.exit();
|
41
|
+
}
|
42
|
+
});
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* Package:
|
4
4
|
* Author: Ganesh B
|
5
5
|
* Description:
|
6
|
-
* Install: npm i input --save
|
6
|
+
* Install: npm i input-shell --save
|
7
7
|
* Github: https://github.com/ganeshkbhat/
|
8
8
|
* npmjs Link: https://www.npmjs.com/package/
|
9
9
|
* File: index.js
|
@@ -23,9 +23,33 @@ const questions = [
|
|
23
23
|
{ text: 'What is your name?', type: 'text' },
|
24
24
|
{ text: 'What is your favorite color?', type: 'radio', options: ['Red', 'Blue', 'Green'] },
|
25
25
|
{ text: 'Which fruits do you like?', type: 'checkbox', options: ['Apple', 'Banana', 'Orange', 'Grape'] },
|
26
|
+
{ type: 'radio', text: 'Choose your operating system:', options: ['Windows', 'macOS', 'Linux'] },
|
26
27
|
{ text: 'What is your age?', type: 'text' },
|
28
|
+
{ type: 'text', text: 'Enter your city?' },
|
27
29
|
];
|
28
30
|
|
29
|
-
inputSelectMultiple(questions
|
31
|
+
inputSelectMultiple(questions).then((results) => {
|
30
32
|
console.log('Results:', results);
|
31
|
-
})
|
33
|
+
}).catch((error) => {
|
34
|
+
console.log('Error:', error);
|
35
|
+
});
|
36
|
+
|
37
|
+
// // USAGE Two:
|
38
|
+
// inputSelectMultiple(questions)
|
39
|
+
// .then((results) => {
|
40
|
+
// console.clear();
|
41
|
+
// console.log('Answers:');
|
42
|
+
// results.forEach((result) => {
|
43
|
+
// console.log(`${result.question}: ${Array.isArray(result.answer) ? result.answer.join(', ') : result.answer}`);
|
44
|
+
// });
|
45
|
+
// process.exit();
|
46
|
+
// })
|
47
|
+
// .catch((error) => {
|
48
|
+
// console.error('Error:', error);
|
49
|
+
// process.exit(1);
|
50
|
+
// });
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
/**
|
2
|
+
*
|
3
|
+
* Package:
|
4
|
+
* Author: Ganesh B
|
5
|
+
* Description:
|
6
|
+
* Install: npm i input-shell --save
|
7
|
+
* Github: https://github.com/ganeshkbhat/
|
8
|
+
* npmjs Link: https://www.npmjs.com/package/
|
9
|
+
* File: index.js
|
10
|
+
* File Description:
|
11
|
+
*
|
12
|
+
*
|
13
|
+
*/
|
14
|
+
|
15
|
+
/* eslint no-console: 0 */
|
16
|
+
|
17
|
+
'use strict';
|
18
|
+
|
19
|
+
var { inputSelectAsync } = require("../index");
|
20
|
+
|
21
|
+
// Example usage: radio button
|
22
|
+
inputSelectAsync(
|
23
|
+
'What is your favorite color?',
|
24
|
+
['Red', 'Blue', 'Green', 'Yellow'],
|
25
|
+
'radio',
|
26
|
+
(selection) => {
|
27
|
+
console.log('You selected:', selection);
|
28
|
+
}
|
29
|
+
);
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* Package:
|
4
4
|
* Author: Ganesh B
|
5
5
|
* Description:
|
6
|
-
* Install: npm i input --save
|
6
|
+
* Install: npm i input-shell --save
|
7
7
|
* Github: https://github.com/ganeshkbhat/
|
8
8
|
* npmjs Link: https://www.npmjs.com/package/
|
9
9
|
* File: index.js
|
@@ -19,13 +19,10 @@
|
|
19
19
|
var { inputSelect } = require("../index");
|
20
20
|
|
21
21
|
// Example usage: radio button
|
22
|
-
inputSelect(
|
23
|
-
'What is your favorite color?',
|
24
|
-
['Red', 'Blue', 'Green', 'Yellow'],
|
25
|
-
'radio',
|
26
|
-
(selection) => {
|
27
|
-
console.log('You selected:', selection);
|
28
|
-
}
|
29
|
-
);
|
30
22
|
|
23
|
+
inputSelect(
|
24
|
+
'Choose an option:',
|
25
|
+
['Option 1', 'Option 2', 'Option 3'],
|
26
|
+
'radio'
|
27
|
+
).then(e => console.log(e))
|
31
28
|
|