@neurodevs/ndx-cli 0.1.21 → 0.1.23
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 +15 -0
- package/build/__tests__/modules/CliCommandRunner.test.js +104 -1
- package/build/__tests__/modules/CliCommandRunner.test.js.map +1 -1
- package/build/modules/CliCommandRunner.d.ts +20 -3
- package/build/modules/CliCommandRunner.js +74 -3
- package/build/modules/CliCommandRunner.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/modules/CliCommandRunner.test.ts +156 -3
- package/src/modules/CliCommandRunner.ts +105 -4
|
@@ -27,6 +27,10 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
27
27
|
private static keywordsWithDefaults;
|
|
28
28
|
protected static createPackageRunsNpmAutopackage(): Promise<void>;
|
|
29
29
|
protected static createUiCreatesInstance(): Promise<void>;
|
|
30
|
+
protected static createUiPromptsInstallDependenciesIfMissing(): Promise<void>;
|
|
31
|
+
protected static createUiInstallsDependenciesIfMissing(): Promise<void>;
|
|
32
|
+
protected static createUiUpdatesTsconfigIfDependenciesWereMissing(): Promise<void>;
|
|
33
|
+
protected static createUiDoesNotPromptIfDependenciesAreInstalled(): Promise<void>;
|
|
30
34
|
protected static createUiPromptsUserForInput(): Promise<void>;
|
|
31
35
|
protected static createUiDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
32
36
|
protected static createUiCreatesTestSaveDirIfNotExists(): Promise<void>;
|
|
@@ -35,6 +39,8 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
35
39
|
protected static createUiCreatesUiAutomodule(): Promise<void>;
|
|
36
40
|
protected static createUiRunsUiAutomodule(): Promise<void>;
|
|
37
41
|
private static runCreateUi;
|
|
42
|
+
private static setFakeReadFileResultToTsconfig;
|
|
43
|
+
private static setFakeReadFileResultPackageJson;
|
|
38
44
|
private static runCreateImpl;
|
|
39
45
|
private static runCreatePackage;
|
|
40
46
|
private static expandHomeDir;
|
|
@@ -45,11 +51,20 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
45
51
|
private static readonly uiTestSaveDir;
|
|
46
52
|
private static readonly uiModuleSaveDir;
|
|
47
53
|
private static get uiFakeSaveDir();
|
|
54
|
+
private static readonly tsconfigPath;
|
|
55
|
+
private static readonly randomId;
|
|
56
|
+
private static readonly originalTsconfigFile;
|
|
57
|
+
private static readonly updatedTsconfigFile;
|
|
58
|
+
private static readonly installDevDependenciesCommand;
|
|
48
59
|
private static setFakeImplAutomodule;
|
|
49
60
|
private static setFakeUiAutomodule;
|
|
50
61
|
private static setFakeAutopackage;
|
|
62
|
+
private static setFakeExec;
|
|
51
63
|
private static setFakeMkdir;
|
|
52
64
|
private static setFakePrompts;
|
|
65
|
+
private static setFakeReadFile;
|
|
66
|
+
private static setFakeReadFileToInstalledPackageJson;
|
|
67
|
+
private static setFakeWriteFile;
|
|
53
68
|
private static readonly interfaceNameMessage;
|
|
54
69
|
private static readonly implNameMessage;
|
|
55
70
|
private static readonly packageNameMessage;
|
|
@@ -41,22 +41,29 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
42
42
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
43
43
|
};
|
|
44
|
+
var _a;
|
|
44
45
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
46
|
+
const child_process_1 = require("child_process");
|
|
45
47
|
const os_1 = __importDefault(require("os"));
|
|
46
48
|
const path_1 = __importDefault(require("path"));
|
|
49
|
+
const util_1 = require("util");
|
|
47
50
|
const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
|
|
48
51
|
const fake_node_core_1 = require("@neurodevs/fake-node-core");
|
|
49
52
|
const meta_node_1 = require("@neurodevs/meta-node");
|
|
50
53
|
const CliCommandRunner_1 = __importDefault(require("../../modules/CliCommandRunner"));
|
|
51
54
|
const fakePrompts_1 = __importStar(require("../../testDoubles/prompts/fakePrompts"));
|
|
55
|
+
const exec = (0, util_1.promisify)(child_process_1.exec);
|
|
52
56
|
class CliCommandRunnerTest extends test_utils_1.default {
|
|
53
57
|
static async beforeEach() {
|
|
54
58
|
await super.beforeEach();
|
|
55
59
|
this.setFakeImplAutomodule();
|
|
56
60
|
this.setFakeUiAutomodule();
|
|
57
61
|
this.setFakeAutopackage();
|
|
58
|
-
this.
|
|
62
|
+
this.setFakeExec();
|
|
59
63
|
this.setFakeMkdir();
|
|
64
|
+
this.setFakePrompts();
|
|
65
|
+
this.setFakeReadFile();
|
|
66
|
+
this.setFakeWriteFile();
|
|
60
67
|
process.env.GITHUB_TOKEN = this.githubToken;
|
|
61
68
|
}
|
|
62
69
|
static async throwsIfCommandIsNotSupported() {
|
|
@@ -177,6 +184,41 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
177
184
|
const instance = await this.runCreateUi();
|
|
178
185
|
test_utils_1.assert.isTruthy(instance, `Failed to create instance for ${this.createUiCommand}!`);
|
|
179
186
|
}
|
|
187
|
+
static async createUiPromptsInstallDependenciesIfMissing() {
|
|
188
|
+
this.setFakeReadFileResultPackageJson();
|
|
189
|
+
await this.runCreateUi();
|
|
190
|
+
test_utils_1.assert.isEqualDeep(fakePrompts_1.callsToFakePrompts[0], [
|
|
191
|
+
{
|
|
192
|
+
type: 'confirm',
|
|
193
|
+
name: 'shouldInstall',
|
|
194
|
+
message: 'Some required dependencies are missing! Press Enter to install, or any other key to abort.',
|
|
195
|
+
initial: true,
|
|
196
|
+
},
|
|
197
|
+
], 'Did not prompt user for expected input!');
|
|
198
|
+
}
|
|
199
|
+
static async createUiInstallsDependenciesIfMissing() {
|
|
200
|
+
this.setFakeReadFileResultPackageJson();
|
|
201
|
+
await this.runCreateUi({
|
|
202
|
+
shouldInstall: true,
|
|
203
|
+
});
|
|
204
|
+
test_utils_1.assert.isEqualDeep(fake_node_core_1.callsToExec[0], this.installDevDependenciesCommand, 'Did not install dependencies!');
|
|
205
|
+
}
|
|
206
|
+
static async createUiUpdatesTsconfigIfDependenciesWereMissing() {
|
|
207
|
+
this.setFakeReadFileResultToTsconfig();
|
|
208
|
+
this.setFakeReadFileResultPackageJson();
|
|
209
|
+
await this.runCreateUi({
|
|
210
|
+
shouldInstall: true,
|
|
211
|
+
});
|
|
212
|
+
test_utils_1.assert.isEqualDeep(fake_node_core_1.callsToWriteFile[0], {
|
|
213
|
+
file: this.tsconfigPath,
|
|
214
|
+
data: this.updatedTsconfigFile,
|
|
215
|
+
options: undefined,
|
|
216
|
+
}, 'Did not update tsconfig!');
|
|
217
|
+
}
|
|
218
|
+
static async createUiDoesNotPromptIfDependenciesAreInstalled() {
|
|
219
|
+
await this.runCreateUi();
|
|
220
|
+
test_utils_1.assert.isEqual(fakePrompts_1.callsToFakePrompts.length, 1, 'Prompted too many times!');
|
|
221
|
+
}
|
|
180
222
|
static async createUiPromptsUserForInput() {
|
|
181
223
|
await this.runCreateUi();
|
|
182
224
|
test_utils_1.assert.isEqualDeep(fakePrompts_1.callsToFakePrompts[0], [
|
|
@@ -230,6 +272,12 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
230
272
|
await instance.run();
|
|
231
273
|
return instance;
|
|
232
274
|
}
|
|
275
|
+
static setFakeReadFileResultToTsconfig() {
|
|
276
|
+
(0, fake_node_core_1.setFakeReadFileResult)(this.tsconfigPath, this.originalTsconfigFile);
|
|
277
|
+
}
|
|
278
|
+
static setFakeReadFileResultPackageJson() {
|
|
279
|
+
(0, fake_node_core_1.setFakeReadFileResult)('package.json', '{}');
|
|
280
|
+
}
|
|
233
281
|
static async runCreateImpl(responses) {
|
|
234
282
|
(0, fakePrompts_1.setFakeResponses)({
|
|
235
283
|
interfaceName: this.interfaceName,
|
|
@@ -280,6 +328,10 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
280
328
|
meta_node_1.NpmAutopackage.Class = meta_node_1.FakeAutopackage;
|
|
281
329
|
meta_node_1.FakeAutopackage.resetTestDouble();
|
|
282
330
|
}
|
|
331
|
+
static setFakeExec() {
|
|
332
|
+
CliCommandRunner_1.default.exec = fake_node_core_1.fakeExec;
|
|
333
|
+
(0, fake_node_core_1.resetCallsToExec)();
|
|
334
|
+
}
|
|
283
335
|
static setFakeMkdir() {
|
|
284
336
|
CliCommandRunner_1.default.mkdir = fake_node_core_1.fakeMkdir;
|
|
285
337
|
(0, fake_node_core_1.resetCallsToMkdir)();
|
|
@@ -288,10 +340,33 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
288
340
|
CliCommandRunner_1.default.prompts = fakePrompts_1.default;
|
|
289
341
|
(0, fakePrompts_1.resetCallsToFakePrompts)();
|
|
290
342
|
}
|
|
343
|
+
static setFakeReadFile() {
|
|
344
|
+
CliCommandRunner_1.default.readFile = fake_node_core_1.fakeReadFile;
|
|
345
|
+
(0, fake_node_core_1.resetCallsToReadFile)();
|
|
346
|
+
this.setFakeReadFileToInstalledPackageJson();
|
|
347
|
+
this.setFakeReadFileResultToTsconfig();
|
|
348
|
+
}
|
|
349
|
+
static setFakeReadFileToInstalledPackageJson() {
|
|
350
|
+
(0, fake_node_core_1.setFakeReadFileResult)('package.json', `
|
|
351
|
+
{
|
|
352
|
+
"devDependencies": {
|
|
353
|
+
"@types/react": "^...",
|
|
354
|
+
"@testing-library/react": "^...",
|
|
355
|
+
"@testing-library/jest-dom": "^..."
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
`);
|
|
359
|
+
}
|
|
360
|
+
static setFakeWriteFile() {
|
|
361
|
+
CliCommandRunner_1.default.writeFile =
|
|
362
|
+
fake_node_core_1.fakeWriteFile;
|
|
363
|
+
(0, fake_node_core_1.resetCallsToWriteFile)();
|
|
364
|
+
}
|
|
291
365
|
static CliCommandRunner(args) {
|
|
292
366
|
return CliCommandRunner_1.default.Create(args);
|
|
293
367
|
}
|
|
294
368
|
}
|
|
369
|
+
_a = CliCommandRunnerTest;
|
|
295
370
|
CliCommandRunnerTest.createImplCommand = 'create.impl';
|
|
296
371
|
CliCommandRunnerTest.interfaceName = (0, test_utils_1.generateId)();
|
|
297
372
|
CliCommandRunnerTest.implName = (0, test_utils_1.generateId)();
|
|
@@ -306,6 +381,22 @@ CliCommandRunnerTest.implTestSaveDir = 'src/__tests__/modules';
|
|
|
306
381
|
CliCommandRunnerTest.implModuleSaveDir = 'src/modules';
|
|
307
382
|
CliCommandRunnerTest.uiTestSaveDir = 'src/__tests__/ui';
|
|
308
383
|
CliCommandRunnerTest.uiModuleSaveDir = 'src/ui';
|
|
384
|
+
CliCommandRunnerTest.tsconfigPath = 'tsconfig.json';
|
|
385
|
+
CliCommandRunnerTest.randomId = (0, test_utils_1.generateId)();
|
|
386
|
+
CliCommandRunnerTest.originalTsconfigFile = JSON.stringify({
|
|
387
|
+
abc: _a.randomId,
|
|
388
|
+
compilerOptions: {
|
|
389
|
+
abc: _a.randomId,
|
|
390
|
+
},
|
|
391
|
+
}, null, 4);
|
|
392
|
+
CliCommandRunnerTest.updatedTsconfigFile = JSON.stringify({
|
|
393
|
+
abc: _a.randomId,
|
|
394
|
+
compilerOptions: {
|
|
395
|
+
jsx: 'react-jsx',
|
|
396
|
+
abc: _a.randomId,
|
|
397
|
+
},
|
|
398
|
+
}, null, 4);
|
|
399
|
+
CliCommandRunnerTest.installDevDependenciesCommand = 'yarn add -D @types/react @testing-library/react @testing-library/jest-dom';
|
|
309
400
|
CliCommandRunnerTest.interfaceNameMessage = 'What should the interface be called? Example: YourInterface';
|
|
310
401
|
CliCommandRunnerTest.implNameMessage = 'What should the implementation class be called? Example: YourInterfaceImpl';
|
|
311
402
|
CliCommandRunnerTest.packageNameMessage = 'What should the package be called? Example: useful-package';
|
|
@@ -357,6 +448,18 @@ __decorate([
|
|
|
357
448
|
__decorate([
|
|
358
449
|
(0, test_utils_1.test)()
|
|
359
450
|
], CliCommandRunnerTest, "createUiCreatesInstance", null);
|
|
451
|
+
__decorate([
|
|
452
|
+
(0, test_utils_1.test)()
|
|
453
|
+
], CliCommandRunnerTest, "createUiPromptsInstallDependenciesIfMissing", null);
|
|
454
|
+
__decorate([
|
|
455
|
+
(0, test_utils_1.test)()
|
|
456
|
+
], CliCommandRunnerTest, "createUiInstallsDependenciesIfMissing", null);
|
|
457
|
+
__decorate([
|
|
458
|
+
(0, test_utils_1.test)()
|
|
459
|
+
], CliCommandRunnerTest, "createUiUpdatesTsconfigIfDependenciesWereMissing", null);
|
|
460
|
+
__decorate([
|
|
461
|
+
(0, test_utils_1.test)()
|
|
462
|
+
], CliCommandRunnerTest, "createUiDoesNotPromptIfDependenciesAreInstalled", null);
|
|
360
463
|
__decorate([
|
|
361
464
|
(0, test_utils_1.test)()
|
|
362
465
|
], CliCommandRunnerTest, "createUiPromptsUserForInput", null);
|
|
@@ -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":"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"}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { exec as execSync } from 'child_process';
|
|
2
|
+
import { mkdir, readFile, writeFile } from 'fs/promises';
|
|
2
3
|
import prompts from 'prompts';
|
|
3
4
|
export default class CliCommandRunner implements CommandRunner {
|
|
4
5
|
static Class?: CommandRunnerConstructor;
|
|
5
|
-
static
|
|
6
|
+
static exec: typeof execSync.__promisify__;
|
|
6
7
|
static mkdir: typeof mkdir;
|
|
8
|
+
static prompts: typeof prompts;
|
|
9
|
+
static readFile: typeof readFile;
|
|
10
|
+
static writeFile: typeof writeFile;
|
|
7
11
|
private args;
|
|
8
12
|
private readonly createImplCommand;
|
|
9
13
|
private interfaceName;
|
|
@@ -39,6 +43,16 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
39
43
|
private splitOnCommaOrWhitespace;
|
|
40
44
|
private get userInputExistsForCreatePackage();
|
|
41
45
|
private createUiModule;
|
|
46
|
+
private installDependenciesIfNeeded;
|
|
47
|
+
private checkIfDependenciesAreInstalled;
|
|
48
|
+
private loadPackageJson;
|
|
49
|
+
private readonly packageJsonPath;
|
|
50
|
+
private readonly requiredDevDependencies;
|
|
51
|
+
private promptForInstallDependencies;
|
|
52
|
+
private installReactDependencies;
|
|
53
|
+
private updateTsconfigForReact;
|
|
54
|
+
private loadTsconfig;
|
|
55
|
+
private readonly tsconfigPath;
|
|
42
56
|
private promptForUimodule;
|
|
43
57
|
private readonly componentNameMessage;
|
|
44
58
|
private makeRequiredUiDirectories;
|
|
@@ -46,8 +60,11 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
46
60
|
private readonly uiTestSaveDir;
|
|
47
61
|
private readonly uiModuleSaveDir;
|
|
48
62
|
private get uiFakeSaveDir();
|
|
49
|
-
private get
|
|
63
|
+
private get exec();
|
|
50
64
|
private get mkdir();
|
|
65
|
+
private get prompts();
|
|
66
|
+
private get readFile();
|
|
67
|
+
private get writeFile();
|
|
51
68
|
private ImplAutomodule;
|
|
52
69
|
private UiAutomodule;
|
|
53
70
|
private NpmAutopackage;
|
|
@@ -3,9 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const child_process_1 = require("child_process");
|
|
6
7
|
const promises_1 = require("fs/promises");
|
|
7
8
|
const os_1 = __importDefault(require("os"));
|
|
8
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const util_1 = require("util");
|
|
9
11
|
const meta_node_1 = require("@neurodevs/meta-node");
|
|
10
12
|
const prompts_1 = __importDefault(require("prompts"));
|
|
11
13
|
class CliCommandRunner {
|
|
@@ -25,6 +27,13 @@ class CliCommandRunner {
|
|
|
25
27
|
this.packageNameMessage = 'What should the package be called? Example: useful-package';
|
|
26
28
|
this.descriptionMessage = 'What should the package description be? Example: A useful package.';
|
|
27
29
|
this.keywordsMessage = 'Enter keywords (comma or space separated, lowercase, optional):';
|
|
30
|
+
this.packageJsonPath = 'package.json';
|
|
31
|
+
this.requiredDevDependencies = [
|
|
32
|
+
'@types/react',
|
|
33
|
+
'@testing-library/react',
|
|
34
|
+
'@testing-library/jest-dom',
|
|
35
|
+
];
|
|
36
|
+
this.tsconfigPath = 'tsconfig.json';
|
|
28
37
|
this.componentNameMessage = 'What should the component be called? Example: YourComponent';
|
|
29
38
|
this.uiTestSaveDir = 'src/__tests__/ui';
|
|
30
39
|
this.uiModuleSaveDir = 'src/ui';
|
|
@@ -139,6 +148,7 @@ class CliCommandRunner {
|
|
|
139
148
|
return this.packageName && this.description;
|
|
140
149
|
}
|
|
141
150
|
async createUiModule() {
|
|
151
|
+
await this.installDependenciesIfNeeded();
|
|
142
152
|
const { componentName } = await this.promptForUimodule();
|
|
143
153
|
this.componentName = componentName;
|
|
144
154
|
if (!this.componentName) {
|
|
@@ -148,6 +158,55 @@ class CliCommandRunner {
|
|
|
148
158
|
const instance = this.UiAutomodule();
|
|
149
159
|
await instance.run();
|
|
150
160
|
}
|
|
161
|
+
async installDependenciesIfNeeded() {
|
|
162
|
+
const isInstalled = await this.checkIfDependenciesAreInstalled();
|
|
163
|
+
if (!isInstalled) {
|
|
164
|
+
const { shouldInstall } = await this.promptForInstallDependencies();
|
|
165
|
+
if (shouldInstall) {
|
|
166
|
+
await this.installReactDependencies();
|
|
167
|
+
await this.updateTsconfigForReact();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
async checkIfDependenciesAreInstalled() {
|
|
172
|
+
const original = await this.loadPackageJson();
|
|
173
|
+
const parsed = JSON.parse(original);
|
|
174
|
+
const devDependencies = Object.keys(parsed.devDependencies ?? {});
|
|
175
|
+
return this.requiredDevDependencies.every((dep) => devDependencies.includes(dep));
|
|
176
|
+
}
|
|
177
|
+
async loadPackageJson() {
|
|
178
|
+
return await this.readFile(this.packageJsonPath, 'utf-8');
|
|
179
|
+
}
|
|
180
|
+
async promptForInstallDependencies() {
|
|
181
|
+
return await this.prompts([
|
|
182
|
+
{
|
|
183
|
+
type: 'confirm',
|
|
184
|
+
name: 'shouldInstall',
|
|
185
|
+
message: 'Some required dependencies are missing! Press Enter to install, or any other key to abort.',
|
|
186
|
+
initial: true,
|
|
187
|
+
},
|
|
188
|
+
]);
|
|
189
|
+
}
|
|
190
|
+
async installReactDependencies() {
|
|
191
|
+
console.log('Installing required dependencies...');
|
|
192
|
+
await this.exec('yarn add -D @types/react @testing-library/react @testing-library/jest-dom');
|
|
193
|
+
}
|
|
194
|
+
async updateTsconfigForReact() {
|
|
195
|
+
console.log('Updating tsconfig.json for React...');
|
|
196
|
+
const original = await this.loadTsconfig();
|
|
197
|
+
const parsed = JSON.parse(original);
|
|
198
|
+
const updated = JSON.stringify({
|
|
199
|
+
...parsed,
|
|
200
|
+
compilerOptions: {
|
|
201
|
+
jsx: 'react-jsx',
|
|
202
|
+
...parsed.compilerOptions,
|
|
203
|
+
},
|
|
204
|
+
}, null, 4);
|
|
205
|
+
await this.writeFile(this.tsconfigPath, updated);
|
|
206
|
+
}
|
|
207
|
+
async loadTsconfig() {
|
|
208
|
+
return await this.readFile(this.tsconfigPath, 'utf-8');
|
|
209
|
+
}
|
|
151
210
|
async promptForUimodule() {
|
|
152
211
|
return await this.prompts([
|
|
153
212
|
{
|
|
@@ -170,12 +229,21 @@ class CliCommandRunner {
|
|
|
170
229
|
get uiFakeSaveDir() {
|
|
171
230
|
return `src/testDoubles/${this.componentName}`;
|
|
172
231
|
}
|
|
173
|
-
get
|
|
174
|
-
return CliCommandRunner.
|
|
232
|
+
get exec() {
|
|
233
|
+
return CliCommandRunner.exec;
|
|
175
234
|
}
|
|
176
235
|
get mkdir() {
|
|
177
236
|
return CliCommandRunner.mkdir;
|
|
178
237
|
}
|
|
238
|
+
get prompts() {
|
|
239
|
+
return CliCommandRunner.prompts;
|
|
240
|
+
}
|
|
241
|
+
get readFile() {
|
|
242
|
+
return CliCommandRunner.readFile;
|
|
243
|
+
}
|
|
244
|
+
get writeFile() {
|
|
245
|
+
return CliCommandRunner.writeFile;
|
|
246
|
+
}
|
|
179
247
|
ImplAutomodule() {
|
|
180
248
|
return meta_node_1.ImplAutomodule.Create({
|
|
181
249
|
testSaveDir: this.implTestSaveDir,
|
|
@@ -206,7 +274,10 @@ class CliCommandRunner {
|
|
|
206
274
|
});
|
|
207
275
|
}
|
|
208
276
|
}
|
|
209
|
-
CliCommandRunner.
|
|
277
|
+
CliCommandRunner.exec = (0, util_1.promisify)(child_process_1.exec);
|
|
210
278
|
CliCommandRunner.mkdir = promises_1.mkdir;
|
|
279
|
+
CliCommandRunner.prompts = prompts_1.default;
|
|
280
|
+
CliCommandRunner.readFile = promises_1.readFile;
|
|
281
|
+
CliCommandRunner.writeFile = promises_1.writeFile;
|
|
211
282
|
exports.default = CliCommandRunner;
|
|
212
283
|
//# sourceMappingURL=CliCommandRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliCommandRunner.js","sourceRoot":"","sources":["../../src/modules/CliCommandRunner.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
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.23",
|
|
4
4
|
"description": "CLI tools for the Neurodevs ecosystem.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"nodejs",
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
"watch.tsc": "tsc -w"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@neurodevs/meta-node": "^0.10.
|
|
51
|
+
"@neurodevs/meta-node": "^0.10.4",
|
|
52
52
|
"prompts": "^2.4.2"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@neurodevs/fake-node-core": "^0.
|
|
55
|
+
"@neurodevs/fake-node-core": "^0.2.2",
|
|
56
56
|
"@sprucelabs/jest-json-reporter": "^9.0.35",
|
|
57
57
|
"@sprucelabs/resolve-path-aliases": "^3.0.18",
|
|
58
58
|
"@sprucelabs/test": "^10.0.14",
|
|
@@ -1,15 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { exec as execSync } from 'child_process'
|
|
2
|
+
import { mkdir, readFile, writeFile } from 'fs/promises'
|
|
2
3
|
import os from 'os'
|
|
3
4
|
import path from 'path'
|
|
5
|
+
import { promisify } from 'util'
|
|
4
6
|
import AbstractSpruceTest, {
|
|
5
7
|
test,
|
|
6
8
|
assert,
|
|
7
9
|
generateId,
|
|
8
10
|
} from '@sprucelabs/test-utils'
|
|
9
11
|
import {
|
|
12
|
+
callsToExec,
|
|
10
13
|
callsToMkdir,
|
|
14
|
+
callsToWriteFile,
|
|
15
|
+
fakeExec,
|
|
11
16
|
fakeMkdir,
|
|
17
|
+
fakeReadFile,
|
|
18
|
+
fakeWriteFile,
|
|
19
|
+
resetCallsToExec,
|
|
12
20
|
resetCallsToMkdir,
|
|
21
|
+
resetCallsToReadFile,
|
|
22
|
+
resetCallsToWriteFile,
|
|
23
|
+
setFakeReadFileResult,
|
|
13
24
|
} from '@neurodevs/fake-node-core'
|
|
14
25
|
import {
|
|
15
26
|
FakeAutomodule,
|
|
@@ -26,6 +37,8 @@ import fakePrompts, {
|
|
|
26
37
|
setFakeResponses,
|
|
27
38
|
} from '../../testDoubles/prompts/fakePrompts'
|
|
28
39
|
|
|
40
|
+
const exec = promisify(execSync)
|
|
41
|
+
|
|
29
42
|
export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
30
43
|
private static readonly createImplCommand = 'create.impl'
|
|
31
44
|
private static readonly interfaceName = generateId()
|
|
@@ -47,8 +60,12 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
47
60
|
this.setFakeImplAutomodule()
|
|
48
61
|
this.setFakeUiAutomodule()
|
|
49
62
|
this.setFakeAutopackage()
|
|
50
|
-
|
|
63
|
+
|
|
64
|
+
this.setFakeExec()
|
|
51
65
|
this.setFakeMkdir()
|
|
66
|
+
this.setFakePrompts()
|
|
67
|
+
this.setFakeReadFile()
|
|
68
|
+
this.setFakeWriteFile()
|
|
52
69
|
|
|
53
70
|
process.env.GITHUB_TOKEN = this.githubToken
|
|
54
71
|
}
|
|
@@ -279,6 +296,69 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
279
296
|
)
|
|
280
297
|
}
|
|
281
298
|
|
|
299
|
+
@test()
|
|
300
|
+
protected static async createUiPromptsInstallDependenciesIfMissing() {
|
|
301
|
+
this.setFakeReadFileResultPackageJson()
|
|
302
|
+
|
|
303
|
+
await this.runCreateUi()
|
|
304
|
+
|
|
305
|
+
assert.isEqualDeep(
|
|
306
|
+
callsToFakePrompts[0],
|
|
307
|
+
[
|
|
308
|
+
{
|
|
309
|
+
type: 'confirm',
|
|
310
|
+
name: 'shouldInstall',
|
|
311
|
+
message:
|
|
312
|
+
'Some required dependencies are missing! Press Enter to install, or any other key to abort.',
|
|
313
|
+
initial: true,
|
|
314
|
+
},
|
|
315
|
+
],
|
|
316
|
+
'Did not prompt user for expected input!'
|
|
317
|
+
)
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
@test()
|
|
321
|
+
protected static async createUiInstallsDependenciesIfMissing() {
|
|
322
|
+
this.setFakeReadFileResultPackageJson()
|
|
323
|
+
|
|
324
|
+
await this.runCreateUi({
|
|
325
|
+
shouldInstall: true,
|
|
326
|
+
})
|
|
327
|
+
|
|
328
|
+
assert.isEqualDeep(
|
|
329
|
+
callsToExec[0],
|
|
330
|
+
this.installDevDependenciesCommand,
|
|
331
|
+
'Did not install dependencies!'
|
|
332
|
+
)
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
@test()
|
|
336
|
+
protected static async createUiUpdatesTsconfigIfDependenciesWereMissing() {
|
|
337
|
+
this.setFakeReadFileResultToTsconfig()
|
|
338
|
+
this.setFakeReadFileResultPackageJson()
|
|
339
|
+
|
|
340
|
+
await this.runCreateUi({
|
|
341
|
+
shouldInstall: true,
|
|
342
|
+
})
|
|
343
|
+
|
|
344
|
+
assert.isEqualDeep(
|
|
345
|
+
callsToWriteFile[0],
|
|
346
|
+
{
|
|
347
|
+
file: this.tsconfigPath,
|
|
348
|
+
data: this.updatedTsconfigFile,
|
|
349
|
+
options: undefined,
|
|
350
|
+
},
|
|
351
|
+
'Did not update tsconfig!'
|
|
352
|
+
)
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
@test()
|
|
356
|
+
protected static async createUiDoesNotPromptIfDependenciesAreInstalled() {
|
|
357
|
+
await this.runCreateUi()
|
|
358
|
+
|
|
359
|
+
assert.isEqual(callsToFakePrompts.length, 1, 'Prompted too many times!')
|
|
360
|
+
}
|
|
361
|
+
|
|
282
362
|
@test()
|
|
283
363
|
protected static async createUiPromptsUserForInput() {
|
|
284
364
|
await this.runCreateUi()
|
|
@@ -372,7 +452,9 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
372
452
|
)
|
|
373
453
|
}
|
|
374
454
|
|
|
375
|
-
private static async runCreateUi(
|
|
455
|
+
private static async runCreateUi(
|
|
456
|
+
responses?: Record<string, string | boolean>
|
|
457
|
+
) {
|
|
376
458
|
setFakeResponses({
|
|
377
459
|
componentName: this.componentName,
|
|
378
460
|
...responses,
|
|
@@ -384,6 +466,14 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
384
466
|
return instance
|
|
385
467
|
}
|
|
386
468
|
|
|
469
|
+
private static setFakeReadFileResultToTsconfig() {
|
|
470
|
+
setFakeReadFileResult(this.tsconfigPath, this.originalTsconfigFile)
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
private static setFakeReadFileResultPackageJson() {
|
|
474
|
+
setFakeReadFileResult('package.json', '{}')
|
|
475
|
+
}
|
|
476
|
+
|
|
387
477
|
private static async runCreateImpl(responses?: Record<string, string>) {
|
|
388
478
|
setFakeResponses({
|
|
389
479
|
interfaceName: this.interfaceName,
|
|
@@ -438,6 +528,35 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
438
528
|
return `src/testDoubles/${this.componentName}`
|
|
439
529
|
}
|
|
440
530
|
|
|
531
|
+
private static readonly tsconfigPath = 'tsconfig.json'
|
|
532
|
+
private static readonly randomId = generateId()
|
|
533
|
+
|
|
534
|
+
private static readonly originalTsconfigFile = JSON.stringify(
|
|
535
|
+
{
|
|
536
|
+
abc: this.randomId,
|
|
537
|
+
compilerOptions: {
|
|
538
|
+
abc: this.randomId,
|
|
539
|
+
},
|
|
540
|
+
},
|
|
541
|
+
null,
|
|
542
|
+
4
|
|
543
|
+
)
|
|
544
|
+
|
|
545
|
+
private static readonly updatedTsconfigFile = JSON.stringify(
|
|
546
|
+
{
|
|
547
|
+
abc: this.randomId,
|
|
548
|
+
compilerOptions: {
|
|
549
|
+
jsx: 'react-jsx',
|
|
550
|
+
abc: this.randomId,
|
|
551
|
+
},
|
|
552
|
+
},
|
|
553
|
+
null,
|
|
554
|
+
4
|
|
555
|
+
)
|
|
556
|
+
|
|
557
|
+
private static readonly installDevDependenciesCommand =
|
|
558
|
+
'yarn add -D @types/react @testing-library/react @testing-library/jest-dom'
|
|
559
|
+
|
|
441
560
|
private static setFakeImplAutomodule() {
|
|
442
561
|
ImplAutomodule.Class = FakeAutomodule
|
|
443
562
|
FakeAutomodule.resetTestDouble()
|
|
@@ -453,6 +572,11 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
453
572
|
FakeAutopackage.resetTestDouble()
|
|
454
573
|
}
|
|
455
574
|
|
|
575
|
+
private static setFakeExec() {
|
|
576
|
+
CliCommandRunner.exec = fakeExec as unknown as typeof exec
|
|
577
|
+
resetCallsToExec()
|
|
578
|
+
}
|
|
579
|
+
|
|
456
580
|
private static setFakeMkdir() {
|
|
457
581
|
CliCommandRunner.mkdir = fakeMkdir as unknown as typeof mkdir
|
|
458
582
|
resetCallsToMkdir()
|
|
@@ -463,6 +587,35 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
463
587
|
resetCallsToFakePrompts()
|
|
464
588
|
}
|
|
465
589
|
|
|
590
|
+
private static setFakeReadFile() {
|
|
591
|
+
CliCommandRunner.readFile = fakeReadFile as unknown as typeof readFile
|
|
592
|
+
resetCallsToReadFile()
|
|
593
|
+
|
|
594
|
+
this.setFakeReadFileToInstalledPackageJson()
|
|
595
|
+
this.setFakeReadFileResultToTsconfig()
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
private static setFakeReadFileToInstalledPackageJson() {
|
|
599
|
+
setFakeReadFileResult(
|
|
600
|
+
'package.json',
|
|
601
|
+
`
|
|
602
|
+
{
|
|
603
|
+
"devDependencies": {
|
|
604
|
+
"@types/react": "^...",
|
|
605
|
+
"@testing-library/react": "^...",
|
|
606
|
+
"@testing-library/jest-dom": "^..."
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
`
|
|
610
|
+
)
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
private static setFakeWriteFile() {
|
|
614
|
+
CliCommandRunner.writeFile =
|
|
615
|
+
fakeWriteFile as unknown as typeof writeFile
|
|
616
|
+
resetCallsToWriteFile()
|
|
617
|
+
}
|
|
618
|
+
|
|
466
619
|
private static readonly interfaceNameMessage =
|
|
467
620
|
'What should the interface be called? Example: YourInterface'
|
|
468
621
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { exec as execSync } from 'child_process'
|
|
2
|
+
import { mkdir, readFile, writeFile } from 'fs/promises'
|
|
2
3
|
import os from 'os'
|
|
3
4
|
import path from 'path'
|
|
5
|
+
import { promisify } from 'util'
|
|
4
6
|
import {
|
|
5
7
|
ImplAutomodule,
|
|
6
8
|
NpmAutopackage,
|
|
@@ -10,8 +12,11 @@ import prompts from 'prompts'
|
|
|
10
12
|
|
|
11
13
|
export default class CliCommandRunner implements CommandRunner {
|
|
12
14
|
public static Class?: CommandRunnerConstructor
|
|
13
|
-
public static
|
|
15
|
+
public static exec = promisify(execSync)
|
|
14
16
|
public static mkdir = mkdir
|
|
17
|
+
public static prompts = prompts
|
|
18
|
+
public static readFile = readFile
|
|
19
|
+
public static writeFile = writeFile
|
|
15
20
|
|
|
16
21
|
private args: string[]
|
|
17
22
|
|
|
@@ -188,6 +193,8 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
188
193
|
}
|
|
189
194
|
|
|
190
195
|
private async createUiModule() {
|
|
196
|
+
await this.installDependenciesIfNeeded()
|
|
197
|
+
|
|
191
198
|
const { componentName } = await this.promptForUimodule()
|
|
192
199
|
|
|
193
200
|
this.componentName = componentName
|
|
@@ -202,6 +209,88 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
202
209
|
await instance.run()
|
|
203
210
|
}
|
|
204
211
|
|
|
212
|
+
private async installDependenciesIfNeeded() {
|
|
213
|
+
const isInstalled = await this.checkIfDependenciesAreInstalled()
|
|
214
|
+
|
|
215
|
+
if (!isInstalled) {
|
|
216
|
+
const { shouldInstall } = await this.promptForInstallDependencies()
|
|
217
|
+
|
|
218
|
+
if (shouldInstall) {
|
|
219
|
+
await this.installReactDependencies()
|
|
220
|
+
await this.updateTsconfigForReact()
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
private async checkIfDependenciesAreInstalled() {
|
|
226
|
+
const original = await this.loadPackageJson()
|
|
227
|
+
const parsed = JSON.parse(original)
|
|
228
|
+
const devDependencies = Object.keys(parsed.devDependencies ?? {})
|
|
229
|
+
|
|
230
|
+
return this.requiredDevDependencies.every((dep) =>
|
|
231
|
+
devDependencies.includes(dep)
|
|
232
|
+
)
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
private async loadPackageJson() {
|
|
236
|
+
return await this.readFile(this.packageJsonPath, 'utf-8')
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
private readonly packageJsonPath = 'package.json'
|
|
240
|
+
|
|
241
|
+
private readonly requiredDevDependencies = [
|
|
242
|
+
'@types/react',
|
|
243
|
+
'@testing-library/react',
|
|
244
|
+
'@testing-library/jest-dom',
|
|
245
|
+
]
|
|
246
|
+
|
|
247
|
+
private async promptForInstallDependencies() {
|
|
248
|
+
return await this.prompts([
|
|
249
|
+
{
|
|
250
|
+
type: 'confirm',
|
|
251
|
+
name: 'shouldInstall',
|
|
252
|
+
message:
|
|
253
|
+
'Some required dependencies are missing! Press Enter to install, or any other key to abort.',
|
|
254
|
+
initial: true,
|
|
255
|
+
},
|
|
256
|
+
])
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
private async installReactDependencies() {
|
|
260
|
+
console.log('Installing required dependencies...')
|
|
261
|
+
|
|
262
|
+
await this.exec(
|
|
263
|
+
'yarn add -D @types/react @testing-library/react @testing-library/jest-dom'
|
|
264
|
+
)
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
private async updateTsconfigForReact() {
|
|
268
|
+
console.log('Updating tsconfig.json for React...')
|
|
269
|
+
|
|
270
|
+
const original = await this.loadTsconfig()
|
|
271
|
+
const parsed = JSON.parse(original)
|
|
272
|
+
|
|
273
|
+
const updated = JSON.stringify(
|
|
274
|
+
{
|
|
275
|
+
...parsed,
|
|
276
|
+
compilerOptions: {
|
|
277
|
+
jsx: 'react-jsx',
|
|
278
|
+
...parsed.compilerOptions,
|
|
279
|
+
},
|
|
280
|
+
},
|
|
281
|
+
null,
|
|
282
|
+
4
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
await this.writeFile(this.tsconfigPath, updated)
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
private async loadTsconfig() {
|
|
289
|
+
return await this.readFile(this.tsconfigPath, 'utf-8')
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
private readonly tsconfigPath = 'tsconfig.json'
|
|
293
|
+
|
|
205
294
|
private async promptForUimodule() {
|
|
206
295
|
return await this.prompts([
|
|
207
296
|
{
|
|
@@ -234,14 +323,26 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
234
323
|
return `src/testDoubles/${this.componentName}`
|
|
235
324
|
}
|
|
236
325
|
|
|
237
|
-
private get
|
|
238
|
-
return CliCommandRunner.
|
|
326
|
+
private get exec() {
|
|
327
|
+
return CliCommandRunner.exec
|
|
239
328
|
}
|
|
240
329
|
|
|
241
330
|
private get mkdir() {
|
|
242
331
|
return CliCommandRunner.mkdir
|
|
243
332
|
}
|
|
244
333
|
|
|
334
|
+
private get prompts() {
|
|
335
|
+
return CliCommandRunner.prompts
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
private get readFile() {
|
|
339
|
+
return CliCommandRunner.readFile
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
private get writeFile() {
|
|
343
|
+
return CliCommandRunner.writeFile
|
|
344
|
+
}
|
|
345
|
+
|
|
245
346
|
private ImplAutomodule() {
|
|
246
347
|
return ImplAutomodule.Create({
|
|
247
348
|
testSaveDir: this.implTestSaveDir,
|