UNPKG

1.07 kBJavaScriptView Raw
1let enabled = false;
2const ora = require('ora');
3
4module.exports = class Task {
5 constructor(name) {
6 if (!enabled) return;
7 this._name = name;
8 this.spinner = ora({
9 enabled: enabled,
10 text: name,
11 interval: 600,
12 }).start();
13 }
14
15 set name(name) {
16 if (!enabled) return;
17 this._name = name;
18 this.spinner.text = name;
19 this.spinner.render();
20 }
21
22 subtask(name) {
23 if (!enabled) return { done() {} };
24 const text = `${this._name}${name}`;
25 this.spinner.text = text;
26 this.spinner.render();
27 return {
28 done: () => {
29 process.nextTick(() => {
30 if (this.spinner.text === text) {
31 this.spinner.text = this._name;
32 }
33 });
34 }
35 }
36 }
37
38 succeed() {
39 if (!enabled) return;
40 this.spinner.text = this._name;
41 this.spinner.succeed();
42 }
43};
44
45module.exports.enable = () => enabled = true;