1 |
|
2 |
|
3 |
|
4 | 'use strict';
|
5 |
|
6 | const __ = require('@absolunet/private-registry');
|
7 | const { terminal } = require('@absolunet/terminal');
|
8 | const paths = require('~/helpers/paths');
|
9 |
|
10 |
|
11 | class Task {
|
12 |
|
13 |
|
14 | set filename(filename) {
|
15 | __(this).set('filename', filename);
|
16 | }
|
17 |
|
18 |
|
19 | set deprecate(message) {
|
20 | __(this).set('deprecated', message);
|
21 | }
|
22 |
|
23 |
|
24 | get bin() {
|
25 | if (__(this).get('filename')) {
|
26 | return __(this).get('filename').split(`${paths.workflow.cliTasks}/`)[1].split('.js')[0].replace('/', ':');
|
27 | }
|
28 |
|
29 | throw new Error('Filename not defined by subclass');
|
30 | }
|
31 |
|
32 |
|
33 | cli(meowCli) {
|
34 | if (__(this).get('deprecated')) {
|
35 | terminal.spacer();
|
36 | terminal.warning(`DEPRECATED - ${__(this).get('deprecated')}`);
|
37 | terminal.exit();
|
38 | }
|
39 |
|
40 | throw new Error('Not overwritten by subclass');
|
41 | }
|
42 |
|
43 |
|
44 | run(options) {
|
45 | throw new Error('Not overwritten by subclass');
|
46 | }
|
47 |
|
48 |
|
49 | }
|
50 |
|
51 |
|
52 | module.exports = Task;
|