1 | const ora = require('ora');
|
2 |
|
3 | const TERMINATE_STYLE = {
|
4 | SUCCEED: 'succeed',
|
5 | FAIL: 'fail',
|
6 | WARN: 'warn',
|
7 | INFO: 'info',
|
8 | PERSIST: 'stopAndPersist',
|
9 | CLEAR: 'stop'
|
10 | };
|
11 |
|
12 | class SpinnerView {
|
13 | constructor(oraConfig) {
|
14 | if (!oraConfig) {
|
15 | oraConfig = {};
|
16 | }
|
17 | if (!oraConfig.color) {
|
18 | oraConfig.color = 'yellow';
|
19 | }
|
20 | if (!oraConfig.spinner) {
|
21 | oraConfig.spinner = process.platform === 'darwin' ? 'dots' : 'balloon';
|
22 | }
|
23 | this.oraSpinner = ora(oraConfig);
|
24 | }
|
25 |
|
26 | start(text) {
|
27 | this.oraSpinner.start(text);
|
28 | }
|
29 |
|
30 | update(text) {
|
31 | this.oraSpinner.text = text;
|
32 | }
|
33 |
|
34 | terminate(style, optionalMessage) {
|
35 | if (!style) {
|
36 | style = TERMINATE_STYLE.CLEAR;
|
37 | }
|
38 | this.oraSpinner[style](optionalMessage);
|
39 | }
|
40 | }
|
41 |
|
42 | module.exports = SpinnerView;
|
43 | module.exports.TERMINATE_STYLE = TERMINATE_STYLE;
|