@neurodevs/ndx-cli 0.1.9 → 0.1.11
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 +7 -0
- package/build/__tests__/modules/CliCommandRunner.test.js +36 -4
- package/build/__tests__/modules/CliCommandRunner.test.js.map +1 -1
- package/build/modules/CliCommandRunner.d.ts +7 -0
- package/build/modules/CliCommandRunner.js +19 -3
- package/build/modules/CliCommandRunner.js.map +1 -1
- package/build/testDoubles/fakeMkdir.d.ts +6 -0
- package/build/testDoubles/fakeMkdir.js +13 -0
- package/build/testDoubles/fakeMkdir.js.map +1 -0
- package/package.json +2 -2
- package/src/__tests__/modules/CliCommandRunner.test.ts +56 -4
- package/src/modules/CliCommandRunner.ts +24 -3
- package/src/testDoubles/fakeMkdir.ts +12 -0
|
@@ -2,11 +2,16 @@ import AbstractSpruceTest from '@sprucelabs/test-utils';
|
|
|
2
2
|
export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
3
3
|
private static readonly createImplCommand;
|
|
4
4
|
private static readonly createPackageCommand;
|
|
5
|
+
private static readonly testSaveDir;
|
|
6
|
+
private static readonly moduleSaveDir;
|
|
5
7
|
protected static beforeEach(): Promise<void>;
|
|
6
8
|
protected static throwsIfCommandIsNotSupported(): Promise<void>;
|
|
7
9
|
protected static createImplCreatesInstance(): Promise<void>;
|
|
8
10
|
protected static createImplPromptsUserForInput(): Promise<void>;
|
|
9
11
|
protected static createImplDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
12
|
+
protected static createImplCreatesTestSaveDirIfNotExists(): Promise<void>;
|
|
13
|
+
protected static createImplCreatesModuleSaveDirIfNotExists(): Promise<void>;
|
|
14
|
+
protected static createImplCreatesFakeSaveDirIfNotExists(): Promise<void>;
|
|
10
15
|
protected static createImplCreatesImplAutomodule(): Promise<void>;
|
|
11
16
|
protected static createImplRunsImplAutomodule(): Promise<void>;
|
|
12
17
|
protected static createPackageCreatesInstance(): Promise<void>;
|
|
@@ -19,6 +24,8 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
19
24
|
private static runCreatePackage;
|
|
20
25
|
private static expandHomeDir;
|
|
21
26
|
private static splitOnCommaOrWhitespace;
|
|
27
|
+
private static get fakeSaveDir();
|
|
28
|
+
private static setFakeMkdir;
|
|
22
29
|
private static setFakeAutomodule;
|
|
23
30
|
private static setFakeAutopackage;
|
|
24
31
|
private static setFakePrompts;
|
|
@@ -47,13 +47,15 @@ const path_1 = __importDefault(require("path"));
|
|
|
47
47
|
const test_utils_1 = __importStar(require("@sprucelabs/test-utils"));
|
|
48
48
|
const meta_node_1 = require("@neurodevs/meta-node");
|
|
49
49
|
const CliCommandRunner_1 = __importDefault(require("../../modules/CliCommandRunner"));
|
|
50
|
+
const fakeMkdir_1 = __importStar(require("../../testDoubles/fakeMkdir"));
|
|
50
51
|
const fakePrompts_1 = require("../../testDoubles/prompts/fakePrompts");
|
|
51
52
|
class CliCommandRunnerTest extends test_utils_1.default {
|
|
52
53
|
static async beforeEach() {
|
|
53
54
|
await super.beforeEach();
|
|
55
|
+
this.setFakePrompts();
|
|
56
|
+
this.setFakeMkdir();
|
|
54
57
|
this.setFakeAutomodule();
|
|
55
58
|
this.setFakeAutopackage();
|
|
56
|
-
this.setFakePrompts();
|
|
57
59
|
process.env.GITHUB_TOKEN = this.githubToken;
|
|
58
60
|
}
|
|
59
61
|
static async throwsIfCommandIsNotSupported() {
|
|
@@ -88,12 +90,24 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
88
90
|
});
|
|
89
91
|
test_utils_1.assert.isEqual(meta_node_1.FakeAutomodule.numCallsToRun, 0, 'Should not have called run on ImplAutomodule!');
|
|
90
92
|
}
|
|
93
|
+
static async createImplCreatesTestSaveDirIfNotExists() {
|
|
94
|
+
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
|
+
}
|
|
97
|
+
static async createImplCreatesModuleSaveDirIfNotExists() {
|
|
98
|
+
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
|
+
}
|
|
101
|
+
static async createImplCreatesFakeSaveDirIfNotExists() {
|
|
102
|
+
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
|
+
}
|
|
91
105
|
static async createImplCreatesImplAutomodule() {
|
|
92
106
|
await this.runCreateImpl();
|
|
93
107
|
test_utils_1.assert.isEqualDeep(meta_node_1.FakeAutomodule.callsToConstructor[0], {
|
|
94
|
-
testSaveDir:
|
|
95
|
-
moduleSaveDir:
|
|
96
|
-
fakeSaveDir:
|
|
108
|
+
testSaveDir: this.testSaveDir,
|
|
109
|
+
moduleSaveDir: this.moduleSaveDir,
|
|
110
|
+
fakeSaveDir: this.fakeSaveDir,
|
|
97
111
|
interfaceName: this.interfaceName,
|
|
98
112
|
implName: this.implName,
|
|
99
113
|
}, 'Did not create ImplAutomodule with expected options!');
|
|
@@ -179,6 +193,13 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
179
193
|
.map((v) => v.trim())
|
|
180
194
|
.filter(Boolean);
|
|
181
195
|
}
|
|
196
|
+
static get fakeSaveDir() {
|
|
197
|
+
return `src/testDoubles/${this.interfaceName}`;
|
|
198
|
+
}
|
|
199
|
+
static setFakeMkdir() {
|
|
200
|
+
CliCommandRunner_1.default.mkdir = fakeMkdir_1.default;
|
|
201
|
+
(0, fakeMkdir_1.resetCallsToMkdir)();
|
|
202
|
+
}
|
|
182
203
|
static setFakeAutomodule() {
|
|
183
204
|
meta_node_1.ImplAutomodule.Class = meta_node_1.FakeAutomodule;
|
|
184
205
|
meta_node_1.FakeAutomodule.resetTestDouble();
|
|
@@ -212,6 +233,8 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
212
233
|
}
|
|
213
234
|
CliCommandRunnerTest.createImplCommand = 'create.impl';
|
|
214
235
|
CliCommandRunnerTest.createPackageCommand = 'create.package';
|
|
236
|
+
CliCommandRunnerTest.testSaveDir = 'src/__tests__/modules';
|
|
237
|
+
CliCommandRunnerTest.moduleSaveDir = 'src/modules';
|
|
215
238
|
CliCommandRunnerTest.interfaceName = (0, test_utils_1.generateId)();
|
|
216
239
|
CliCommandRunnerTest.implName = (0, test_utils_1.generateId)();
|
|
217
240
|
CliCommandRunnerTest.packageName = (0, test_utils_1.generateId)();
|
|
@@ -235,6 +258,15 @@ __decorate([
|
|
|
235
258
|
__decorate([
|
|
236
259
|
(0, test_utils_1.test)()
|
|
237
260
|
], CliCommandRunnerTest, "createImplDoesNotContinueIfPromptsIsInterrupted", null);
|
|
261
|
+
__decorate([
|
|
262
|
+
(0, test_utils_1.test)()
|
|
263
|
+
], CliCommandRunnerTest, "createImplCreatesTestSaveDirIfNotExists", null);
|
|
264
|
+
__decorate([
|
|
265
|
+
(0, test_utils_1.test)()
|
|
266
|
+
], CliCommandRunnerTest, "createImplCreatesModuleSaveDirIfNotExists", null);
|
|
267
|
+
__decorate([
|
|
268
|
+
(0, test_utils_1.test)()
|
|
269
|
+
], CliCommandRunnerTest, "createImplCreatesFakeSaveDirIfNotExists", null);
|
|
238
270
|
__decorate([
|
|
239
271
|
(0, test_utils_1.test)()
|
|
240
272
|
], CliCommandRunnerTest, "createImplCreatesImplAutomodule", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliCommandRunner.test.js","sourceRoot":"","sources":["../../../src/__tests__/modules/CliCommandRunner.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"CliCommandRunner.test.js","sourceRoot":"","sources":["../../../src/__tests__/modules/CliCommandRunner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { mkdir } from 'fs/promises';
|
|
1
2
|
import prompts from 'prompts';
|
|
2
3
|
export default class CliCommandRunner implements CommandRunner {
|
|
3
4
|
static Class?: CommandRunnerConstructor;
|
|
4
5
|
static prompts: typeof prompts;
|
|
6
|
+
static mkdir: typeof mkdir;
|
|
5
7
|
private args;
|
|
6
8
|
private readonly createImplCommand;
|
|
7
9
|
private interfaceName;
|
|
@@ -25,6 +27,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
25
27
|
private readonly interfaceNameMessage;
|
|
26
28
|
private readonly implNameMessage;
|
|
27
29
|
private get userInputExistsForCreateImpl();
|
|
30
|
+
private makeRequiredDirectories;
|
|
28
31
|
private createPackage;
|
|
29
32
|
private promptForAutopackage;
|
|
30
33
|
private readonly packageNameMessage;
|
|
@@ -33,7 +36,11 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
33
36
|
private splitOnCommaOrWhitespace;
|
|
34
37
|
private get userInputExistsForCreatePackage();
|
|
35
38
|
private expandHomeDir;
|
|
39
|
+
private readonly testSaveDir;
|
|
40
|
+
private readonly moduleSaveDir;
|
|
41
|
+
private get fakeSaveDir();
|
|
36
42
|
private get prompts();
|
|
43
|
+
private get mkdir();
|
|
37
44
|
private ImplAutomodule;
|
|
38
45
|
private NpmAutopackage;
|
|
39
46
|
}
|
|
@@ -3,6 +3,7 @@ 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 promises_1 = require("fs/promises");
|
|
6
7
|
const os_1 = __importDefault(require("os"));
|
|
7
8
|
const path_1 = __importDefault(require("path"));
|
|
8
9
|
const meta_node_1 = require("@neurodevs/meta-node");
|
|
@@ -20,6 +21,8 @@ class CliCommandRunner {
|
|
|
20
21
|
this.packageNameMessage = 'What should the package be called? Example: useful-package';
|
|
21
22
|
this.descriptionMessage = 'What should the package description be? Example: A useful package.';
|
|
22
23
|
this.keywordsMessage = 'Enter keywords (comma or space separated, lowercase, optional):';
|
|
24
|
+
this.testSaveDir = 'src/__tests__/modules';
|
|
25
|
+
this.moduleSaveDir = 'src/modules';
|
|
23
26
|
this.args = args;
|
|
24
27
|
}
|
|
25
28
|
static Create(args) {
|
|
@@ -61,6 +64,7 @@ class CliCommandRunner {
|
|
|
61
64
|
if (!this.userInputExistsForCreateImpl) {
|
|
62
65
|
return;
|
|
63
66
|
}
|
|
67
|
+
await this.makeRequiredDirectories();
|
|
64
68
|
const automodule = this.ImplAutomodule();
|
|
65
69
|
await automodule.run();
|
|
66
70
|
}
|
|
@@ -81,6 +85,11 @@ class CliCommandRunner {
|
|
|
81
85
|
get userInputExistsForCreateImpl() {
|
|
82
86
|
return this.interfaceName && this.implName;
|
|
83
87
|
}
|
|
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
|
+
}
|
|
84
93
|
async createPackage() {
|
|
85
94
|
const { packageName, description, keywords } = await this.promptForAutopackage();
|
|
86
95
|
this.packageName = packageName;
|
|
@@ -127,14 +136,20 @@ class CliCommandRunner {
|
|
|
127
136
|
? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
|
|
128
137
|
: inputPath;
|
|
129
138
|
}
|
|
139
|
+
get fakeSaveDir() {
|
|
140
|
+
return `src/testDoubles/${this.interfaceName}`;
|
|
141
|
+
}
|
|
130
142
|
get prompts() {
|
|
131
143
|
return CliCommandRunner.prompts;
|
|
132
144
|
}
|
|
145
|
+
get mkdir() {
|
|
146
|
+
return CliCommandRunner.mkdir;
|
|
147
|
+
}
|
|
133
148
|
ImplAutomodule() {
|
|
134
149
|
return meta_node_1.ImplAutomodule.Create({
|
|
135
|
-
testSaveDir:
|
|
136
|
-
moduleSaveDir:
|
|
137
|
-
fakeSaveDir:
|
|
150
|
+
testSaveDir: this.testSaveDir,
|
|
151
|
+
moduleSaveDir: this.moduleSaveDir,
|
|
152
|
+
fakeSaveDir: this.fakeSaveDir,
|
|
138
153
|
interfaceName: this.interfaceName,
|
|
139
154
|
implName: this.implName,
|
|
140
155
|
});
|
|
@@ -153,5 +168,6 @@ class CliCommandRunner {
|
|
|
153
168
|
}
|
|
154
169
|
}
|
|
155
170
|
CliCommandRunner.prompts = prompts_1.default;
|
|
171
|
+
CliCommandRunner.mkdir = promises_1.mkdir;
|
|
156
172
|
exports.default = CliCommandRunner;
|
|
157
173
|
//# sourceMappingURL=CliCommandRunner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliCommandRunner.js","sourceRoot":"","sources":["../../src/modules/CliCommandRunner.ts"],"names":[],"mappings":";;;;;AAAA,4CAAmB;AACnB,gDAAuB;AACvB,oDAAqE;AACrE,sDAA6B;AAE7B,MAAqB,gBAAgB;
|
|
1
|
+
{"version":3,"file":"CliCommandRunner.js","sourceRoot":"","sources":["../../src/modules/CliCommandRunner.ts"],"names":[],"mappings":";;;;;AAAA,0CAAmC;AACnC,4CAAmB;AACnB,gDAAuB;AACvB,oDAAqE;AACrE,sDAA6B;AAE7B,MAAqB,gBAAgB;IAqBjC,YAAsB,IAAc;QAdnB,sBAAiB,GAAG,aAAa,CAAA;QAIjC,yBAAoB,GAAG,gBAAgB,CAAA;QAKvC,sBAAiB,GAAG;YACjC,IAAI,CAAC,iBAAiB;YACtB,IAAI,CAAC,oBAAoB;SAC5B,CAAA;QA4EgB,yBAAoB,GACjC,6DAA6D,CAAA;QAEhD,oBAAe,GAC5B,4EAA4E,CAAA;QAmD/D,uBAAkB,GAC/B,4DAA4D,CAAA;QAE/C,uBAAkB,GAC/B,oEAAoE,CAAA;QAEvD,oBAAe,GAC5B,iEAAiE,CAAA;QAmBpD,gBAAW,GAAG,uBAAuB,CAAA;QACrC,kBAAa,GAAG,aAAa,CAAA;QA3J1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IACpB,CAAC;IAEM,MAAM,CAAC,MAAM,CAAC,IAAc;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAEM,KAAK,CAAC,GAAG;QACZ,IAAI,CAAC,4BAA4B,EAAE,CAAA;QACnC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;IAC3B,CAAC;IAEO,4BAA4B;QAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,OAAO,qBAAqB,CAAC,CAAA;QACtE,CAAC;IACL,CAAC;IAED,IAAY,kBAAkB;QAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,CAAC;IAED,IAAY,OAAO;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IAEO,KAAK,CAAC,UAAU;QACpB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;QAC3B,CAAC;aAAM,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACrC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAC9B,CAAC;IACL,CAAC;IAED,IAAY,mBAAmB;QAC3B,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,iBAAiB,CAAA;IAClD,CAAC;IAED,IAAY,sBAAsB;QAC9B,OAAO,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,oBAAoB,CAAA;IACrD,CAAC;IAEO,KAAK,CAAC,UAAU;QACpB,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAEpE,IAAI,CAAC,aAAa,GAAG,aAAa,CAAA;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAExB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACrC,OAAM;QACV,CAAC;QAED,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAA;QAEpC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACxC,MAAM,UAAU,CAAC,GAAG,EAAE,CAAA;IAC1B,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC7B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;YACtB;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,CAAC,CAAA;IACN,CAAC;IAQD,IAAY,4BAA4B;QACpC,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAA;IAC9C,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACjC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC;IAEO,KAAK,CAAC,aAAa;QACvB,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,GACxC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAErC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAExB,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC;YACxC,OAAM;QACV,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACzC,MAAM,WAAW,CAAC,GAAG,EAAE,CAAA;IAC3B,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAC9B,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;YACtB;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,kBAAkB;aACnC;YACD;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI,CAAC,eAAe;gBAC7B,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACd,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;aACxD;SACJ,CAAC,CAAA;IACN,CAAC;IAWO,wBAAwB,CAAC,KAAa;QAC1C,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;IAED,IAAY,+BAA+B;QACvC,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAA;IAC/C,CAAC;IAEO,aAAa,CAAC,SAAiB;QACnC,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;IAKD,IAAY,WAAW;QACnB,OAAO,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAAA;IAClD,CAAC;IAED,IAAY,OAAO;QACf,OAAO,gBAAgB,CAAC,OAAO,CAAA;IACnC,CAAC;IAED,IAAY,KAAK;QACb,OAAO,gBAAgB,CAAC,KAAK,CAAA;IACjC,CAAC;IAEO,cAAc;QAClB,OAAO,0BAAc,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CAAA;IACN,CAAC;IAEO,cAAc;QAClB,OAAO,0BAAc,CAAC,MAAM,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,WAAW;YACtB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC3D,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,CAAC,CAAA;IACN,CAAC;;AAlNa,wBAAO,GAAG,iBAAO,AAAV,CAAU;AACjB,sBAAK,GAAG,gBAAK,AAAR,CAAQ;kBAHV,gBAAgB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.callsToMkdir = void 0;
|
|
4
|
+
exports.resetCallsToMkdir = resetCallsToMkdir;
|
|
5
|
+
exports.default = fakeMkdir;
|
|
6
|
+
exports.callsToMkdir = [];
|
|
7
|
+
function resetCallsToMkdir() {
|
|
8
|
+
exports.callsToMkdir = [];
|
|
9
|
+
}
|
|
10
|
+
async function fakeMkdir(path, options) {
|
|
11
|
+
exports.callsToMkdir.push({ path, options });
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=fakeMkdir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fakeMkdir.js","sourceRoot":"","sources":["../../src/testDoubles/fakeMkdir.ts"],"names":[],"mappings":";;;AAEA,8CAEC;AAED,4BAKC;AAXU,QAAA,YAAY,GAAqC,EAAE,CAAA;AAE9D,SAAgB,iBAAiB;IAC7B,oBAAY,GAAG,EAAE,CAAA;AACrB,CAAC;AAEc,KAAK,UAAU,SAAS,CACnC,IAAY,EACZ,OAAgC;IAEhC,oBAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AACxC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurodevs/ndx-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
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.7.0",
|
|
52
52
|
"prompts": "^2.4.2"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { mkdir } from 'fs/promises'
|
|
1
2
|
import os from 'os'
|
|
2
3
|
import path from 'path'
|
|
3
4
|
import AbstractSpruceTest, {
|
|
@@ -13,6 +14,10 @@ import {
|
|
|
13
14
|
} from '@neurodevs/meta-node'
|
|
14
15
|
import prompts from 'prompts'
|
|
15
16
|
import CliCommandRunner from '../../modules/CliCommandRunner'
|
|
17
|
+
import fakeMkdir, {
|
|
18
|
+
callsToMkdir,
|
|
19
|
+
resetCallsToMkdir,
|
|
20
|
+
} from '../../testDoubles/fakeMkdir'
|
|
16
21
|
import {
|
|
17
22
|
callsToFakePrompts,
|
|
18
23
|
fakePrompts,
|
|
@@ -24,12 +29,17 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
24
29
|
private static readonly createImplCommand = 'create.impl'
|
|
25
30
|
private static readonly createPackageCommand = 'create.package'
|
|
26
31
|
|
|
32
|
+
private static readonly testSaveDir = 'src/__tests__/modules'
|
|
33
|
+
|
|
34
|
+
private static readonly moduleSaveDir = 'src/modules'
|
|
35
|
+
|
|
27
36
|
protected static async beforeEach() {
|
|
28
37
|
await super.beforeEach()
|
|
29
38
|
|
|
39
|
+
this.setFakePrompts()
|
|
40
|
+
this.setFakeMkdir()
|
|
30
41
|
this.setFakeAutomodule()
|
|
31
42
|
this.setFakeAutopackage()
|
|
32
|
-
this.setFakePrompts()
|
|
33
43
|
|
|
34
44
|
process.env.GITHUB_TOKEN = this.githubToken
|
|
35
45
|
}
|
|
@@ -96,6 +106,39 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
96
106
|
)
|
|
97
107
|
}
|
|
98
108
|
|
|
109
|
+
@test()
|
|
110
|
+
protected static async createImplCreatesTestSaveDirIfNotExists() {
|
|
111
|
+
await this.runCreateImpl()
|
|
112
|
+
|
|
113
|
+
assert.isEqualDeep(
|
|
114
|
+
callsToMkdir[0],
|
|
115
|
+
{ path: this.testSaveDir, options: { recursive: true } },
|
|
116
|
+
'Did not create test save dir!'
|
|
117
|
+
)
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@test()
|
|
121
|
+
protected static async createImplCreatesModuleSaveDirIfNotExists() {
|
|
122
|
+
await this.runCreateImpl()
|
|
123
|
+
|
|
124
|
+
assert.isEqualDeep(
|
|
125
|
+
callsToMkdir[1],
|
|
126
|
+
{ path: this.moduleSaveDir, options: { recursive: true } },
|
|
127
|
+
'Did not create module save dir!'
|
|
128
|
+
)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
@test()
|
|
132
|
+
protected static async createImplCreatesFakeSaveDirIfNotExists() {
|
|
133
|
+
await this.runCreateImpl()
|
|
134
|
+
|
|
135
|
+
assert.isEqualDeep(
|
|
136
|
+
callsToMkdir[2],
|
|
137
|
+
{ path: this.fakeSaveDir, options: { recursive: true } },
|
|
138
|
+
'Did not create fake save dir!'
|
|
139
|
+
)
|
|
140
|
+
}
|
|
141
|
+
|
|
99
142
|
@test()
|
|
100
143
|
protected static async createImplCreatesImplAutomodule() {
|
|
101
144
|
await this.runCreateImpl()
|
|
@@ -103,9 +146,9 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
103
146
|
assert.isEqualDeep(
|
|
104
147
|
FakeAutomodule.callsToConstructor[0],
|
|
105
148
|
{
|
|
106
|
-
testSaveDir:
|
|
107
|
-
moduleSaveDir:
|
|
108
|
-
fakeSaveDir:
|
|
149
|
+
testSaveDir: this.testSaveDir,
|
|
150
|
+
moduleSaveDir: this.moduleSaveDir,
|
|
151
|
+
fakeSaveDir: this.fakeSaveDir,
|
|
109
152
|
interfaceName: this.interfaceName,
|
|
110
153
|
implName: this.implName,
|
|
111
154
|
},
|
|
@@ -247,6 +290,15 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
247
290
|
.filter(Boolean)
|
|
248
291
|
}
|
|
249
292
|
|
|
293
|
+
private static get fakeSaveDir() {
|
|
294
|
+
return `src/testDoubles/${this.interfaceName}`
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
private static setFakeMkdir() {
|
|
298
|
+
CliCommandRunner.mkdir = fakeMkdir as unknown as typeof mkdir
|
|
299
|
+
resetCallsToMkdir()
|
|
300
|
+
}
|
|
301
|
+
|
|
250
302
|
private static setFakeAutomodule() {
|
|
251
303
|
ImplAutomodule.Class = FakeAutomodule
|
|
252
304
|
FakeAutomodule.resetTestDouble()
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { mkdir } from 'fs/promises'
|
|
1
2
|
import os from 'os'
|
|
2
3
|
import path from 'path'
|
|
3
4
|
import { ImplAutomodule, NpmAutopackage } from '@neurodevs/meta-node'
|
|
@@ -6,6 +7,7 @@ import prompts from 'prompts'
|
|
|
6
7
|
export default class CliCommandRunner implements CommandRunner {
|
|
7
8
|
public static Class?: CommandRunnerConstructor
|
|
8
9
|
public static prompts = prompts
|
|
10
|
+
public static mkdir = mkdir
|
|
9
11
|
|
|
10
12
|
private args: string[]
|
|
11
13
|
|
|
@@ -76,6 +78,8 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
76
78
|
return
|
|
77
79
|
}
|
|
78
80
|
|
|
81
|
+
await this.makeRequiredDirectories()
|
|
82
|
+
|
|
79
83
|
const automodule = this.ImplAutomodule()
|
|
80
84
|
await automodule.run()
|
|
81
85
|
}
|
|
@@ -105,6 +109,12 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
105
109
|
return this.interfaceName && this.implName
|
|
106
110
|
}
|
|
107
111
|
|
|
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 })
|
|
116
|
+
}
|
|
117
|
+
|
|
108
118
|
private async createPackage() {
|
|
109
119
|
const { packageName, description, keywords } =
|
|
110
120
|
await this.promptForAutopackage()
|
|
@@ -170,15 +180,26 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
170
180
|
: inputPath
|
|
171
181
|
}
|
|
172
182
|
|
|
183
|
+
private readonly testSaveDir = 'src/__tests__/modules'
|
|
184
|
+
private readonly moduleSaveDir = 'src/modules'
|
|
185
|
+
|
|
186
|
+
private get fakeSaveDir() {
|
|
187
|
+
return `src/testDoubles/${this.interfaceName}`
|
|
188
|
+
}
|
|
189
|
+
|
|
173
190
|
private get prompts() {
|
|
174
191
|
return CliCommandRunner.prompts
|
|
175
192
|
}
|
|
176
193
|
|
|
194
|
+
private get mkdir() {
|
|
195
|
+
return CliCommandRunner.mkdir
|
|
196
|
+
}
|
|
197
|
+
|
|
177
198
|
private ImplAutomodule() {
|
|
178
199
|
return ImplAutomodule.Create({
|
|
179
|
-
testSaveDir:
|
|
180
|
-
moduleSaveDir:
|
|
181
|
-
fakeSaveDir:
|
|
200
|
+
testSaveDir: this.testSaveDir,
|
|
201
|
+
moduleSaveDir: this.moduleSaveDir,
|
|
202
|
+
fakeSaveDir: this.fakeSaveDir,
|
|
182
203
|
interfaceName: this.interfaceName,
|
|
183
204
|
implName: this.implName,
|
|
184
205
|
})
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export let callsToMkdir: { path: string; options: any }[] = []
|
|
2
|
+
|
|
3
|
+
export function resetCallsToMkdir() {
|
|
4
|
+
callsToMkdir = []
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export default async function fakeMkdir(
|
|
8
|
+
path: string,
|
|
9
|
+
options: Record<string, boolean>
|
|
10
|
+
) {
|
|
11
|
+
callsToMkdir.push({ path, options })
|
|
12
|
+
}
|