1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 | const { PromptTypes } = require('./Constants');
|
17 |
|
18 | class BaseController {
|
19 | constructor({ cliManager, exporter }) {
|
20 | this.cliManager = cliManager;
|
21 | this.exporter = exporter;
|
22 | }
|
23 |
|
24 | getActiveOrSpecifiedIdentifier(activeItemName, optionName, cmdOptions) {
|
25 | const active = this.cliManager.getActiveItem(activeItemName);
|
26 | const wanted = cmdOptions[optionName] || (active && active.id);
|
27 | return wanted;
|
28 | }
|
29 |
|
30 | confirmDeleteOperation(noPrompt, entityType, identifier, done) {
|
31 | if (noPrompt) {
|
32 | return setImmediate(done);
|
33 | }
|
34 |
|
35 | const msg = `Are you sure you want to delete ${entityType} with identifier '${identifier}'?`;
|
36 | const q = this.cliManager.prompter.buildQuestion(msg, 'confirmDelete', PromptTypes.CONFIRM, true);
|
37 | this.cliManager.prompter.prompt(q, (err, data) => {
|
38 | if (err) {
|
39 | return done(err);
|
40 | }
|
41 |
|
42 | if (!data.confirmDelete) {
|
43 | return done(new Error('Delete cancelled by user.'));
|
44 | }
|
45 |
|
46 | done();
|
47 | });
|
48 | }
|
49 | }
|
50 |
|
51 | module.exports = BaseController;
|