@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.
@@ -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 testSaveDir;
6
- private static readonly moduleSaveDir;
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 get fakeSaveDir();
28
- private static setFakeMkdir;
29
- private static setFakeAutomodule;
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.testSaveDir, options: { recursive: true } }, 'Did not create test save dir!');
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.moduleSaveDir, options: { recursive: true } }, 'Did not create module save dir!');
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], { path: this.fakeSaveDir, options: { recursive: true } }, 'Did not create fake save dir!');
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.testSaveDir,
109
- moduleSaveDir: this.moduleSaveDir,
110
- fakeSaveDir: this.fakeSaveDir,
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
- this.setFakeResponsesForCreateImpl(responses);
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
- this.setFakePromptResponsesForCreatePackage(responses);
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 fakeSaveDir() {
265
+ static get implFakeSaveDir() {
197
266
  return `src/testDoubles/${this.interfaceName}`;
198
267
  }
199
- static setFakeMkdir() {
200
- CliCommandRunner_1.default.mkdir = fakeMkdir_1.default;
201
- (0, fakeMkdir_1.resetCallsToMkdir)();
268
+ static get uiFakeSaveDir() {
269
+ return `src/testDoubles/${this.componentName}`;
202
270
  }
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)();
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":"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"}
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,oDAM6B;AAE7B,sFAA6D;AAC7D,yEAGoC;AACpC,uEAK8C;AAE9C,MAAqB,oBAAqB,SAAQ,oBAAkB;IAetD,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,qBAAqB,EAAE,CAAA;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC1B,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,IAAI,CAAC,YAAY,EAAE,CAAA;QAEnB,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAA;IAC/C,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,6BAA6B;QAChD,MAAM,UAAU,GAAG,IAAA,uBAAU,GAAE,CAAA;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QAEpD,MAAM,GAAG,GAAG,MAAM,mBAAM,CAAC,cAAc,CACnC,KAAK,IAAI,EAAE,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,CACnC,CAAA;QAED,mBAAM,CAAC,OAAO,CACV,GAAG,CAAC,OAAO,EACX,gBAAgB,UAAU,qBAAqB,EAC/C,qCAAqC,CACxC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,yBAAyB;QAC5C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE3C,mBAAM,CAAC,QAAQ,CACX,QAAQ,EACR,iCAAiC,IAAI,CAAC,iBAAiB,GAAG,CAC7D,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,6BAA6B;QAChD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE1B,mBAAM,CAAC,WAAW,CACd,gCAAkB,CAAC,CAAC,CAAC,EACrB;YACI;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,IAAI,CAAC,oBAAoB;aACrC;YACD;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI,CAAC,eAAe;aAChC;SACJ,EACD,yCAAyC,CAC5C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,+CAA+C;QAClE,MAAM,IAAI,CAAC,aAAa,CAAC;YACrB,aAAa,EAAE,EAAE;YACjB,QAAQ,EAAE,EAAE;SACf,CAAC,CAAA;QAEF,mBAAM,CAAC,OAAO,CACV,0BAAc,CAAC,aAAa,EAC5B,CAAC,EACD,+CAA+C,CAClD,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,uCAAuC;QAC1D,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE1B,mBAAM,CAAC,WAAW,CACd,wBAAY,CAAC,CAAC,CAAC,EACf,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAC5D,+BAA+B,CAClC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,yCAAyC;QAC5D,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE1B,mBAAM,CAAC,WAAW,CACd,wBAAY,CAAC,CAAC,CAAC,EACf,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAC9D,iCAAiC,CACpC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,uCAAuC;QAC1D,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE1B,mBAAM,CAAC,WAAW,CACd,wBAAY,CAAC,CAAC,CAAC,EACf;YACI,IAAI,EAAE,mBAAmB,IAAI,CAAC,aAAa,EAAE;YAC7C,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC/B,EACD,+BAA+B,CAClC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,+BAA+B;QAClD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE1B,mBAAM,CAAC,WAAW,CACd,0BAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACpC;YACI,WAAW,EAAE,IAAI,CAAC,eAAe;YACjC,aAAa,EAAE,IAAI,CAAC,iBAAiB;YACrC,WAAW,EAAE,IAAI,CAAC,eAAe;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,EACD,sDAAsD,CACzD,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,4BAA4B;QAC/C,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAE1B,mBAAM,CAAC,OAAO,CACV,0BAAc,CAAC,aAAa,EAC5B,CAAC,EACD,qCAAqC,CACxC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,4BAA4B;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE9C,mBAAM,CAAC,QAAQ,CACX,QAAQ,EACR,iCAAiC,IAAI,CAAC,oBAAoB,GAAG,CAChE,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gCAAgC;QACnD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE7B,mBAAM,CAAC,WAAW,CACd,IAAI,CAAC,SAAS,CAAC,gCAAkB,CAAC,CAAC,CAAC,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC;YACX;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,IAAI,CAAC,kBAAkB;aACnC;YACD;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,IAAI,CAAC,yBAAyB;aAC1C;YACD;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EACH,iEAAiE;gBACrE,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE,CACtB,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;aACxD;SACJ,CAAC,EACF,yCAAyC,CAC5C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kDAAkD;QACrE,MAAM,IAAI,CAAC,gBAAgB,CAAC;YACxB,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,EAAE;SAClB,CAAC,CAAA;QAEF,mBAAM,CAAC,OAAO,CACV,2BAAe,CAAC,aAAa,EAC7B,CAAC,EACD,4CAA4C,CAC/C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kCAAkC;QACrD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE7B,mBAAM,CAAC,WAAW,CACd,2BAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACrC;YACI,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,oBAAoB,EAAE;YACrC,YAAY,EAAE,WAAW;YACzB,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;YACvC,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,uCAAuC;SAClD,EACD,sDAAsD,CACzD,CAAA;IACL,CAAC;IAEO,MAAM,CAAC,oBAAoB;QAC/B,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5D,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,+BAA+B;QAClD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE7B,mBAAM,CAAC,OAAO,CACV,2BAAe,CAAC,aAAa,EAC7B,CAAC,EACD,kCAAkC,CACrC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,uBAAuB;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAEzC,mBAAM,CAAC,QAAQ,CACX,QAAQ,EACR,iCAAiC,IAAI,CAAC,eAAe,GAAG,CAC3D,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,2BAA2B;QAC9C,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,mBAAM,CAAC,WAAW,CACd,gCAAkB,CAAC,CAAC,CAAC,EACrB;YACI;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,IAAI,CAAC,oBAAoB;aACrC;SACJ,EACD,yCAAyC,CAC5C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,6CAA6C;QAChE,MAAM,IAAI,CAAC,WAAW,CAAC;YACnB,aAAa,EAAE,EAAE;SACpB,CAAC,CAAA;QAEF,mBAAM,CAAC,OAAO,CACV,0BAAc,CAAC,aAAa,EAC5B,CAAC,EACD,6CAA6C,CAChD,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,qCAAqC;QACxD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,mBAAM,CAAC,WAAW,CACd,wBAAY,CAAC,CAAC,CAAC,EACf,EAAE,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAC1D,+BAA+B,CAClC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,uCAAuC;QAC1D,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,mBAAM,CAAC,WAAW,CACd,wBAAY,CAAC,CAAC,CAAC,EACf,EAAE,IAAI,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAC5D,iCAAiC,CACpC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,qCAAqC;QACxD,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,mBAAM,CAAC,WAAW,CACd,wBAAY,CAAC,CAAC,CAAC,EACf;YACI,IAAI,EAAE,IAAI,CAAC,aAAa;YACxB,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;SAC/B,EACD,+BAA+B,CAClC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,2BAA2B;QAC9C,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,mBAAM,CAAC,WAAW,CACd,0BAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACpC;YACI,WAAW,EAAE,IAAI,CAAC,aAAa;YAC/B,aAAa,EAAE,IAAI,CAAC,eAAe;YACnC,WAAW,EAAE,IAAI,CAAC,aAAa;YAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;SACpC,EACD,oDAAoD,CACvD,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,wBAAwB;QAC3C,MAAM,IAAI,CAAC,WAAW,EAAE,CAAA;QAExB,mBAAM,CAAC,OAAO,CACV,0BAAc,CAAC,aAAa,EAC5B,CAAC,EACD,mCAAmC,CACtC,CAAA;IACL,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAkC;QAC/D,IAAA,8BAAgB,EAAC;YACb,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,GAAG,SAAS;SACf,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;QAC9D,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAA;QAEpB,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAkC;QACjE,IAAA,8BAAgB,EAAC;YACb,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,SAAS;SACf,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAA;QAChE,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAA;QAEpB,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAkC;QACpE,IAAA,8BAAgB,EAAC;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,SAAS;SACf,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAA;QACnE,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAA;QAEpB,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,SAAiB;QAC1C,OAAO,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;YAC5B,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,SAAS,CAAA;IACnB,CAAC;IAEO,MAAM,CAAC,wBAAwB,CAAC,KAAa;QACjD,OAAO,KAAK;aACP,KAAK,CAAC,QAAQ,CAAC;aACf,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAKO,MAAM,KAAK,eAAe;QAC9B,OAAO,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAAA;IAClD,CAAC;IAKO,MAAM,KAAK,aAAa;QAC5B,OAAO,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAAA;IAClD,CAAC;IAEO,MAAM,CAAC,qBAAqB;QAChC,0BAAc,CAAC,KAAK,GAAG,0BAAc,CAAA;QACrC,0BAAc,CAAC,eAAe,EAAE,CAAA;IACpC,CAAC;IAEO,MAAM,CAAC,mBAAmB;QAC9B,wBAAY,CAAC,KAAK,GAAG,0BAAc,CAAA;QACnC,0BAAc,CAAC,eAAe,EAAE,CAAA;IACpC,CAAC;IAEO,MAAM,CAAC,kBAAkB;QAC7B,0BAAc,CAAC,KAAK,GAAG,2BAAe,CAAA;QACtC,2BAAe,CAAC,eAAe,EAAE,CAAA;IACrC,CAAC;IAEO,MAAM,CAAC,YAAY;QACvB,0BAAgB,CAAC,KAAK,GAAG,mBAAoC,CAAA;QAC7D,IAAA,6BAAiB,GAAE,CAAA;IACvB,CAAC;IAEO,MAAM,CAAC,cAAc;QACzB,0BAAgB,CAAC,OAAO,GAAG,yBAAwC,CAAA;QACnE,IAAA,qCAAuB,GAAE,CAAA;IAC7B,CAAC;IAiBO,MAAM,CAAC,gBAAgB,CAAC,IAAc;QAC1C,OAAO,0BAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC;;AArcuB,sCAAiB,GAAG,aAAa,CAAA;AACjC,kCAAa,GAAG,IAAA,uBAAU,GAAE,CAAA;AAC5B,6BAAQ,GAAG,IAAA,uBAAU,GAAE,CAAA;AAEvB,yCAAoB,GAAG,gBAAgB,CAAA;AACvC,gCAAW,GAAG,IAAA,uBAAU,GAAE,CAAA;AAC1B,gCAAW,GAAG,IAAA,uBAAU,GAAE,CAAA;AAC1B,6BAAQ,GAAG,CAAC,IAAA,uBAAU,GAAE,EAAE,IAAA,uBAAU,GAAE,CAAC,CAAA;AAEvC,oCAAe,GAAG,WAAW,CAAA;AAC7B,kCAAa,GAAG,IAAA,uBAAU,GAAE,CAAA;AAE5B,gCAAW,GAAG,IAAA,uBAAU,GAAE,CAAA;AAiY1B,oCAAe,GAAG,uBAAuB,CAAA;AACzC,sCAAiB,GAAG,aAAa,CAAA;AAMjC,kCAAa,GAAG,kBAAkB,CAAA;AAClC,oCAAe,GAAG,QAAQ,CAAA;AA+B1B,yCAAoB,GACxC,6DAA6D,CAAA;AAEzC,oCAAe,GACnC,4EAA4E,CAAA;AAExD,uCAAkB,GACtC,4DAA4D,CAAA;AAExC,8CAAyB,GAC7C,oEAAoE,CAAA;AAEhD,yCAAoB,GACxC,6DAA6D,CAAA;kBAlchD,oBAAoB;AA4Bd;IADtB,IAAA,iBAAI,GAAE;+DAcN;AAGsB;IADtB,IAAA,iBAAI,GAAE;2DAQN;AAGsB;IADtB,IAAA,iBAAI,GAAE;+DAoBN;AAGsB;IADtB,IAAA,iBAAI,GAAE;iFAYN;AAGsB;IADtB,IAAA,iBAAI,GAAE;yEASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;2EASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;yEAYN;AAGsB;IADtB,IAAA,iBAAI,GAAE;iEAeN;AAGsB;IADtB,IAAA,iBAAI,GAAE;8DASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;8DAQN;AAGsB;IADtB,IAAA,iBAAI,GAAE;kEA6BN;AAGsB;IADtB,IAAA,iBAAI,GAAE;oFAYN;AAGsB;IADtB,IAAA,iBAAI,GAAE;oEAkBN;AAOsB;IADtB,IAAA,iBAAI,GAAE;iEASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;yDAQN;AAGsB;IADtB,IAAA,iBAAI,GAAE;6DAeN;AAGsB;IADtB,IAAA,iBAAI,GAAE;+EAWN;AAGsB;IADtB,IAAA,iBAAI,GAAE;uEASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;yEASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;uEAYN;AAGsB;IADtB,IAAA,iBAAI,GAAE;6DAcN;AAGsB;IADtB,IAAA,iBAAI,GAAE;0DASN"}
@@ -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 get isCreateImplCommand();
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 makeRequiredDirectories;
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 testSaveDir;
40
- private readonly moduleSaveDir;
41
- private get fakeSaveDir();
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.testSaveDir = 'src/__tests__/modules';
25
- this.moduleSaveDir = 'src/modules';
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
- if (this.isCreateImplCommand) {
48
- await this.createImpl();
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 createImpl() {
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.makeRequiredDirectories();
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 makeRequiredDirectories() {
89
- await this.mkdir(this.testSaveDir, { recursive: true });
90
- await this.mkdir(this.moduleSaveDir, { recursive: true });
91
- await this.mkdir(this.fakeSaveDir, { recursive: true });
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 fakeSaveDir() {
140
- return `src/testDoubles/${this.interfaceName}`;
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.testSaveDir,
151
- moduleSaveDir: this.moduleSaveDir,
152
- fakeSaveDir: this.fakeSaveDir,
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":"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"}
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.13",
3
+ "version": "0.1.15",
4
4
  "description": "CLI tools for the Neurodevs ecosystem.",
5
5
  "keywords": [
6
6
  "nodejs",
@@ -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 testSaveDir = 'src/__tests__/modules'
39
+ private static readonly createUiCommand = 'create.ui'
40
+ private static readonly componentName = generateId()
33
41
 
34
- private static readonly moduleSaveDir = 'src/modules'
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.testSaveDir, options: { recursive: true } },
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.moduleSaveDir, options: { recursive: true } },
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
- { path: this.fakeSaveDir, options: { recursive: true } },
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.testSaveDir,
150
- moduleSaveDir: this.moduleSaveDir,
151
- fakeSaveDir: this.fakeSaveDir,
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
- this.setFakeResponsesForCreateImpl(responses)
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
- this.setFakePromptResponsesForCreatePackage(responses)
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 get fakeSaveDir() {
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 setFakeMkdir() {
298
- CliCommandRunner.mkdir = fakeMkdir as unknown as typeof mkdir
299
- resetCallsToMkdir()
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 setFakeAutomodule() {
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 { ImplAutomodule, NpmAutopackage } from '@neurodevs/meta-node'
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
- if (this.isCreateImplCommand) {
57
- await this.createImpl()
58
- } else if (this.isCreatePackageCommand) {
59
- await this.createPackage()
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 get isCreateImplCommand() {
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.makeRequiredDirectories()
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 makeRequiredDirectories() {
113
- await this.mkdir(this.testSaveDir, { recursive: true })
114
- await this.mkdir(this.moduleSaveDir, { recursive: true })
115
- await this.mkdir(this.fakeSaveDir, { recursive: true })
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 testSaveDir = 'src/__tests__/modules'
184
- private readonly moduleSaveDir = 'src/modules'
230
+ private readonly uiTestSaveDir = 'src/__tests__/ui'
231
+ private readonly uiModuleSaveDir = 'src/ui'
185
232
 
186
- private get fakeSaveDir() {
187
- return `src/testDoubles/${this.interfaceName}`
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.testSaveDir,
201
- moduleSaveDir: this.moduleSaveDir,
202
- fakeSaveDir: this.fakeSaveDir,
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,