@neurodevs/ndx-cli 0.1.12 → 0.1.14
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 +22 -10
- package/build/__tests__/modules/CliCommandRunner.test.js +117 -29
- package/build/__tests__/modules/CliCommandRunner.test.js.map +1 -1
- package/build/modules/CliCommandRunner.d.ts +7 -3
- package/build/modules/CliCommandRunner.js +42 -13
- package/build/modules/CliCommandRunner.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/modules/CliCommandRunner.test.ts +161 -41
- package/src/modules/CliCommandRunner.ts +58 -15
|
@@ -1,9 +1,17 @@
|
|
|
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;
|
|
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;
|
|
5
12
|
private static readonly testSaveDir;
|
|
6
13
|
private static readonly moduleSaveDir;
|
|
14
|
+
private static readonly githubToken;
|
|
7
15
|
protected static beforeEach(): Promise<void>;
|
|
8
16
|
protected static throwsIfCommandIsNotSupported(): Promise<void>;
|
|
9
17
|
protected static createImplCreatesInstance(): Promise<void>;
|
|
@@ -20,26 +28,30 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
20
28
|
protected static createPackageCreatesNpmAutopackage(): Promise<void>;
|
|
21
29
|
private static keywordsWithDefaults;
|
|
22
30
|
protected static createPackageRunsNpmAutopackage(): Promise<void>;
|
|
31
|
+
protected static createUiCreatesInstance(): Promise<void>;
|
|
32
|
+
protected static createUiPromptsUserForInput(): Promise<void>;
|
|
33
|
+
protected static createUiDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
34
|
+
protected static createUiCreatesTestSaveDirIfNotExists(): Promise<void>;
|
|
35
|
+
protected static createUiCreatesModuleSaveDirIfNotExists(): Promise<void>;
|
|
36
|
+
protected static createUiCreatesFakeSaveDirIfNotExists(): Promise<void>;
|
|
37
|
+
protected static createUiCreatesUiAutomodule(): Promise<void>;
|
|
38
|
+
protected static createUiRunsUiAutomodule(): Promise<void>;
|
|
39
|
+
private static get fakeSaveDirComponent();
|
|
40
|
+
private static runCreateUi;
|
|
23
41
|
private static runCreateImpl;
|
|
24
42
|
private static runCreatePackage;
|
|
25
43
|
private static expandHomeDir;
|
|
26
44
|
private static splitOnCommaOrWhitespace;
|
|
27
45
|
private static get fakeSaveDir();
|
|
28
|
-
private static
|
|
29
|
-
private static
|
|
46
|
+
private static setFakeImplAutomodule;
|
|
47
|
+
private static setFakeUiAutomodule;
|
|
30
48
|
private static setFakeAutopackage;
|
|
49
|
+
private static setFakeMkdir;
|
|
31
50
|
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
51
|
private static readonly interfaceNameMessage;
|
|
41
52
|
private static readonly implNameMessage;
|
|
42
53
|
private static readonly packageNameMessage;
|
|
43
54
|
private static readonly packageDescriptionMessage;
|
|
55
|
+
private static readonly componentNameMessage;
|
|
44
56
|
private static CliCommandRunner;
|
|
45
57
|
}
|
|
@@ -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() {
|
|
@@ -100,7 +101,10 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
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();
|
|
@@ -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,83 @@ 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.testSaveDir, 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.moduleSaveDir, 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.fakeSaveDirComponent,
|
|
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.testSaveDir,
|
|
215
|
+
moduleSaveDir: this.moduleSaveDir,
|
|
216
|
+
fakeSaveDir: this.fakeSaveDirComponent,
|
|
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 get fakeSaveDirComponent() {
|
|
225
|
+
return `src/testDoubles/${this.componentName}`;
|
|
226
|
+
}
|
|
227
|
+
static async runCreateUi(responses) {
|
|
228
|
+
(0, fakePrompts_1.setFakeResponses)({
|
|
229
|
+
componentName: this.componentName,
|
|
230
|
+
...responses,
|
|
231
|
+
});
|
|
232
|
+
const instance = this.CliCommandRunner([this.createUiCommand]);
|
|
233
|
+
await instance.run();
|
|
234
|
+
return instance;
|
|
235
|
+
}
|
|
173
236
|
static async runCreateImpl(responses) {
|
|
174
|
-
|
|
237
|
+
(0, fakePrompts_1.setFakeResponses)({
|
|
238
|
+
interfaceName: this.interfaceName,
|
|
239
|
+
implName: this.implName,
|
|
240
|
+
...responses,
|
|
241
|
+
});
|
|
175
242
|
const instance = this.CliCommandRunner([this.createImplCommand]);
|
|
176
243
|
await instance.run();
|
|
177
244
|
return instance;
|
|
178
245
|
}
|
|
179
246
|
static async runCreatePackage(responses) {
|
|
180
|
-
|
|
247
|
+
(0, fakePrompts_1.setFakeResponses)({
|
|
248
|
+
packageName: this.packageName,
|
|
249
|
+
description: this.description,
|
|
250
|
+
keywords: this.keywords,
|
|
251
|
+
...responses,
|
|
252
|
+
});
|
|
181
253
|
const instance = this.CliCommandRunner([this.createPackageCommand]);
|
|
182
254
|
await instance.run();
|
|
183
255
|
return instance;
|
|
@@ -196,55 +268,47 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
196
268
|
static get fakeSaveDir() {
|
|
197
269
|
return `src/testDoubles/${this.interfaceName}`;
|
|
198
270
|
}
|
|
199
|
-
static
|
|
200
|
-
CliCommandRunner_1.default.mkdir = fakeMkdir_1.default;
|
|
201
|
-
(0, fakeMkdir_1.resetCallsToMkdir)();
|
|
202
|
-
}
|
|
203
|
-
static setFakeAutomodule() {
|
|
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)();
|
|
304
|
+
CliCommandRunnerTest.testSaveDir = 'src/__tests__/modules';
|
|
305
|
+
CliCommandRunnerTest.moduleSaveDir = 'src/modules';
|
|
243
306
|
CliCommandRunnerTest.githubToken = (0, test_utils_1.generateId)();
|
|
244
307
|
CliCommandRunnerTest.interfaceNameMessage = 'What should the interface be called? Example: YourInterface';
|
|
245
308
|
CliCommandRunnerTest.implNameMessage = 'What should the implementation class be called? Example: YourInterfaceImpl';
|
|
246
309
|
CliCommandRunnerTest.packageNameMessage = 'What should the package be called? Example: useful-package';
|
|
247
310
|
CliCommandRunnerTest.packageDescriptionMessage = 'What should the package description be? Example: A useful package.';
|
|
311
|
+
CliCommandRunnerTest.componentNameMessage = 'What should the component be called? Example: YourComponent';
|
|
248
312
|
exports.default = CliCommandRunnerTest;
|
|
249
313
|
__decorate([
|
|
250
314
|
(0, test_utils_1.test)()
|
|
@@ -288,4 +352,28 @@ __decorate([
|
|
|
288
352
|
__decorate([
|
|
289
353
|
(0, test_utils_1.test)()
|
|
290
354
|
], CliCommandRunnerTest, "createPackageRunsNpmAutopackage", null);
|
|
355
|
+
__decorate([
|
|
356
|
+
(0, test_utils_1.test)()
|
|
357
|
+
], CliCommandRunnerTest, "createUiCreatesInstance", null);
|
|
358
|
+
__decorate([
|
|
359
|
+
(0, test_utils_1.test)()
|
|
360
|
+
], CliCommandRunnerTest, "createUiPromptsUserForInput", null);
|
|
361
|
+
__decorate([
|
|
362
|
+
(0, test_utils_1.test)()
|
|
363
|
+
], CliCommandRunnerTest, "createUiDoesNotContinueIfPromptsIsInterrupted", null);
|
|
364
|
+
__decorate([
|
|
365
|
+
(0, test_utils_1.test)()
|
|
366
|
+
], CliCommandRunnerTest, "createUiCreatesTestSaveDirIfNotExists", null);
|
|
367
|
+
__decorate([
|
|
368
|
+
(0, test_utils_1.test)()
|
|
369
|
+
], CliCommandRunnerTest, "createUiCreatesModuleSaveDirIfNotExists", null);
|
|
370
|
+
__decorate([
|
|
371
|
+
(0, test_utils_1.test)()
|
|
372
|
+
], CliCommandRunnerTest, "createUiCreatesFakeSaveDirIfNotExists", null);
|
|
373
|
+
__decorate([
|
|
374
|
+
(0, test_utils_1.test)()
|
|
375
|
+
], CliCommandRunnerTest, "createUiCreatesUiAutomodule", null);
|
|
376
|
+
__decorate([
|
|
377
|
+
(0, test_utils_1.test)()
|
|
378
|
+
], CliCommandRunnerTest, "createUiRunsUiAutomodule", null);
|
|
291
379
|
//# 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,9 +22,7 @@ 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;
|
|
@@ -35,6 +35,9 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
35
35
|
private readonly keywordsMessage;
|
|
36
36
|
private splitOnCommaOrWhitespace;
|
|
37
37
|
private get userInputExistsForCreatePackage();
|
|
38
|
+
private createUiModule;
|
|
39
|
+
private promptForUimodule;
|
|
40
|
+
private readonly componentNameMessage;
|
|
38
41
|
private expandHomeDir;
|
|
39
42
|
private readonly testSaveDir;
|
|
40
43
|
private readonly moduleSaveDir;
|
|
@@ -42,6 +45,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
42
45
|
private get prompts();
|
|
43
46
|
private get mkdir();
|
|
44
47
|
private ImplAutomodule;
|
|
48
|
+
private UiAutomodule;
|
|
45
49
|
private NpmAutopackage;
|
|
46
50
|
}
|
|
47
51
|
export interface CommandRunner {
|
|
@@ -12,15 +12,18 @@ 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';
|
|
21
23
|
this.packageNameMessage = 'What should the package be called? Example: useful-package';
|
|
22
24
|
this.descriptionMessage = 'What should the package description be? Example: A useful package.';
|
|
23
25
|
this.keywordsMessage = 'Enter keywords (comma or space separated, lowercase, optional):';
|
|
26
|
+
this.componentNameMessage = 'What should the component be called? Example: YourComponent';
|
|
24
27
|
this.testSaveDir = 'src/__tests__/modules';
|
|
25
28
|
this.moduleSaveDir = 'src/modules';
|
|
26
29
|
this.args = args;
|
|
@@ -44,20 +47,19 @@ class CliCommandRunner {
|
|
|
44
47
|
return this.args[0];
|
|
45
48
|
}
|
|
46
49
|
async runCommand() {
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
switch (this.command) {
|
|
51
|
+
case this.createImplCommand:
|
|
52
|
+
await this.createImplModule();
|
|
53
|
+
break;
|
|
54
|
+
case this.createPackageCommand:
|
|
55
|
+
await this.createPackage();
|
|
56
|
+
break;
|
|
57
|
+
case this.createUiCommand:
|
|
58
|
+
await this.createUiModule();
|
|
59
|
+
break;
|
|
49
60
|
}
|
|
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
61
|
}
|
|
60
|
-
async
|
|
62
|
+
async createImplModule() {
|
|
61
63
|
const { interfaceName, implName } = await this.promptForAutomodule();
|
|
62
64
|
this.interfaceName = interfaceName;
|
|
63
65
|
this.implName = implName;
|
|
@@ -131,13 +133,32 @@ class CliCommandRunner {
|
|
|
131
133
|
get userInputExistsForCreatePackage() {
|
|
132
134
|
return this.packageName && this.description;
|
|
133
135
|
}
|
|
136
|
+
async createUiModule() {
|
|
137
|
+
const { componentName } = await this.promptForUimodule();
|
|
138
|
+
this.componentName = componentName;
|
|
139
|
+
if (!this.componentName) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
await this.makeRequiredDirectories();
|
|
143
|
+
const instance = this.UiAutomodule();
|
|
144
|
+
await instance.run();
|
|
145
|
+
}
|
|
146
|
+
async promptForUimodule() {
|
|
147
|
+
return await this.prompts([
|
|
148
|
+
{
|
|
149
|
+
type: 'text',
|
|
150
|
+
name: 'componentName',
|
|
151
|
+
message: this.componentNameMessage,
|
|
152
|
+
},
|
|
153
|
+
]);
|
|
154
|
+
}
|
|
134
155
|
expandHomeDir(inputPath) {
|
|
135
156
|
return inputPath.startsWith('~')
|
|
136
157
|
? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
|
|
137
158
|
: inputPath;
|
|
138
159
|
}
|
|
139
160
|
get fakeSaveDir() {
|
|
140
|
-
return `src/testDoubles/${this.interfaceName}`;
|
|
161
|
+
return `src/testDoubles/${this.interfaceName ?? this.componentName}`;
|
|
141
162
|
}
|
|
142
163
|
get prompts() {
|
|
143
164
|
return CliCommandRunner.prompts;
|
|
@@ -154,6 +175,14 @@ class CliCommandRunner {
|
|
|
154
175
|
implName: this.implName,
|
|
155
176
|
});
|
|
156
177
|
}
|
|
178
|
+
UiAutomodule() {
|
|
179
|
+
return meta_node_1.UiAutomodule.Create({
|
|
180
|
+
testSaveDir: this.testSaveDir,
|
|
181
|
+
moduleSaveDir: this.moduleSaveDir,
|
|
182
|
+
fakeSaveDir: this.fakeSaveDir,
|
|
183
|
+
componentName: this.componentName,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
157
186
|
NpmAutopackage() {
|
|
158
187
|
return meta_node_1.NpmAutopackage.Create({
|
|
159
188
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurodevs/ndx-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
4
4
|
"description": "CLI tools for the Neurodevs ecosystem.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nodejs",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"watch.tsc": "tsc -w"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@neurodevs/meta-node": "^0.
|
|
51
|
+
"@neurodevs/meta-node": "^0.9.0",
|
|
52
52
|
"prompts": "^2.4.2"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
@@ -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,29 @@ 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
|
|
|
42
|
+
private static readonly testSaveDir = 'src/__tests__/modules'
|
|
34
43
|
private static readonly moduleSaveDir = 'src/modules'
|
|
44
|
+
private static readonly githubToken = generateId()
|
|
35
45
|
|
|
36
46
|
protected static async beforeEach() {
|
|
37
47
|
await super.beforeEach()
|
|
38
48
|
|
|
49
|
+
this.setFakeImplAutomodule()
|
|
50
|
+
this.setFakeUiAutomodule()
|
|
51
|
+
this.setFakeAutopackage()
|
|
39
52
|
this.setFakePrompts()
|
|
40
53
|
this.setFakeMkdir()
|
|
41
|
-
this.setFakeAutomodule()
|
|
42
|
-
this.setFakeAutopackage()
|
|
43
54
|
|
|
44
55
|
process.env.GITHUB_TOKEN = this.githubToken
|
|
45
56
|
}
|
|
@@ -134,7 +145,10 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
134
145
|
|
|
135
146
|
assert.isEqualDeep(
|
|
136
147
|
callsToMkdir[2],
|
|
137
|
-
{
|
|
148
|
+
{
|
|
149
|
+
path: `src/testDoubles/${this.interfaceName}`,
|
|
150
|
+
options: { recursive: true },
|
|
151
|
+
},
|
|
138
152
|
'Did not create fake save dir!'
|
|
139
153
|
)
|
|
140
154
|
}
|
|
@@ -224,8 +238,6 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
224
238
|
|
|
225
239
|
@test()
|
|
226
240
|
protected static async createPackageCreatesNpmAutopackage() {
|
|
227
|
-
this.setFakePromptResponsesForCreatePackage()
|
|
228
|
-
|
|
229
241
|
await this.runCreatePackage()
|
|
230
242
|
|
|
231
243
|
assert.isEqualDeep(
|
|
@@ -259,8 +271,131 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
259
271
|
)
|
|
260
272
|
}
|
|
261
273
|
|
|
274
|
+
@test()
|
|
275
|
+
protected static async createUiCreatesInstance() {
|
|
276
|
+
const instance = await this.runCreateUi()
|
|
277
|
+
|
|
278
|
+
assert.isTruthy(
|
|
279
|
+
instance,
|
|
280
|
+
`Failed to create instance for ${this.createUiCommand}!`
|
|
281
|
+
)
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
@test()
|
|
285
|
+
protected static async createUiPromptsUserForInput() {
|
|
286
|
+
await this.runCreateUi()
|
|
287
|
+
|
|
288
|
+
assert.isEqualDeep(
|
|
289
|
+
callsToFakePrompts[0],
|
|
290
|
+
[
|
|
291
|
+
{
|
|
292
|
+
type: 'text',
|
|
293
|
+
name: 'componentName',
|
|
294
|
+
message: this.componentNameMessage,
|
|
295
|
+
},
|
|
296
|
+
],
|
|
297
|
+
'Did not prompt user for expected input!'
|
|
298
|
+
)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
@test()
|
|
302
|
+
protected static async createUiDoesNotContinueIfPromptsIsInterrupted() {
|
|
303
|
+
await this.runCreateUi({
|
|
304
|
+
componentName: '',
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
assert.isEqual(
|
|
308
|
+
FakeAutomodule.numCallsToRun,
|
|
309
|
+
0,
|
|
310
|
+
'Should not have called run on UiAutomodule!'
|
|
311
|
+
)
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
@test()
|
|
315
|
+
protected static async createUiCreatesTestSaveDirIfNotExists() {
|
|
316
|
+
await this.runCreateUi()
|
|
317
|
+
|
|
318
|
+
assert.isEqualDeep(
|
|
319
|
+
callsToMkdir[0],
|
|
320
|
+
{ path: this.testSaveDir, options: { recursive: true } },
|
|
321
|
+
'Did not create test save dir!'
|
|
322
|
+
)
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
@test()
|
|
326
|
+
protected static async createUiCreatesModuleSaveDirIfNotExists() {
|
|
327
|
+
await this.runCreateUi()
|
|
328
|
+
|
|
329
|
+
assert.isEqualDeep(
|
|
330
|
+
callsToMkdir[1],
|
|
331
|
+
{ path: this.moduleSaveDir, options: { recursive: true } },
|
|
332
|
+
'Did not create module save dir!'
|
|
333
|
+
)
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
@test()
|
|
337
|
+
protected static async createUiCreatesFakeSaveDirIfNotExists() {
|
|
338
|
+
await this.runCreateUi()
|
|
339
|
+
|
|
340
|
+
assert.isEqualDeep(
|
|
341
|
+
callsToMkdir[2],
|
|
342
|
+
{
|
|
343
|
+
path: this.fakeSaveDirComponent,
|
|
344
|
+
options: { recursive: true },
|
|
345
|
+
},
|
|
346
|
+
'Did not create fake save dir!'
|
|
347
|
+
)
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
@test()
|
|
351
|
+
protected static async createUiCreatesUiAutomodule() {
|
|
352
|
+
await this.runCreateUi()
|
|
353
|
+
|
|
354
|
+
assert.isEqualDeep(
|
|
355
|
+
FakeAutomodule.callsToConstructor[0],
|
|
356
|
+
{
|
|
357
|
+
testSaveDir: this.testSaveDir,
|
|
358
|
+
moduleSaveDir: this.moduleSaveDir,
|
|
359
|
+
fakeSaveDir: this.fakeSaveDirComponent,
|
|
360
|
+
componentName: this.componentName,
|
|
361
|
+
},
|
|
362
|
+
'Did not create UiAutomodule with expected options!'
|
|
363
|
+
)
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
@test()
|
|
367
|
+
protected static async createUiRunsUiAutomodule() {
|
|
368
|
+
await this.runCreateUi()
|
|
369
|
+
|
|
370
|
+
assert.isEqual(
|
|
371
|
+
FakeAutomodule.numCallsToRun,
|
|
372
|
+
1,
|
|
373
|
+
'Did not call run on UiAutomodule!'
|
|
374
|
+
)
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
private static get fakeSaveDirComponent() {
|
|
378
|
+
return `src/testDoubles/${this.componentName}`
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
private static async runCreateUi(responses?: Record<string, string>) {
|
|
382
|
+
setFakeResponses({
|
|
383
|
+
componentName: this.componentName,
|
|
384
|
+
...responses,
|
|
385
|
+
})
|
|
386
|
+
|
|
387
|
+
const instance = this.CliCommandRunner([this.createUiCommand])
|
|
388
|
+
await instance.run()
|
|
389
|
+
|
|
390
|
+
return instance
|
|
391
|
+
}
|
|
392
|
+
|
|
262
393
|
private static async runCreateImpl(responses?: Record<string, string>) {
|
|
263
|
-
|
|
394
|
+
setFakeResponses({
|
|
395
|
+
interfaceName: this.interfaceName,
|
|
396
|
+
implName: this.implName,
|
|
397
|
+
...responses,
|
|
398
|
+
})
|
|
264
399
|
|
|
265
400
|
const instance = this.CliCommandRunner([this.createImplCommand])
|
|
266
401
|
await instance.run()
|
|
@@ -269,7 +404,12 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
269
404
|
}
|
|
270
405
|
|
|
271
406
|
private static async runCreatePackage(responses?: Record<string, string>) {
|
|
272
|
-
|
|
407
|
+
setFakeResponses({
|
|
408
|
+
packageName: this.packageName,
|
|
409
|
+
description: this.description,
|
|
410
|
+
keywords: this.keywords,
|
|
411
|
+
...responses,
|
|
412
|
+
})
|
|
273
413
|
|
|
274
414
|
const instance = this.CliCommandRunner([this.createPackageCommand])
|
|
275
415
|
await instance.run()
|
|
@@ -294,13 +434,13 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
294
434
|
return `src/testDoubles/${this.interfaceName}`
|
|
295
435
|
}
|
|
296
436
|
|
|
297
|
-
private static
|
|
298
|
-
|
|
299
|
-
|
|
437
|
+
private static setFakeImplAutomodule() {
|
|
438
|
+
ImplAutomodule.Class = FakeAutomodule
|
|
439
|
+
FakeAutomodule.resetTestDouble()
|
|
300
440
|
}
|
|
301
441
|
|
|
302
|
-
private static
|
|
303
|
-
|
|
442
|
+
private static setFakeUiAutomodule() {
|
|
443
|
+
UiAutomodule.Class = FakeAutomodule
|
|
304
444
|
FakeAutomodule.resetTestDouble()
|
|
305
445
|
}
|
|
306
446
|
|
|
@@ -309,39 +449,16 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
309
449
|
FakeAutopackage.resetTestDouble()
|
|
310
450
|
}
|
|
311
451
|
|
|
452
|
+
private static setFakeMkdir() {
|
|
453
|
+
CliCommandRunner.mkdir = fakeMkdir as unknown as typeof mkdir
|
|
454
|
+
resetCallsToMkdir()
|
|
455
|
+
}
|
|
456
|
+
|
|
312
457
|
private static setFakePrompts() {
|
|
313
458
|
CliCommandRunner.prompts = fakePrompts as unknown as typeof prompts
|
|
314
459
|
resetCallsToFakePrompts()
|
|
315
460
|
}
|
|
316
461
|
|
|
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
462
|
private static readonly interfaceNameMessage =
|
|
346
463
|
'What should the interface be called? Example: YourInterface'
|
|
347
464
|
|
|
@@ -354,6 +471,9 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
354
471
|
private static readonly packageDescriptionMessage =
|
|
355
472
|
'What should the package description be? Example: A useful package.'
|
|
356
473
|
|
|
474
|
+
private static readonly componentNameMessage =
|
|
475
|
+
'What should the component be called? Example: YourComponent'
|
|
476
|
+
|
|
357
477
|
private static CliCommandRunner(args: string[]) {
|
|
358
478
|
return CliCommandRunner.Create(args)
|
|
359
479
|
}
|
|
@@ -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
|
|
@@ -174,6 +180,34 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
174
180
|
return this.packageName && this.description
|
|
175
181
|
}
|
|
176
182
|
|
|
183
|
+
private async createUiModule() {
|
|
184
|
+
const { componentName } = await this.promptForUimodule()
|
|
185
|
+
|
|
186
|
+
this.componentName = componentName
|
|
187
|
+
|
|
188
|
+
if (!this.componentName) {
|
|
189
|
+
return
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
await this.makeRequiredDirectories()
|
|
193
|
+
|
|
194
|
+
const instance = this.UiAutomodule()
|
|
195
|
+
await instance.run()
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
private async promptForUimodule() {
|
|
199
|
+
return await this.prompts([
|
|
200
|
+
{
|
|
201
|
+
type: 'text',
|
|
202
|
+
name: 'componentName',
|
|
203
|
+
message: this.componentNameMessage,
|
|
204
|
+
},
|
|
205
|
+
])
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
private readonly componentNameMessage =
|
|
209
|
+
'What should the component be called? Example: YourComponent'
|
|
210
|
+
|
|
177
211
|
private expandHomeDir(inputPath: string): string {
|
|
178
212
|
return inputPath.startsWith('~')
|
|
179
213
|
? path.join(os.homedir(), inputPath.slice(1))
|
|
@@ -184,7 +218,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
184
218
|
private readonly moduleSaveDir = 'src/modules'
|
|
185
219
|
|
|
186
220
|
private get fakeSaveDir() {
|
|
187
|
-
return `src/testDoubles/${this.interfaceName}`
|
|
221
|
+
return `src/testDoubles/${this.interfaceName ?? this.componentName}`
|
|
188
222
|
}
|
|
189
223
|
|
|
190
224
|
private get prompts() {
|
|
@@ -205,6 +239,15 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
205
239
|
})
|
|
206
240
|
}
|
|
207
241
|
|
|
242
|
+
private UiAutomodule() {
|
|
243
|
+
return UiAutomodule.Create({
|
|
244
|
+
testSaveDir: this.testSaveDir,
|
|
245
|
+
moduleSaveDir: this.moduleSaveDir,
|
|
246
|
+
fakeSaveDir: this.fakeSaveDir,
|
|
247
|
+
componentName: this.componentName,
|
|
248
|
+
})
|
|
249
|
+
}
|
|
250
|
+
|
|
208
251
|
private NpmAutopackage() {
|
|
209
252
|
return NpmAutopackage.Create({
|
|
210
253
|
name: this.packageName,
|