@neurodevs/ndx-cli 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/__tests__/modules/CliCommandRunner.test.d.ts +27 -13
- package/build/__tests__/modules/CliCommandRunner.test.js +124 -34
- package/build/__tests__/modules/CliCommandRunner.test.js.map +1 -1
- package/build/modules/CliCommandRunner.d.ts +15 -7
- package/build/modules/CliCommandRunner.js +63 -24
- package/build/modules/CliCommandRunner.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/modules/CliCommandRunner.test.ts +171 -47
- package/src/modules/CliCommandRunner.ts +82 -26
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import AbstractSpruceTest from '@sprucelabs/test-utils';
|
|
2
2
|
export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
3
3
|
private static readonly createImplCommand;
|
|
4
|
+
private static readonly interfaceName;
|
|
5
|
+
private static readonly implName;
|
|
4
6
|
private static readonly createPackageCommand;
|
|
5
|
-
private static readonly
|
|
6
|
-
private static readonly
|
|
7
|
+
private static readonly packageName;
|
|
8
|
+
private static readonly description;
|
|
9
|
+
private static readonly keywords;
|
|
10
|
+
private static readonly createUiCommand;
|
|
11
|
+
private static readonly componentName;
|
|
12
|
+
private static readonly githubToken;
|
|
7
13
|
protected static beforeEach(): Promise<void>;
|
|
8
14
|
protected static throwsIfCommandIsNotSupported(): Promise<void>;
|
|
9
15
|
protected static createImplCreatesInstance(): Promise<void>;
|
|
@@ -20,26 +26,34 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
20
26
|
protected static createPackageCreatesNpmAutopackage(): Promise<void>;
|
|
21
27
|
private static keywordsWithDefaults;
|
|
22
28
|
protected static createPackageRunsNpmAutopackage(): Promise<void>;
|
|
29
|
+
protected static createUiCreatesInstance(): Promise<void>;
|
|
30
|
+
protected static createUiPromptsUserForInput(): Promise<void>;
|
|
31
|
+
protected static createUiDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
32
|
+
protected static createUiCreatesTestSaveDirIfNotExists(): Promise<void>;
|
|
33
|
+
protected static createUiCreatesModuleSaveDirIfNotExists(): Promise<void>;
|
|
34
|
+
protected static createUiCreatesFakeSaveDirIfNotExists(): Promise<void>;
|
|
35
|
+
protected static createUiCreatesUiAutomodule(): Promise<void>;
|
|
36
|
+
protected static createUiRunsUiAutomodule(): Promise<void>;
|
|
37
|
+
private static runCreateUi;
|
|
23
38
|
private static runCreateImpl;
|
|
24
39
|
private static runCreatePackage;
|
|
25
40
|
private static expandHomeDir;
|
|
26
41
|
private static splitOnCommaOrWhitespace;
|
|
27
|
-
private static
|
|
28
|
-
private static
|
|
29
|
-
private static
|
|
42
|
+
private static readonly implTestSaveDir;
|
|
43
|
+
private static readonly implModuleSaveDir;
|
|
44
|
+
private static get implFakeSaveDir();
|
|
45
|
+
private static readonly uiTestSaveDir;
|
|
46
|
+
private static readonly uiModuleSaveDir;
|
|
47
|
+
private static get uiFakeSaveDir();
|
|
48
|
+
private static setFakeImplAutomodule;
|
|
49
|
+
private static setFakeUiAutomodule;
|
|
30
50
|
private static setFakeAutopackage;
|
|
51
|
+
private static setFakeMkdir;
|
|
31
52
|
private static setFakePrompts;
|
|
32
|
-
private static setFakeResponsesForCreateImpl;
|
|
33
|
-
private static setFakePromptResponsesForCreatePackage;
|
|
34
|
-
private static readonly interfaceName;
|
|
35
|
-
private static readonly implName;
|
|
36
|
-
private static readonly packageName;
|
|
37
|
-
private static readonly description;
|
|
38
|
-
private static readonly keywords;
|
|
39
|
-
private static readonly githubToken;
|
|
40
53
|
private static readonly interfaceNameMessage;
|
|
41
54
|
private static readonly implNameMessage;
|
|
42
55
|
private static readonly packageNameMessage;
|
|
43
56
|
private static readonly packageDescriptionMessage;
|
|
57
|
+
private static readonly componentNameMessage;
|
|
44
58
|
private static CliCommandRunner;
|
|
45
59
|
}
|
|
@@ -52,10 +52,11 @@ const fakePrompts_1 = require("../../testDoubles/prompts/fakePrompts");
|
|
|
52
52
|
class CliCommandRunnerTest extends test_utils_1.default {
|
|
53
53
|
static async beforeEach() {
|
|
54
54
|
await super.beforeEach();
|
|
55
|
+
this.setFakeImplAutomodule();
|
|
56
|
+
this.setFakeUiAutomodule();
|
|
57
|
+
this.setFakeAutopackage();
|
|
55
58
|
this.setFakePrompts();
|
|
56
59
|
this.setFakeMkdir();
|
|
57
|
-
this.setFakeAutomodule();
|
|
58
|
-
this.setFakeAutopackage();
|
|
59
60
|
process.env.GITHUB_TOKEN = this.githubToken;
|
|
60
61
|
}
|
|
61
62
|
static async throwsIfCommandIsNotSupported() {
|
|
@@ -92,22 +93,25 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
92
93
|
}
|
|
93
94
|
static async createImplCreatesTestSaveDirIfNotExists() {
|
|
94
95
|
await this.runCreateImpl();
|
|
95
|
-
test_utils_1.assert.isEqualDeep(fakeMkdir_1.callsToMkdir[0], { path: this.
|
|
96
|
+
test_utils_1.assert.isEqualDeep(fakeMkdir_1.callsToMkdir[0], { path: this.implTestSaveDir, options: { recursive: true } }, 'Did not create test save dir!');
|
|
96
97
|
}
|
|
97
98
|
static async createImplCreatesModuleSaveDirIfNotExists() {
|
|
98
99
|
await this.runCreateImpl();
|
|
99
|
-
test_utils_1.assert.isEqualDeep(fakeMkdir_1.callsToMkdir[1], { path: this.
|
|
100
|
+
test_utils_1.assert.isEqualDeep(fakeMkdir_1.callsToMkdir[1], { path: this.implModuleSaveDir, options: { recursive: true } }, 'Did not create module save dir!');
|
|
100
101
|
}
|
|
101
102
|
static async createImplCreatesFakeSaveDirIfNotExists() {
|
|
102
103
|
await this.runCreateImpl();
|
|
103
|
-
test_utils_1.assert.isEqualDeep(fakeMkdir_1.callsToMkdir[2], {
|
|
104
|
+
test_utils_1.assert.isEqualDeep(fakeMkdir_1.callsToMkdir[2], {
|
|
105
|
+
path: `src/testDoubles/${this.interfaceName}`,
|
|
106
|
+
options: { recursive: true },
|
|
107
|
+
}, 'Did not create fake save dir!');
|
|
104
108
|
}
|
|
105
109
|
static async createImplCreatesImplAutomodule() {
|
|
106
110
|
await this.runCreateImpl();
|
|
107
111
|
test_utils_1.assert.isEqualDeep(meta_node_1.FakeAutomodule.callsToConstructor[0], {
|
|
108
|
-
testSaveDir: this.
|
|
109
|
-
moduleSaveDir: this.
|
|
110
|
-
fakeSaveDir: this.
|
|
112
|
+
testSaveDir: this.implTestSaveDir,
|
|
113
|
+
moduleSaveDir: this.implModuleSaveDir,
|
|
114
|
+
fakeSaveDir: this.implFakeSaveDir,
|
|
111
115
|
interfaceName: this.interfaceName,
|
|
112
116
|
implName: this.implName,
|
|
113
117
|
}, 'Did not create ImplAutomodule with expected options!');
|
|
@@ -150,7 +154,6 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
150
154
|
test_utils_1.assert.isEqual(meta_node_1.FakeAutopackage.numCallsToRun, 0, 'Should not have called run on Autopackage!');
|
|
151
155
|
}
|
|
152
156
|
static async createPackageCreatesNpmAutopackage() {
|
|
153
|
-
this.setFakePromptResponsesForCreatePackage();
|
|
154
157
|
await this.runCreatePackage();
|
|
155
158
|
test_utils_1.assert.isEqualDeep(meta_node_1.FakeAutopackage.callsToConstructor[0], {
|
|
156
159
|
name: this.packageName,
|
|
@@ -170,14 +173,80 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
170
173
|
await this.runCreatePackage();
|
|
171
174
|
test_utils_1.assert.isEqual(meta_node_1.FakeAutopackage.numCallsToRun, 1, 'Did not call run on Autopackage!');
|
|
172
175
|
}
|
|
176
|
+
static async createUiCreatesInstance() {
|
|
177
|
+
const instance = await this.runCreateUi();
|
|
178
|
+
test_utils_1.assert.isTruthy(instance, `Failed to create instance for ${this.createUiCommand}!`);
|
|
179
|
+
}
|
|
180
|
+
static async createUiPromptsUserForInput() {
|
|
181
|
+
await this.runCreateUi();
|
|
182
|
+
test_utils_1.assert.isEqualDeep(fakePrompts_1.callsToFakePrompts[0], [
|
|
183
|
+
{
|
|
184
|
+
type: 'text',
|
|
185
|
+
name: 'componentName',
|
|
186
|
+
message: this.componentNameMessage,
|
|
187
|
+
},
|
|
188
|
+
], 'Did not prompt user for expected input!');
|
|
189
|
+
}
|
|
190
|
+
static async createUiDoesNotContinueIfPromptsIsInterrupted() {
|
|
191
|
+
await this.runCreateUi({
|
|
192
|
+
componentName: '',
|
|
193
|
+
});
|
|
194
|
+
test_utils_1.assert.isEqual(meta_node_1.FakeAutomodule.numCallsToRun, 0, 'Should not have called run on UiAutomodule!');
|
|
195
|
+
}
|
|
196
|
+
static async createUiCreatesTestSaveDirIfNotExists() {
|
|
197
|
+
await this.runCreateUi();
|
|
198
|
+
test_utils_1.assert.isEqualDeep(fakeMkdir_1.callsToMkdir[0], { path: this.uiTestSaveDir, options: { recursive: true } }, 'Did not create test save dir!');
|
|
199
|
+
}
|
|
200
|
+
static async createUiCreatesModuleSaveDirIfNotExists() {
|
|
201
|
+
await this.runCreateUi();
|
|
202
|
+
test_utils_1.assert.isEqualDeep(fakeMkdir_1.callsToMkdir[1], { path: this.uiModuleSaveDir, options: { recursive: true } }, 'Did not create module save dir!');
|
|
203
|
+
}
|
|
204
|
+
static async createUiCreatesFakeSaveDirIfNotExists() {
|
|
205
|
+
await this.runCreateUi();
|
|
206
|
+
test_utils_1.assert.isEqualDeep(fakeMkdir_1.callsToMkdir[2], {
|
|
207
|
+
path: this.uiFakeSaveDir,
|
|
208
|
+
options: { recursive: true },
|
|
209
|
+
}, 'Did not create fake save dir!');
|
|
210
|
+
}
|
|
211
|
+
static async createUiCreatesUiAutomodule() {
|
|
212
|
+
await this.runCreateUi();
|
|
213
|
+
test_utils_1.assert.isEqualDeep(meta_node_1.FakeAutomodule.callsToConstructor[0], {
|
|
214
|
+
testSaveDir: this.uiTestSaveDir,
|
|
215
|
+
moduleSaveDir: this.uiModuleSaveDir,
|
|
216
|
+
fakeSaveDir: this.uiFakeSaveDir,
|
|
217
|
+
componentName: this.componentName,
|
|
218
|
+
}, 'Did not create UiAutomodule with expected options!');
|
|
219
|
+
}
|
|
220
|
+
static async createUiRunsUiAutomodule() {
|
|
221
|
+
await this.runCreateUi();
|
|
222
|
+
test_utils_1.assert.isEqual(meta_node_1.FakeAutomodule.numCallsToRun, 1, 'Did not call run on UiAutomodule!');
|
|
223
|
+
}
|
|
224
|
+
static async runCreateUi(responses) {
|
|
225
|
+
(0, fakePrompts_1.setFakeResponses)({
|
|
226
|
+
componentName: this.componentName,
|
|
227
|
+
...responses,
|
|
228
|
+
});
|
|
229
|
+
const instance = this.CliCommandRunner([this.createUiCommand]);
|
|
230
|
+
await instance.run();
|
|
231
|
+
return instance;
|
|
232
|
+
}
|
|
173
233
|
static async runCreateImpl(responses) {
|
|
174
|
-
|
|
234
|
+
(0, fakePrompts_1.setFakeResponses)({
|
|
235
|
+
interfaceName: this.interfaceName,
|
|
236
|
+
implName: this.implName,
|
|
237
|
+
...responses,
|
|
238
|
+
});
|
|
175
239
|
const instance = this.CliCommandRunner([this.createImplCommand]);
|
|
176
240
|
await instance.run();
|
|
177
241
|
return instance;
|
|
178
242
|
}
|
|
179
243
|
static async runCreatePackage(responses) {
|
|
180
|
-
|
|
244
|
+
(0, fakePrompts_1.setFakeResponses)({
|
|
245
|
+
packageName: this.packageName,
|
|
246
|
+
description: this.description,
|
|
247
|
+
keywords: this.keywords,
|
|
248
|
+
...responses,
|
|
249
|
+
});
|
|
181
250
|
const instance = this.CliCommandRunner([this.createPackageCommand]);
|
|
182
251
|
await instance.run();
|
|
183
252
|
return instance;
|
|
@@ -193,58 +262,55 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
193
262
|
.map((v) => v.trim())
|
|
194
263
|
.filter(Boolean);
|
|
195
264
|
}
|
|
196
|
-
static get
|
|
265
|
+
static get implFakeSaveDir() {
|
|
197
266
|
return `src/testDoubles/${this.interfaceName}`;
|
|
198
267
|
}
|
|
199
|
-
static
|
|
200
|
-
|
|
201
|
-
(0, fakeMkdir_1.resetCallsToMkdir)();
|
|
268
|
+
static get uiFakeSaveDir() {
|
|
269
|
+
return `src/testDoubles/${this.componentName}`;
|
|
202
270
|
}
|
|
203
|
-
static
|
|
271
|
+
static setFakeImplAutomodule() {
|
|
204
272
|
meta_node_1.ImplAutomodule.Class = meta_node_1.FakeAutomodule;
|
|
205
273
|
meta_node_1.FakeAutomodule.resetTestDouble();
|
|
206
274
|
}
|
|
275
|
+
static setFakeUiAutomodule() {
|
|
276
|
+
meta_node_1.UiAutomodule.Class = meta_node_1.FakeAutomodule;
|
|
277
|
+
meta_node_1.FakeAutomodule.resetTestDouble();
|
|
278
|
+
}
|
|
207
279
|
static setFakeAutopackage() {
|
|
208
280
|
meta_node_1.NpmAutopackage.Class = meta_node_1.FakeAutopackage;
|
|
209
281
|
meta_node_1.FakeAutopackage.resetTestDouble();
|
|
210
282
|
}
|
|
283
|
+
static setFakeMkdir() {
|
|
284
|
+
CliCommandRunner_1.default.mkdir = fakeMkdir_1.default;
|
|
285
|
+
(0, fakeMkdir_1.resetCallsToMkdir)();
|
|
286
|
+
}
|
|
211
287
|
static setFakePrompts() {
|
|
212
288
|
CliCommandRunner_1.default.prompts = fakePrompts_1.fakePrompts;
|
|
213
289
|
(0, fakePrompts_1.resetCallsToFakePrompts)();
|
|
214
290
|
}
|
|
215
|
-
static setFakeResponsesForCreateImpl(responses) {
|
|
216
|
-
(0, fakePrompts_1.setFakeResponses)({
|
|
217
|
-
interfaceName: this.interfaceName,
|
|
218
|
-
implName: this.implName,
|
|
219
|
-
...responses,
|
|
220
|
-
});
|
|
221
|
-
}
|
|
222
|
-
static setFakePromptResponsesForCreatePackage(responses) {
|
|
223
|
-
(0, fakePrompts_1.setFakeResponses)({
|
|
224
|
-
packageName: this.packageName,
|
|
225
|
-
description: this.description,
|
|
226
|
-
keywords: this.keywords,
|
|
227
|
-
...responses,
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
291
|
static CliCommandRunner(args) {
|
|
231
292
|
return CliCommandRunner_1.default.Create(args);
|
|
232
293
|
}
|
|
233
294
|
}
|
|
234
295
|
CliCommandRunnerTest.createImplCommand = 'create.impl';
|
|
235
|
-
CliCommandRunnerTest.createPackageCommand = 'create.package';
|
|
236
|
-
CliCommandRunnerTest.testSaveDir = 'src/__tests__/modules';
|
|
237
|
-
CliCommandRunnerTest.moduleSaveDir = 'src/modules';
|
|
238
296
|
CliCommandRunnerTest.interfaceName = (0, test_utils_1.generateId)();
|
|
239
297
|
CliCommandRunnerTest.implName = (0, test_utils_1.generateId)();
|
|
298
|
+
CliCommandRunnerTest.createPackageCommand = 'create.package';
|
|
240
299
|
CliCommandRunnerTest.packageName = (0, test_utils_1.generateId)();
|
|
241
300
|
CliCommandRunnerTest.description = (0, test_utils_1.generateId)();
|
|
242
301
|
CliCommandRunnerTest.keywords = [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()];
|
|
302
|
+
CliCommandRunnerTest.createUiCommand = 'create.ui';
|
|
303
|
+
CliCommandRunnerTest.componentName = (0, test_utils_1.generateId)();
|
|
243
304
|
CliCommandRunnerTest.githubToken = (0, test_utils_1.generateId)();
|
|
305
|
+
CliCommandRunnerTest.implTestSaveDir = 'src/__tests__/modules';
|
|
306
|
+
CliCommandRunnerTest.implModuleSaveDir = 'src/modules';
|
|
307
|
+
CliCommandRunnerTest.uiTestSaveDir = 'src/__tests__/ui';
|
|
308
|
+
CliCommandRunnerTest.uiModuleSaveDir = 'src/ui';
|
|
244
309
|
CliCommandRunnerTest.interfaceNameMessage = 'What should the interface be called? Example: YourInterface';
|
|
245
310
|
CliCommandRunnerTest.implNameMessage = 'What should the implementation class be called? Example: YourInterfaceImpl';
|
|
246
311
|
CliCommandRunnerTest.packageNameMessage = 'What should the package be called? Example: useful-package';
|
|
247
312
|
CliCommandRunnerTest.packageDescriptionMessage = 'What should the package description be? Example: A useful package.';
|
|
313
|
+
CliCommandRunnerTest.componentNameMessage = 'What should the component be called? Example: YourComponent';
|
|
248
314
|
exports.default = CliCommandRunnerTest;
|
|
249
315
|
__decorate([
|
|
250
316
|
(0, test_utils_1.test)()
|
|
@@ -288,4 +354,28 @@ __decorate([
|
|
|
288
354
|
__decorate([
|
|
289
355
|
(0, test_utils_1.test)()
|
|
290
356
|
], CliCommandRunnerTest, "createPackageRunsNpmAutopackage", null);
|
|
357
|
+
__decorate([
|
|
358
|
+
(0, test_utils_1.test)()
|
|
359
|
+
], CliCommandRunnerTest, "createUiCreatesInstance", null);
|
|
360
|
+
__decorate([
|
|
361
|
+
(0, test_utils_1.test)()
|
|
362
|
+
], CliCommandRunnerTest, "createUiPromptsUserForInput", null);
|
|
363
|
+
__decorate([
|
|
364
|
+
(0, test_utils_1.test)()
|
|
365
|
+
], CliCommandRunnerTest, "createUiDoesNotContinueIfPromptsIsInterrupted", null);
|
|
366
|
+
__decorate([
|
|
367
|
+
(0, test_utils_1.test)()
|
|
368
|
+
], CliCommandRunnerTest, "createUiCreatesTestSaveDirIfNotExists", null);
|
|
369
|
+
__decorate([
|
|
370
|
+
(0, test_utils_1.test)()
|
|
371
|
+
], CliCommandRunnerTest, "createUiCreatesModuleSaveDirIfNotExists", null);
|
|
372
|
+
__decorate([
|
|
373
|
+
(0, test_utils_1.test)()
|
|
374
|
+
], CliCommandRunnerTest, "createUiCreatesFakeSaveDirIfNotExists", null);
|
|
375
|
+
__decorate([
|
|
376
|
+
(0, test_utils_1.test)()
|
|
377
|
+
], CliCommandRunnerTest, "createUiCreatesUiAutomodule", null);
|
|
378
|
+
__decorate([
|
|
379
|
+
(0, test_utils_1.test)()
|
|
380
|
+
], CliCommandRunnerTest, "createUiRunsUiAutomodule", null);
|
|
291
381
|
//# sourceMappingURL=CliCommandRunner.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliCommandRunner.test.js","sourceRoot":"","sources":["../../../src/__tests__/modules/CliCommandRunner.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,4CAAmB;AACnB,gDAAuB;AACvB,qEAI+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"CliCommandRunner.test.js","sourceRoot":"","sources":["../../../src/__tests__/modules/CliCommandRunner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,8 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
12
12
|
private packageName;
|
|
13
13
|
private description;
|
|
14
14
|
private keywords;
|
|
15
|
+
private readonly createUiCommand;
|
|
16
|
+
private componentName;
|
|
15
17
|
private readonly supportedCommands;
|
|
16
18
|
protected constructor(args: string[]);
|
|
17
19
|
static Create(args: string[]): CommandRunner;
|
|
@@ -20,14 +22,15 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
20
22
|
private get commandIsSupported();
|
|
21
23
|
private get command();
|
|
22
24
|
private runCommand;
|
|
23
|
-
private
|
|
24
|
-
private get isCreatePackageCommand();
|
|
25
|
-
private createImpl;
|
|
25
|
+
private createImplModule;
|
|
26
26
|
private promptForAutomodule;
|
|
27
27
|
private readonly interfaceNameMessage;
|
|
28
28
|
private readonly implNameMessage;
|
|
29
29
|
private get userInputExistsForCreateImpl();
|
|
30
|
-
private
|
|
30
|
+
private makeRequiredImplDirectories;
|
|
31
|
+
private readonly implTestSaveDir;
|
|
32
|
+
private readonly implModuleSaveDir;
|
|
33
|
+
private get implFakeSaveDir();
|
|
31
34
|
private createPackage;
|
|
32
35
|
private promptForAutopackage;
|
|
33
36
|
private readonly packageNameMessage;
|
|
@@ -35,13 +38,18 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
35
38
|
private readonly keywordsMessage;
|
|
36
39
|
private splitOnCommaOrWhitespace;
|
|
37
40
|
private get userInputExistsForCreatePackage();
|
|
41
|
+
private createUiModule;
|
|
42
|
+
private promptForUimodule;
|
|
43
|
+
private readonly componentNameMessage;
|
|
44
|
+
private makeRequiredUiDirectories;
|
|
38
45
|
private expandHomeDir;
|
|
39
|
-
private readonly
|
|
40
|
-
private readonly
|
|
41
|
-
private get
|
|
46
|
+
private readonly uiTestSaveDir;
|
|
47
|
+
private readonly uiModuleSaveDir;
|
|
48
|
+
private get uiFakeSaveDir();
|
|
42
49
|
private get prompts();
|
|
43
50
|
private get mkdir();
|
|
44
51
|
private ImplAutomodule;
|
|
52
|
+
private UiAutomodule;
|
|
45
53
|
private NpmAutopackage;
|
|
46
54
|
}
|
|
47
55
|
export interface CommandRunner {
|
|
@@ -12,17 +12,22 @@ class CliCommandRunner {
|
|
|
12
12
|
constructor(args) {
|
|
13
13
|
this.createImplCommand = 'create.impl';
|
|
14
14
|
this.createPackageCommand = 'create.package';
|
|
15
|
+
this.createUiCommand = 'create.ui';
|
|
15
16
|
this.supportedCommands = [
|
|
16
17
|
this.createImplCommand,
|
|
17
18
|
this.createPackageCommand,
|
|
19
|
+
this.createUiCommand,
|
|
18
20
|
];
|
|
19
21
|
this.interfaceNameMessage = 'What should the interface be called? Example: YourInterface';
|
|
20
22
|
this.implNameMessage = 'What should the implementation class be called? Example: YourInterfaceImpl';
|
|
23
|
+
this.implTestSaveDir = 'src/__tests__/modules';
|
|
24
|
+
this.implModuleSaveDir = 'src/modules';
|
|
21
25
|
this.packageNameMessage = 'What should the package be called? Example: useful-package';
|
|
22
26
|
this.descriptionMessage = 'What should the package description be? Example: A useful package.';
|
|
23
27
|
this.keywordsMessage = 'Enter keywords (comma or space separated, lowercase, optional):';
|
|
24
|
-
this.
|
|
25
|
-
this.
|
|
28
|
+
this.componentNameMessage = 'What should the component be called? Example: YourComponent';
|
|
29
|
+
this.uiTestSaveDir = 'src/__tests__/ui';
|
|
30
|
+
this.uiModuleSaveDir = 'src/ui';
|
|
26
31
|
this.args = args;
|
|
27
32
|
}
|
|
28
33
|
static Create(args) {
|
|
@@ -44,27 +49,26 @@ class CliCommandRunner {
|
|
|
44
49
|
return this.args[0];
|
|
45
50
|
}
|
|
46
51
|
async runCommand() {
|
|
47
|
-
|
|
48
|
-
|
|
52
|
+
switch (this.command) {
|
|
53
|
+
case this.createImplCommand:
|
|
54
|
+
await this.createImplModule();
|
|
55
|
+
break;
|
|
56
|
+
case this.createPackageCommand:
|
|
57
|
+
await this.createPackage();
|
|
58
|
+
break;
|
|
59
|
+
case this.createUiCommand:
|
|
60
|
+
await this.createUiModule();
|
|
61
|
+
break;
|
|
49
62
|
}
|
|
50
|
-
else if (this.isCreatePackageCommand) {
|
|
51
|
-
await this.createPackage();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
get isCreateImplCommand() {
|
|
55
|
-
return this.command === this.createImplCommand;
|
|
56
|
-
}
|
|
57
|
-
get isCreatePackageCommand() {
|
|
58
|
-
return this.command === this.createPackageCommand;
|
|
59
63
|
}
|
|
60
|
-
async
|
|
64
|
+
async createImplModule() {
|
|
61
65
|
const { interfaceName, implName } = await this.promptForAutomodule();
|
|
62
66
|
this.interfaceName = interfaceName;
|
|
63
67
|
this.implName = implName;
|
|
64
68
|
if (!this.userInputExistsForCreateImpl) {
|
|
65
69
|
return;
|
|
66
70
|
}
|
|
67
|
-
await this.
|
|
71
|
+
await this.makeRequiredImplDirectories();
|
|
68
72
|
const automodule = this.ImplAutomodule();
|
|
69
73
|
await automodule.run();
|
|
70
74
|
}
|
|
@@ -85,10 +89,13 @@ class CliCommandRunner {
|
|
|
85
89
|
get userInputExistsForCreateImpl() {
|
|
86
90
|
return this.interfaceName && this.implName;
|
|
87
91
|
}
|
|
88
|
-
async
|
|
89
|
-
await this.mkdir(this.
|
|
90
|
-
await this.mkdir(this.
|
|
91
|
-
await this.mkdir(this.
|
|
92
|
+
async makeRequiredImplDirectories() {
|
|
93
|
+
await this.mkdir(this.implTestSaveDir, { recursive: true });
|
|
94
|
+
await this.mkdir(this.implModuleSaveDir, { recursive: true });
|
|
95
|
+
await this.mkdir(this.implFakeSaveDir, { recursive: true });
|
|
96
|
+
}
|
|
97
|
+
get implFakeSaveDir() {
|
|
98
|
+
return `src/testDoubles/${this.interfaceName}`;
|
|
92
99
|
}
|
|
93
100
|
async createPackage() {
|
|
94
101
|
const { packageName, description, keywords } = await this.promptForAutopackage();
|
|
@@ -131,13 +138,37 @@ class CliCommandRunner {
|
|
|
131
138
|
get userInputExistsForCreatePackage() {
|
|
132
139
|
return this.packageName && this.description;
|
|
133
140
|
}
|
|
141
|
+
async createUiModule() {
|
|
142
|
+
const { componentName } = await this.promptForUimodule();
|
|
143
|
+
this.componentName = componentName;
|
|
144
|
+
if (!this.componentName) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
await this.makeRequiredUiDirectories();
|
|
148
|
+
const instance = this.UiAutomodule();
|
|
149
|
+
await instance.run();
|
|
150
|
+
}
|
|
151
|
+
async promptForUimodule() {
|
|
152
|
+
return await this.prompts([
|
|
153
|
+
{
|
|
154
|
+
type: 'text',
|
|
155
|
+
name: 'componentName',
|
|
156
|
+
message: this.componentNameMessage,
|
|
157
|
+
},
|
|
158
|
+
]);
|
|
159
|
+
}
|
|
160
|
+
async makeRequiredUiDirectories() {
|
|
161
|
+
await this.mkdir(this.uiTestSaveDir, { recursive: true });
|
|
162
|
+
await this.mkdir(this.uiModuleSaveDir, { recursive: true });
|
|
163
|
+
await this.mkdir(this.uiFakeSaveDir, { recursive: true });
|
|
164
|
+
}
|
|
134
165
|
expandHomeDir(inputPath) {
|
|
135
166
|
return inputPath.startsWith('~')
|
|
136
167
|
? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
|
|
137
168
|
: inputPath;
|
|
138
169
|
}
|
|
139
|
-
get
|
|
140
|
-
return `src/testDoubles/${this.
|
|
170
|
+
get uiFakeSaveDir() {
|
|
171
|
+
return `src/testDoubles/${this.componentName}`;
|
|
141
172
|
}
|
|
142
173
|
get prompts() {
|
|
143
174
|
return CliCommandRunner.prompts;
|
|
@@ -147,13 +178,21 @@ class CliCommandRunner {
|
|
|
147
178
|
}
|
|
148
179
|
ImplAutomodule() {
|
|
149
180
|
return meta_node_1.ImplAutomodule.Create({
|
|
150
|
-
testSaveDir: this.
|
|
151
|
-
moduleSaveDir: this.
|
|
152
|
-
fakeSaveDir: this.
|
|
181
|
+
testSaveDir: this.implTestSaveDir,
|
|
182
|
+
moduleSaveDir: this.implModuleSaveDir,
|
|
183
|
+
fakeSaveDir: this.implFakeSaveDir,
|
|
153
184
|
interfaceName: this.interfaceName,
|
|
154
185
|
implName: this.implName,
|
|
155
186
|
});
|
|
156
187
|
}
|
|
188
|
+
UiAutomodule() {
|
|
189
|
+
return meta_node_1.UiAutomodule.Create({
|
|
190
|
+
testSaveDir: this.uiTestSaveDir,
|
|
191
|
+
moduleSaveDir: this.uiModuleSaveDir,
|
|
192
|
+
fakeSaveDir: this.uiFakeSaveDir,
|
|
193
|
+
componentName: this.componentName,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
157
196
|
NpmAutopackage() {
|
|
158
197
|
return meta_node_1.NpmAutopackage.Create({
|
|
159
198
|
name: this.packageName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliCommandRunner.js","sourceRoot":"","sources":["../../src/modules/CliCommandRunner.ts"],"names":[],"mappings":";;;;;AAAA,0CAAmC;AACnC,4CAAmB;AACnB,gDAAuB;AACvB,
|
|
1
|
+
{"version":3,"file":"CliCommandRunner.js","sourceRoot":"","sources":["../../src/modules/CliCommandRunner.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
FakeAutopackage,
|
|
12
12
|
ImplAutomodule,
|
|
13
13
|
NpmAutopackage,
|
|
14
|
+
UiAutomodule,
|
|
14
15
|
} from '@neurodevs/meta-node'
|
|
15
16
|
import prompts from 'prompts'
|
|
16
17
|
import CliCommandRunner from '../../modules/CliCommandRunner'
|
|
@@ -27,19 +28,27 @@ import {
|
|
|
27
28
|
|
|
28
29
|
export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
29
30
|
private static readonly createImplCommand = 'create.impl'
|
|
31
|
+
private static readonly interfaceName = generateId()
|
|
32
|
+
private static readonly implName = generateId()
|
|
33
|
+
|
|
30
34
|
private static readonly createPackageCommand = 'create.package'
|
|
35
|
+
private static readonly packageName = generateId()
|
|
36
|
+
private static readonly description = generateId()
|
|
37
|
+
private static readonly keywords = [generateId(), generateId()]
|
|
31
38
|
|
|
32
|
-
private static readonly
|
|
39
|
+
private static readonly createUiCommand = 'create.ui'
|
|
40
|
+
private static readonly componentName = generateId()
|
|
33
41
|
|
|
34
|
-
private static readonly
|
|
42
|
+
private static readonly githubToken = generateId()
|
|
35
43
|
|
|
36
44
|
protected static async beforeEach() {
|
|
37
45
|
await super.beforeEach()
|
|
38
46
|
|
|
47
|
+
this.setFakeImplAutomodule()
|
|
48
|
+
this.setFakeUiAutomodule()
|
|
49
|
+
this.setFakeAutopackage()
|
|
39
50
|
this.setFakePrompts()
|
|
40
51
|
this.setFakeMkdir()
|
|
41
|
-
this.setFakeAutomodule()
|
|
42
|
-
this.setFakeAutopackage()
|
|
43
52
|
|
|
44
53
|
process.env.GITHUB_TOKEN = this.githubToken
|
|
45
54
|
}
|
|
@@ -112,7 +121,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
112
121
|
|
|
113
122
|
assert.isEqualDeep(
|
|
114
123
|
callsToMkdir[0],
|
|
115
|
-
{ path: this.
|
|
124
|
+
{ path: this.implTestSaveDir, options: { recursive: true } },
|
|
116
125
|
'Did not create test save dir!'
|
|
117
126
|
)
|
|
118
127
|
}
|
|
@@ -123,7 +132,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
123
132
|
|
|
124
133
|
assert.isEqualDeep(
|
|
125
134
|
callsToMkdir[1],
|
|
126
|
-
{ path: this.
|
|
135
|
+
{ path: this.implModuleSaveDir, options: { recursive: true } },
|
|
127
136
|
'Did not create module save dir!'
|
|
128
137
|
)
|
|
129
138
|
}
|
|
@@ -134,7 +143,10 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
134
143
|
|
|
135
144
|
assert.isEqualDeep(
|
|
136
145
|
callsToMkdir[2],
|
|
137
|
-
{
|
|
146
|
+
{
|
|
147
|
+
path: `src/testDoubles/${this.interfaceName}`,
|
|
148
|
+
options: { recursive: true },
|
|
149
|
+
},
|
|
138
150
|
'Did not create fake save dir!'
|
|
139
151
|
)
|
|
140
152
|
}
|
|
@@ -146,9 +158,9 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
146
158
|
assert.isEqualDeep(
|
|
147
159
|
FakeAutomodule.callsToConstructor[0],
|
|
148
160
|
{
|
|
149
|
-
testSaveDir: this.
|
|
150
|
-
moduleSaveDir: this.
|
|
151
|
-
fakeSaveDir: this.
|
|
161
|
+
testSaveDir: this.implTestSaveDir,
|
|
162
|
+
moduleSaveDir: this.implModuleSaveDir,
|
|
163
|
+
fakeSaveDir: this.implFakeSaveDir,
|
|
152
164
|
interfaceName: this.interfaceName,
|
|
153
165
|
implName: this.implName,
|
|
154
166
|
},
|
|
@@ -224,8 +236,6 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
224
236
|
|
|
225
237
|
@test()
|
|
226
238
|
protected static async createPackageCreatesNpmAutopackage() {
|
|
227
|
-
this.setFakePromptResponsesForCreatePackage()
|
|
228
|
-
|
|
229
239
|
await this.runCreatePackage()
|
|
230
240
|
|
|
231
241
|
assert.isEqualDeep(
|
|
@@ -259,8 +269,127 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
259
269
|
)
|
|
260
270
|
}
|
|
261
271
|
|
|
272
|
+
@test()
|
|
273
|
+
protected static async createUiCreatesInstance() {
|
|
274
|
+
const instance = await this.runCreateUi()
|
|
275
|
+
|
|
276
|
+
assert.isTruthy(
|
|
277
|
+
instance,
|
|
278
|
+
`Failed to create instance for ${this.createUiCommand}!`
|
|
279
|
+
)
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
@test()
|
|
283
|
+
protected static async createUiPromptsUserForInput() {
|
|
284
|
+
await this.runCreateUi()
|
|
285
|
+
|
|
286
|
+
assert.isEqualDeep(
|
|
287
|
+
callsToFakePrompts[0],
|
|
288
|
+
[
|
|
289
|
+
{
|
|
290
|
+
type: 'text',
|
|
291
|
+
name: 'componentName',
|
|
292
|
+
message: this.componentNameMessage,
|
|
293
|
+
},
|
|
294
|
+
],
|
|
295
|
+
'Did not prompt user for expected input!'
|
|
296
|
+
)
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
@test()
|
|
300
|
+
protected static async createUiDoesNotContinueIfPromptsIsInterrupted() {
|
|
301
|
+
await this.runCreateUi({
|
|
302
|
+
componentName: '',
|
|
303
|
+
})
|
|
304
|
+
|
|
305
|
+
assert.isEqual(
|
|
306
|
+
FakeAutomodule.numCallsToRun,
|
|
307
|
+
0,
|
|
308
|
+
'Should not have called run on UiAutomodule!'
|
|
309
|
+
)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
@test()
|
|
313
|
+
protected static async createUiCreatesTestSaveDirIfNotExists() {
|
|
314
|
+
await this.runCreateUi()
|
|
315
|
+
|
|
316
|
+
assert.isEqualDeep(
|
|
317
|
+
callsToMkdir[0],
|
|
318
|
+
{ path: this.uiTestSaveDir, options: { recursive: true } },
|
|
319
|
+
'Did not create test save dir!'
|
|
320
|
+
)
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
@test()
|
|
324
|
+
protected static async createUiCreatesModuleSaveDirIfNotExists() {
|
|
325
|
+
await this.runCreateUi()
|
|
326
|
+
|
|
327
|
+
assert.isEqualDeep(
|
|
328
|
+
callsToMkdir[1],
|
|
329
|
+
{ path: this.uiModuleSaveDir, options: { recursive: true } },
|
|
330
|
+
'Did not create module save dir!'
|
|
331
|
+
)
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
@test()
|
|
335
|
+
protected static async createUiCreatesFakeSaveDirIfNotExists() {
|
|
336
|
+
await this.runCreateUi()
|
|
337
|
+
|
|
338
|
+
assert.isEqualDeep(
|
|
339
|
+
callsToMkdir[2],
|
|
340
|
+
{
|
|
341
|
+
path: this.uiFakeSaveDir,
|
|
342
|
+
options: { recursive: true },
|
|
343
|
+
},
|
|
344
|
+
'Did not create fake save dir!'
|
|
345
|
+
)
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
@test()
|
|
349
|
+
protected static async createUiCreatesUiAutomodule() {
|
|
350
|
+
await this.runCreateUi()
|
|
351
|
+
|
|
352
|
+
assert.isEqualDeep(
|
|
353
|
+
FakeAutomodule.callsToConstructor[0],
|
|
354
|
+
{
|
|
355
|
+
testSaveDir: this.uiTestSaveDir,
|
|
356
|
+
moduleSaveDir: this.uiModuleSaveDir,
|
|
357
|
+
fakeSaveDir: this.uiFakeSaveDir,
|
|
358
|
+
componentName: this.componentName,
|
|
359
|
+
},
|
|
360
|
+
'Did not create UiAutomodule with expected options!'
|
|
361
|
+
)
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
@test()
|
|
365
|
+
protected static async createUiRunsUiAutomodule() {
|
|
366
|
+
await this.runCreateUi()
|
|
367
|
+
|
|
368
|
+
assert.isEqual(
|
|
369
|
+
FakeAutomodule.numCallsToRun,
|
|
370
|
+
1,
|
|
371
|
+
'Did not call run on UiAutomodule!'
|
|
372
|
+
)
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
private static async runCreateUi(responses?: Record<string, string>) {
|
|
376
|
+
setFakeResponses({
|
|
377
|
+
componentName: this.componentName,
|
|
378
|
+
...responses,
|
|
379
|
+
})
|
|
380
|
+
|
|
381
|
+
const instance = this.CliCommandRunner([this.createUiCommand])
|
|
382
|
+
await instance.run()
|
|
383
|
+
|
|
384
|
+
return instance
|
|
385
|
+
}
|
|
386
|
+
|
|
262
387
|
private static async runCreateImpl(responses?: Record<string, string>) {
|
|
263
|
-
|
|
388
|
+
setFakeResponses({
|
|
389
|
+
interfaceName: this.interfaceName,
|
|
390
|
+
implName: this.implName,
|
|
391
|
+
...responses,
|
|
392
|
+
})
|
|
264
393
|
|
|
265
394
|
const instance = this.CliCommandRunner([this.createImplCommand])
|
|
266
395
|
await instance.run()
|
|
@@ -269,7 +398,12 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
269
398
|
}
|
|
270
399
|
|
|
271
400
|
private static async runCreatePackage(responses?: Record<string, string>) {
|
|
272
|
-
|
|
401
|
+
setFakeResponses({
|
|
402
|
+
packageName: this.packageName,
|
|
403
|
+
description: this.description,
|
|
404
|
+
keywords: this.keywords,
|
|
405
|
+
...responses,
|
|
406
|
+
})
|
|
273
407
|
|
|
274
408
|
const instance = this.CliCommandRunner([this.createPackageCommand])
|
|
275
409
|
await instance.run()
|
|
@@ -290,58 +424,45 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
290
424
|
.filter(Boolean)
|
|
291
425
|
}
|
|
292
426
|
|
|
293
|
-
private static
|
|
427
|
+
private static readonly implTestSaveDir = 'src/__tests__/modules'
|
|
428
|
+
private static readonly implModuleSaveDir = 'src/modules'
|
|
429
|
+
|
|
430
|
+
private static get implFakeSaveDir() {
|
|
294
431
|
return `src/testDoubles/${this.interfaceName}`
|
|
295
432
|
}
|
|
296
433
|
|
|
297
|
-
private static
|
|
298
|
-
|
|
299
|
-
|
|
434
|
+
private static readonly uiTestSaveDir = 'src/__tests__/ui'
|
|
435
|
+
private static readonly uiModuleSaveDir = 'src/ui'
|
|
436
|
+
|
|
437
|
+
private static get uiFakeSaveDir() {
|
|
438
|
+
return `src/testDoubles/${this.componentName}`
|
|
300
439
|
}
|
|
301
440
|
|
|
302
|
-
private static
|
|
441
|
+
private static setFakeImplAutomodule() {
|
|
303
442
|
ImplAutomodule.Class = FakeAutomodule
|
|
304
443
|
FakeAutomodule.resetTestDouble()
|
|
305
444
|
}
|
|
306
445
|
|
|
446
|
+
private static setFakeUiAutomodule() {
|
|
447
|
+
UiAutomodule.Class = FakeAutomodule
|
|
448
|
+
FakeAutomodule.resetTestDouble()
|
|
449
|
+
}
|
|
450
|
+
|
|
307
451
|
private static setFakeAutopackage() {
|
|
308
452
|
NpmAutopackage.Class = FakeAutopackage
|
|
309
453
|
FakeAutopackage.resetTestDouble()
|
|
310
454
|
}
|
|
311
455
|
|
|
456
|
+
private static setFakeMkdir() {
|
|
457
|
+
CliCommandRunner.mkdir = fakeMkdir as unknown as typeof mkdir
|
|
458
|
+
resetCallsToMkdir()
|
|
459
|
+
}
|
|
460
|
+
|
|
312
461
|
private static setFakePrompts() {
|
|
313
462
|
CliCommandRunner.prompts = fakePrompts as unknown as typeof prompts
|
|
314
463
|
resetCallsToFakePrompts()
|
|
315
464
|
}
|
|
316
465
|
|
|
317
|
-
private static setFakeResponsesForCreateImpl(
|
|
318
|
-
responses?: Record<string, string>
|
|
319
|
-
) {
|
|
320
|
-
setFakeResponses({
|
|
321
|
-
interfaceName: this.interfaceName,
|
|
322
|
-
implName: this.implName,
|
|
323
|
-
...responses,
|
|
324
|
-
})
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
private static setFakePromptResponsesForCreatePackage(
|
|
328
|
-
responses?: Record<string, string>
|
|
329
|
-
) {
|
|
330
|
-
setFakeResponses({
|
|
331
|
-
packageName: this.packageName,
|
|
332
|
-
description: this.description,
|
|
333
|
-
keywords: this.keywords,
|
|
334
|
-
...responses,
|
|
335
|
-
})
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
private static readonly interfaceName = generateId()
|
|
339
|
-
private static readonly implName = generateId()
|
|
340
|
-
private static readonly packageName = generateId()
|
|
341
|
-
private static readonly description = generateId()
|
|
342
|
-
private static readonly keywords = [generateId(), generateId()]
|
|
343
|
-
private static readonly githubToken = generateId()
|
|
344
|
-
|
|
345
466
|
private static readonly interfaceNameMessage =
|
|
346
467
|
'What should the interface be called? Example: YourInterface'
|
|
347
468
|
|
|
@@ -354,6 +475,9 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
354
475
|
private static readonly packageDescriptionMessage =
|
|
355
476
|
'What should the package description be? Example: A useful package.'
|
|
356
477
|
|
|
478
|
+
private static readonly componentNameMessage =
|
|
479
|
+
'What should the component be called? Example: YourComponent'
|
|
480
|
+
|
|
357
481
|
private static CliCommandRunner(args: string[]) {
|
|
358
482
|
return CliCommandRunner.Create(args)
|
|
359
483
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { mkdir } from 'fs/promises'
|
|
2
2
|
import os from 'os'
|
|
3
3
|
import path from 'path'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
ImplAutomodule,
|
|
6
|
+
NpmAutopackage,
|
|
7
|
+
UiAutomodule,
|
|
8
|
+
} from '@neurodevs/meta-node'
|
|
5
9
|
import prompts from 'prompts'
|
|
6
10
|
|
|
7
11
|
export default class CliCommandRunner implements CommandRunner {
|
|
@@ -20,9 +24,13 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
20
24
|
private description!: string
|
|
21
25
|
private keywords!: string[]
|
|
22
26
|
|
|
27
|
+
private readonly createUiCommand = 'create.ui'
|
|
28
|
+
private componentName!: string
|
|
29
|
+
|
|
23
30
|
private readonly supportedCommands = [
|
|
24
31
|
this.createImplCommand,
|
|
25
32
|
this.createPackageCommand,
|
|
33
|
+
this.createUiCommand,
|
|
26
34
|
]
|
|
27
35
|
|
|
28
36
|
protected constructor(args: string[]) {
|
|
@@ -53,22 +61,20 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
53
61
|
}
|
|
54
62
|
|
|
55
63
|
private async runCommand() {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
switch (this.command) {
|
|
65
|
+
case this.createImplCommand:
|
|
66
|
+
await this.createImplModule()
|
|
67
|
+
break
|
|
68
|
+
case this.createPackageCommand:
|
|
69
|
+
await this.createPackage()
|
|
70
|
+
break
|
|
71
|
+
case this.createUiCommand:
|
|
72
|
+
await this.createUiModule()
|
|
73
|
+
break
|
|
60
74
|
}
|
|
61
75
|
}
|
|
62
76
|
|
|
63
|
-
private
|
|
64
|
-
return this.command === this.createImplCommand
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
private get isCreatePackageCommand() {
|
|
68
|
-
return this.command === this.createPackageCommand
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
private async createImpl() {
|
|
77
|
+
private async createImplModule() {
|
|
72
78
|
const { interfaceName, implName } = await this.promptForAutomodule()
|
|
73
79
|
|
|
74
80
|
this.interfaceName = interfaceName
|
|
@@ -78,7 +84,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
78
84
|
return
|
|
79
85
|
}
|
|
80
86
|
|
|
81
|
-
await this.
|
|
87
|
+
await this.makeRequiredImplDirectories()
|
|
82
88
|
|
|
83
89
|
const automodule = this.ImplAutomodule()
|
|
84
90
|
await automodule.run()
|
|
@@ -109,10 +115,17 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
109
115
|
return this.interfaceName && this.implName
|
|
110
116
|
}
|
|
111
117
|
|
|
112
|
-
private async
|
|
113
|
-
await this.mkdir(this.
|
|
114
|
-
await this.mkdir(this.
|
|
115
|
-
await this.mkdir(this.
|
|
118
|
+
private async makeRequiredImplDirectories() {
|
|
119
|
+
await this.mkdir(this.implTestSaveDir, { recursive: true })
|
|
120
|
+
await this.mkdir(this.implModuleSaveDir, { recursive: true })
|
|
121
|
+
await this.mkdir(this.implFakeSaveDir, { recursive: true })
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
private readonly implTestSaveDir = 'src/__tests__/modules'
|
|
125
|
+
private readonly implModuleSaveDir = 'src/modules'
|
|
126
|
+
|
|
127
|
+
private get implFakeSaveDir() {
|
|
128
|
+
return `src/testDoubles/${this.interfaceName}`
|
|
116
129
|
}
|
|
117
130
|
|
|
118
131
|
private async createPackage() {
|
|
@@ -174,17 +187,51 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
174
187
|
return this.packageName && this.description
|
|
175
188
|
}
|
|
176
189
|
|
|
190
|
+
private async createUiModule() {
|
|
191
|
+
const { componentName } = await this.promptForUimodule()
|
|
192
|
+
|
|
193
|
+
this.componentName = componentName
|
|
194
|
+
|
|
195
|
+
if (!this.componentName) {
|
|
196
|
+
return
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
await this.makeRequiredUiDirectories()
|
|
200
|
+
|
|
201
|
+
const instance = this.UiAutomodule()
|
|
202
|
+
await instance.run()
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
private async promptForUimodule() {
|
|
206
|
+
return await this.prompts([
|
|
207
|
+
{
|
|
208
|
+
type: 'text',
|
|
209
|
+
name: 'componentName',
|
|
210
|
+
message: this.componentNameMessage,
|
|
211
|
+
},
|
|
212
|
+
])
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
private readonly componentNameMessage =
|
|
216
|
+
'What should the component be called? Example: YourComponent'
|
|
217
|
+
|
|
218
|
+
private async makeRequiredUiDirectories() {
|
|
219
|
+
await this.mkdir(this.uiTestSaveDir, { recursive: true })
|
|
220
|
+
await this.mkdir(this.uiModuleSaveDir, { recursive: true })
|
|
221
|
+
await this.mkdir(this.uiFakeSaveDir, { recursive: true })
|
|
222
|
+
}
|
|
223
|
+
|
|
177
224
|
private expandHomeDir(inputPath: string): string {
|
|
178
225
|
return inputPath.startsWith('~')
|
|
179
226
|
? path.join(os.homedir(), inputPath.slice(1))
|
|
180
227
|
: inputPath
|
|
181
228
|
}
|
|
182
229
|
|
|
183
|
-
private readonly
|
|
184
|
-
private readonly
|
|
230
|
+
private readonly uiTestSaveDir = 'src/__tests__/ui'
|
|
231
|
+
private readonly uiModuleSaveDir = 'src/ui'
|
|
185
232
|
|
|
186
|
-
private get
|
|
187
|
-
return `src/testDoubles/${this.
|
|
233
|
+
private get uiFakeSaveDir() {
|
|
234
|
+
return `src/testDoubles/${this.componentName}`
|
|
188
235
|
}
|
|
189
236
|
|
|
190
237
|
private get prompts() {
|
|
@@ -197,14 +244,23 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
197
244
|
|
|
198
245
|
private ImplAutomodule() {
|
|
199
246
|
return ImplAutomodule.Create({
|
|
200
|
-
testSaveDir: this.
|
|
201
|
-
moduleSaveDir: this.
|
|
202
|
-
fakeSaveDir: this.
|
|
247
|
+
testSaveDir: this.implTestSaveDir,
|
|
248
|
+
moduleSaveDir: this.implModuleSaveDir,
|
|
249
|
+
fakeSaveDir: this.implFakeSaveDir,
|
|
203
250
|
interfaceName: this.interfaceName,
|
|
204
251
|
implName: this.implName,
|
|
205
252
|
})
|
|
206
253
|
}
|
|
207
254
|
|
|
255
|
+
private UiAutomodule() {
|
|
256
|
+
return UiAutomodule.Create({
|
|
257
|
+
testSaveDir: this.uiTestSaveDir,
|
|
258
|
+
moduleSaveDir: this.uiModuleSaveDir,
|
|
259
|
+
fakeSaveDir: this.uiFakeSaveDir,
|
|
260
|
+
componentName: this.componentName,
|
|
261
|
+
})
|
|
262
|
+
}
|
|
263
|
+
|
|
208
264
|
private NpmAutopackage() {
|
|
209
265
|
return NpmAutopackage.Create({
|
|
210
266
|
name: this.packageName,
|