1 | let enabled = false;
|
2 | const ora = require('ora');
|
3 |
|
4 | module.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 |
|
45 | module.exports.enable = () => enabled = true;
|