@neurodevs/ndx-cli 0.1.6 → 0.1.8
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/.vscode/tasks.json +1 -1
- package/build/__tests__/modules/CliCommandRunner.test.d.ts +8 -8
- package/build/__tests__/modules/CliCommandRunner.test.js +27 -26
- package/build/__tests__/modules/CliCommandRunner.test.js.map +1 -1
- package/build/modules/CliCommandRunner.d.ts +6 -4
- package/build/modules/CliCommandRunner.js +18 -11
- package/build/modules/CliCommandRunner.js.map +1 -1
- package/package.json +2 -2
- package/src/__tests__/modules/CliCommandRunner.test.ts +24 -23
- package/src/modules/CliCommandRunner.ts +21 -12
package/.vscode/tasks.json
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import AbstractSpruceTest from '@sprucelabs/test-utils';
|
|
2
2
|
export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
3
|
-
private static readonly
|
|
3
|
+
private static readonly createImplCommand;
|
|
4
4
|
private static readonly createPackageCommand;
|
|
5
5
|
protected static beforeEach(): Promise<void>;
|
|
6
6
|
protected static throwsIfCommandIsNotSupported(): Promise<void>;
|
|
7
|
-
protected static
|
|
8
|
-
protected static
|
|
9
|
-
protected static
|
|
10
|
-
protected static
|
|
11
|
-
protected static
|
|
7
|
+
protected static createImplCreatesInstance(): Promise<void>;
|
|
8
|
+
protected static createImplPromptsUserForInput(): Promise<void>;
|
|
9
|
+
protected static createImplDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
10
|
+
protected static createImplCreatesImplAutomodule(): Promise<void>;
|
|
11
|
+
protected static createImplRunsImplAutomodule(): Promise<void>;
|
|
12
12
|
protected static createPackageCreatesInstance(): Promise<void>;
|
|
13
13
|
protected static createPackagePromptsUserForInput(): Promise<void>;
|
|
14
14
|
protected static createPackageDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
15
15
|
protected static createPackageCreatesNpmAutopackage(): Promise<void>;
|
|
16
16
|
private static keywordsWithDefaults;
|
|
17
17
|
protected static createPackageRunsNpmAutopackage(): Promise<void>;
|
|
18
|
-
private static
|
|
18
|
+
private static runCreateImpl;
|
|
19
19
|
private static runCreatePackage;
|
|
20
20
|
private static expandHomeDir;
|
|
21
21
|
private static splitOnCommaOrWhitespace;
|
|
22
22
|
private static setFakeAutomodule;
|
|
23
23
|
private static setFakeAutopackage;
|
|
24
24
|
private static setFakePrompts;
|
|
25
|
-
private static
|
|
25
|
+
private static setFakeResponsesForCreateImpl;
|
|
26
26
|
private static setFakePromptResponsesForCreatePackage;
|
|
27
27
|
private static readonly interfaceName;
|
|
28
28
|
private static readonly implName;
|
|
@@ -62,12 +62,12 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
62
62
|
const err = await test_utils_1.assert.doesThrowAsync(async () => await instance.run());
|
|
63
63
|
test_utils_1.assert.isEqual(err.message, `The command "${invalidArg}" is not supported!`, 'Did not receive the expected error!');
|
|
64
64
|
}
|
|
65
|
-
static async
|
|
66
|
-
const instance = await this.
|
|
67
|
-
test_utils_1.assert.isTruthy(instance, `Failed to create instance for ${this.
|
|
65
|
+
static async createImplCreatesInstance() {
|
|
66
|
+
const instance = await this.runCreateImpl();
|
|
67
|
+
test_utils_1.assert.isTruthy(instance, `Failed to create instance for ${this.createImplCommand}!`);
|
|
68
68
|
}
|
|
69
|
-
static async
|
|
70
|
-
await this.
|
|
69
|
+
static async createImplPromptsUserForInput() {
|
|
70
|
+
await this.runCreateImpl();
|
|
71
71
|
test_utils_1.assert.isEqualDeep(fakePrompts_1.callsToFakePrompts[0], [
|
|
72
72
|
{
|
|
73
73
|
type: 'text',
|
|
@@ -81,25 +81,26 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
81
81
|
},
|
|
82
82
|
], 'Did not prompt user for expected input!');
|
|
83
83
|
}
|
|
84
|
-
static async
|
|
85
|
-
await this.
|
|
84
|
+
static async createImplDoesNotContinueIfPromptsIsInterrupted() {
|
|
85
|
+
await this.runCreateImpl({
|
|
86
86
|
interfaceName: '',
|
|
87
87
|
implName: '',
|
|
88
88
|
});
|
|
89
|
-
test_utils_1.assert.isEqual(meta_node_1.FakeAutomodule.numCallsToRun, 0, 'Should not have called run on
|
|
89
|
+
test_utils_1.assert.isEqual(meta_node_1.FakeAutomodule.numCallsToRun, 0, 'Should not have called run on ImplAutomodule!');
|
|
90
90
|
}
|
|
91
|
-
static async
|
|
92
|
-
await this.
|
|
91
|
+
static async createImplCreatesImplAutomodule() {
|
|
92
|
+
await this.runCreateImpl();
|
|
93
93
|
test_utils_1.assert.isEqualDeep(meta_node_1.FakeAutomodule.callsToConstructor[0], {
|
|
94
94
|
testSaveDir: 'src/__tests__/modules',
|
|
95
95
|
moduleSaveDir: 'src/modules',
|
|
96
|
+
fakeSaveDir: `src/testDoubles/${this.interfaceName}`,
|
|
96
97
|
interfaceName: this.interfaceName,
|
|
97
98
|
implName: this.implName,
|
|
98
|
-
}, 'Did not create
|
|
99
|
+
}, 'Did not create ImplAutomodule with expected options!');
|
|
99
100
|
}
|
|
100
|
-
static async
|
|
101
|
-
await this.
|
|
102
|
-
test_utils_1.assert.isEqual(meta_node_1.FakeAutomodule.numCallsToRun, 1, 'Did not call run on
|
|
101
|
+
static async createImplRunsImplAutomodule() {
|
|
102
|
+
await this.runCreateImpl();
|
|
103
|
+
test_utils_1.assert.isEqual(meta_node_1.FakeAutomodule.numCallsToRun, 1, 'Did not call run on ImplAutomodule!');
|
|
103
104
|
}
|
|
104
105
|
static async createPackageCreatesInstance() {
|
|
105
106
|
const instance = await this.runCreatePackage();
|
|
@@ -155,9 +156,9 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
155
156
|
await this.runCreatePackage();
|
|
156
157
|
test_utils_1.assert.isEqual(meta_node_1.FakeAutopackage.numCallsToRun, 1, 'Did not call run on Autopackage!');
|
|
157
158
|
}
|
|
158
|
-
static async
|
|
159
|
-
this.
|
|
160
|
-
const instance = this.CliCommandRunner([this.
|
|
159
|
+
static async runCreateImpl(responses) {
|
|
160
|
+
this.setFakeResponsesForCreateImpl(responses);
|
|
161
|
+
const instance = this.CliCommandRunner([this.createImplCommand]);
|
|
161
162
|
await instance.run();
|
|
162
163
|
return instance;
|
|
163
164
|
}
|
|
@@ -179,7 +180,7 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
179
180
|
.filter(Boolean);
|
|
180
181
|
}
|
|
181
182
|
static setFakeAutomodule() {
|
|
182
|
-
meta_node_1.
|
|
183
|
+
meta_node_1.ImplAutomodule.Class = meta_node_1.FakeAutomodule;
|
|
183
184
|
meta_node_1.FakeAutomodule.resetTestDouble();
|
|
184
185
|
}
|
|
185
186
|
static setFakeAutopackage() {
|
|
@@ -190,7 +191,7 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
190
191
|
CliCommandRunner_1.default.prompts = fakePrompts_1.fakePrompts;
|
|
191
192
|
(0, fakePrompts_1.resetCallsToFakePrompts)();
|
|
192
193
|
}
|
|
193
|
-
static
|
|
194
|
+
static setFakeResponsesForCreateImpl(responses) {
|
|
194
195
|
(0, fakePrompts_1.setFakeResponses)({
|
|
195
196
|
interfaceName: this.interfaceName,
|
|
196
197
|
implName: this.implName,
|
|
@@ -206,10 +207,10 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
206
207
|
});
|
|
207
208
|
}
|
|
208
209
|
static CliCommandRunner(args) {
|
|
209
|
-
return CliCommandRunner_1.default.Create(args
|
|
210
|
+
return CliCommandRunner_1.default.Create(args);
|
|
210
211
|
}
|
|
211
212
|
}
|
|
212
|
-
CliCommandRunnerTest.
|
|
213
|
+
CliCommandRunnerTest.createImplCommand = 'create.impl';
|
|
213
214
|
CliCommandRunnerTest.createPackageCommand = 'create.package';
|
|
214
215
|
CliCommandRunnerTest.interfaceName = (0, test_utils_1.generateId)();
|
|
215
216
|
CliCommandRunnerTest.implName = (0, test_utils_1.generateId)();
|
|
@@ -227,19 +228,19 @@ __decorate([
|
|
|
227
228
|
], CliCommandRunnerTest, "throwsIfCommandIsNotSupported", null);
|
|
228
229
|
__decorate([
|
|
229
230
|
(0, test_utils_1.test)()
|
|
230
|
-
], CliCommandRunnerTest, "
|
|
231
|
+
], CliCommandRunnerTest, "createImplCreatesInstance", null);
|
|
231
232
|
__decorate([
|
|
232
233
|
(0, test_utils_1.test)()
|
|
233
|
-
], CliCommandRunnerTest, "
|
|
234
|
+
], CliCommandRunnerTest, "createImplPromptsUserForInput", null);
|
|
234
235
|
__decorate([
|
|
235
236
|
(0, test_utils_1.test)()
|
|
236
|
-
], CliCommandRunnerTest, "
|
|
237
|
+
], CliCommandRunnerTest, "createImplDoesNotContinueIfPromptsIsInterrupted", null);
|
|
237
238
|
__decorate([
|
|
238
239
|
(0, test_utils_1.test)()
|
|
239
|
-
], CliCommandRunnerTest, "
|
|
240
|
+
], CliCommandRunnerTest, "createImplCreatesImplAutomodule", null);
|
|
240
241
|
__decorate([
|
|
241
242
|
(0, test_utils_1.test)()
|
|
242
|
-
], CliCommandRunnerTest, "
|
|
243
|
+
], CliCommandRunnerTest, "createImplRunsImplAutomodule", null);
|
|
243
244
|
__decorate([
|
|
244
245
|
(0, test_utils_1.test)()
|
|
245
246
|
], CliCommandRunnerTest, "createPackageCreatesInstance", null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CliCommandRunner.test.js","sourceRoot":"","sources":["../../../src/__tests__/modules/CliCommandRunner.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAmB;AACnB,gDAAuB;AACvB,qEAI+B;AAC/B,oDAK6B;AAE7B,sFAA6D;AAC7D,uEAK8C;AAE9C,MAAqB,oBAAqB,SAAQ,oBAAkB;IAItD,MAAM,CAAC,KAAK,CAAC,UAAU;QAC7B,MAAM,KAAK,CAAC,UAAU,EAAE,CAAA;QAExB,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxB,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,IAAI,CAAC,cAAc,EAAE,CAAA;QAErB,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,
|
|
1
|
+
{"version":3,"file":"CliCommandRunner.test.js","sourceRoot":"","sources":["../../../src/__tests__/modules/CliCommandRunner.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
3
3
|
static Class?: CommandRunnerConstructor;
|
|
4
4
|
static prompts: typeof prompts;
|
|
5
5
|
private args;
|
|
6
|
-
private readonly
|
|
6
|
+
private readonly createImplCommand;
|
|
7
7
|
private interfaceName;
|
|
8
8
|
private implName;
|
|
9
9
|
private readonly createPackageCommand;
|
|
@@ -18,11 +18,13 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
18
18
|
private get commandIsSupported();
|
|
19
19
|
private get command();
|
|
20
20
|
private runCommand;
|
|
21
|
-
private
|
|
21
|
+
private get isCreateImplCommand();
|
|
22
|
+
private get isCreatePackageCommand();
|
|
23
|
+
private createImpl;
|
|
22
24
|
private promptForAutomodule;
|
|
23
25
|
private readonly interfaceNameMessage;
|
|
24
26
|
private readonly implNameMessage;
|
|
25
|
-
private get
|
|
27
|
+
private get userInputExistsForCreateImpl();
|
|
26
28
|
private createPackage;
|
|
27
29
|
private promptForAutopackage;
|
|
28
30
|
private readonly packageNameMessage;
|
|
@@ -32,7 +34,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
32
34
|
private get userInputExistsForCreatePackage();
|
|
33
35
|
private expandHomeDir;
|
|
34
36
|
private get prompts();
|
|
35
|
-
private
|
|
37
|
+
private ImplAutomodule;
|
|
36
38
|
private NpmAutopackage;
|
|
37
39
|
}
|
|
38
40
|
export interface CommandRunner {
|
|
@@ -9,10 +9,10 @@ const meta_node_1 = require("@neurodevs/meta-node");
|
|
|
9
9
|
const prompts_1 = __importDefault(require("prompts"));
|
|
10
10
|
class CliCommandRunner {
|
|
11
11
|
constructor(args) {
|
|
12
|
-
this.
|
|
12
|
+
this.createImplCommand = 'create.impl';
|
|
13
13
|
this.createPackageCommand = 'create.package';
|
|
14
14
|
this.supportedCommands = [
|
|
15
|
-
this.
|
|
15
|
+
this.createImplCommand,
|
|
16
16
|
this.createPackageCommand,
|
|
17
17
|
];
|
|
18
18
|
this.interfaceNameMessage = 'What should the interface be called? Example: YourInterface';
|
|
@@ -41,21 +41,27 @@ class CliCommandRunner {
|
|
|
41
41
|
return this.args[0];
|
|
42
42
|
}
|
|
43
43
|
async runCommand() {
|
|
44
|
-
if (this.
|
|
45
|
-
await this.
|
|
44
|
+
if (this.isCreateImplCommand) {
|
|
45
|
+
await this.createImpl();
|
|
46
46
|
}
|
|
47
|
-
else if (this.
|
|
47
|
+
else if (this.isCreatePackageCommand) {
|
|
48
48
|
await this.createPackage();
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
-
|
|
51
|
+
get isCreateImplCommand() {
|
|
52
|
+
return this.command === this.createImplCommand;
|
|
53
|
+
}
|
|
54
|
+
get isCreatePackageCommand() {
|
|
55
|
+
return this.command === this.createPackageCommand;
|
|
56
|
+
}
|
|
57
|
+
async createImpl() {
|
|
52
58
|
const { interfaceName, implName } = await this.promptForAutomodule();
|
|
53
59
|
this.interfaceName = interfaceName;
|
|
54
60
|
this.implName = implName;
|
|
55
|
-
if (!this.
|
|
61
|
+
if (!this.userInputExistsForCreateImpl) {
|
|
56
62
|
return;
|
|
57
63
|
}
|
|
58
|
-
const automodule = this.
|
|
64
|
+
const automodule = this.ImplAutomodule();
|
|
59
65
|
await automodule.run();
|
|
60
66
|
}
|
|
61
67
|
async promptForAutomodule() {
|
|
@@ -72,7 +78,7 @@ class CliCommandRunner {
|
|
|
72
78
|
},
|
|
73
79
|
]);
|
|
74
80
|
}
|
|
75
|
-
get
|
|
81
|
+
get userInputExistsForCreateImpl() {
|
|
76
82
|
return this.interfaceName && this.implName;
|
|
77
83
|
}
|
|
78
84
|
async createPackage() {
|
|
@@ -124,10 +130,11 @@ class CliCommandRunner {
|
|
|
124
130
|
get prompts() {
|
|
125
131
|
return CliCommandRunner.prompts;
|
|
126
132
|
}
|
|
127
|
-
|
|
128
|
-
return meta_node_1.
|
|
133
|
+
ImplAutomodule() {
|
|
134
|
+
return meta_node_1.ImplAutomodule.Create({
|
|
129
135
|
testSaveDir: 'src/__tests__/modules',
|
|
130
136
|
moduleSaveDir: 'src/modules',
|
|
137
|
+
fakeSaveDir: `src/testDoubles/${this.interfaceName}`,
|
|
131
138
|
interfaceName: this.interfaceName,
|
|
132
139
|
implName: this.implName,
|
|
133
140
|
});
|
|
@@ -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;IAoBjC,YAAsB,IAAc;QAdnB,
|
|
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.8",
|
|
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.6.0",
|
|
52
52
|
"prompts": "^2.4.2"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
@@ -8,7 +8,7 @@ import AbstractSpruceTest, {
|
|
|
8
8
|
import {
|
|
9
9
|
FakeAutomodule,
|
|
10
10
|
FakeAutopackage,
|
|
11
|
-
|
|
11
|
+
ImplAutomodule,
|
|
12
12
|
NpmAutopackage,
|
|
13
13
|
} from '@neurodevs/meta-node'
|
|
14
14
|
import prompts from 'prompts'
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
} from '../../testDoubles/prompts/fakePrompts'
|
|
22
22
|
|
|
23
23
|
export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
24
|
-
private static readonly
|
|
24
|
+
private static readonly createImplCommand = 'create.impl'
|
|
25
25
|
private static readonly createPackageCommand = 'create.package'
|
|
26
26
|
|
|
27
27
|
protected static async beforeEach() {
|
|
@@ -51,18 +51,18 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
@test()
|
|
54
|
-
protected static async
|
|
55
|
-
const instance = await this.
|
|
54
|
+
protected static async createImplCreatesInstance() {
|
|
55
|
+
const instance = await this.runCreateImpl()
|
|
56
56
|
|
|
57
57
|
assert.isTruthy(
|
|
58
58
|
instance,
|
|
59
|
-
`Failed to create instance for ${this.
|
|
59
|
+
`Failed to create instance for ${this.createImplCommand}!`
|
|
60
60
|
)
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
@test()
|
|
64
|
-
protected static async
|
|
65
|
-
await this.
|
|
64
|
+
protected static async createImplPromptsUserForInput() {
|
|
65
|
+
await this.runCreateImpl()
|
|
66
66
|
|
|
67
67
|
assert.isEqualDeep(
|
|
68
68
|
callsToFakePrompts[0],
|
|
@@ -83,8 +83,8 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
@test()
|
|
86
|
-
protected static async
|
|
87
|
-
await this.
|
|
86
|
+
protected static async createImplDoesNotContinueIfPromptsIsInterrupted() {
|
|
87
|
+
await this.runCreateImpl({
|
|
88
88
|
interfaceName: '',
|
|
89
89
|
implName: '',
|
|
90
90
|
})
|
|
@@ -92,34 +92,35 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
92
92
|
assert.isEqual(
|
|
93
93
|
FakeAutomodule.numCallsToRun,
|
|
94
94
|
0,
|
|
95
|
-
'Should not have called run on
|
|
95
|
+
'Should not have called run on ImplAutomodule!'
|
|
96
96
|
)
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
@test()
|
|
100
|
-
protected static async
|
|
101
|
-
await this.
|
|
100
|
+
protected static async createImplCreatesImplAutomodule() {
|
|
101
|
+
await this.runCreateImpl()
|
|
102
102
|
|
|
103
103
|
assert.isEqualDeep(
|
|
104
104
|
FakeAutomodule.callsToConstructor[0],
|
|
105
105
|
{
|
|
106
106
|
testSaveDir: 'src/__tests__/modules',
|
|
107
107
|
moduleSaveDir: 'src/modules',
|
|
108
|
+
fakeSaveDir: `src/testDoubles/${this.interfaceName}`,
|
|
108
109
|
interfaceName: this.interfaceName,
|
|
109
110
|
implName: this.implName,
|
|
110
111
|
},
|
|
111
|
-
'Did not create
|
|
112
|
+
'Did not create ImplAutomodule with expected options!'
|
|
112
113
|
)
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
@test()
|
|
116
|
-
protected static async
|
|
117
|
-
await this.
|
|
117
|
+
protected static async createImplRunsImplAutomodule() {
|
|
118
|
+
await this.runCreateImpl()
|
|
118
119
|
|
|
119
120
|
assert.isEqual(
|
|
120
121
|
FakeAutomodule.numCallsToRun,
|
|
121
122
|
1,
|
|
122
|
-
'Did not call run on
|
|
123
|
+
'Did not call run on ImplAutomodule!'
|
|
123
124
|
)
|
|
124
125
|
}
|
|
125
126
|
|
|
@@ -215,10 +216,10 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
215
216
|
)
|
|
216
217
|
}
|
|
217
218
|
|
|
218
|
-
private static async
|
|
219
|
-
this.
|
|
219
|
+
private static async runCreateImpl(responses?: Record<string, string>) {
|
|
220
|
+
this.setFakeResponsesForCreateImpl(responses)
|
|
220
221
|
|
|
221
|
-
const instance = this.CliCommandRunner([this.
|
|
222
|
+
const instance = this.CliCommandRunner([this.createImplCommand])
|
|
222
223
|
await instance.run()
|
|
223
224
|
|
|
224
225
|
return instance
|
|
@@ -247,7 +248,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
247
248
|
}
|
|
248
249
|
|
|
249
250
|
private static setFakeAutomodule() {
|
|
250
|
-
|
|
251
|
+
ImplAutomodule.Class = FakeAutomodule
|
|
251
252
|
FakeAutomodule.resetTestDouble()
|
|
252
253
|
}
|
|
253
254
|
|
|
@@ -261,7 +262,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
261
262
|
resetCallsToFakePrompts()
|
|
262
263
|
}
|
|
263
264
|
|
|
264
|
-
private static
|
|
265
|
+
private static setFakeResponsesForCreateImpl(
|
|
265
266
|
responses?: Record<string, string>
|
|
266
267
|
) {
|
|
267
268
|
setFakeResponses({
|
|
@@ -301,7 +302,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
301
302
|
private static readonly packageDescriptionMessage =
|
|
302
303
|
'What should the package description be? Example: A useful package.'
|
|
303
304
|
|
|
304
|
-
private static CliCommandRunner(args
|
|
305
|
-
return CliCommandRunner.Create(args
|
|
305
|
+
private static CliCommandRunner(args: string[]) {
|
|
306
|
+
return CliCommandRunner.Create(args)
|
|
306
307
|
}
|
|
307
308
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import os from 'os'
|
|
2
2
|
import path from 'path'
|
|
3
|
-
import {
|
|
3
|
+
import { ImplAutomodule, NpmAutopackage } from '@neurodevs/meta-node'
|
|
4
4
|
import prompts from 'prompts'
|
|
5
5
|
|
|
6
6
|
export default class CliCommandRunner implements CommandRunner {
|
|
@@ -9,7 +9,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
9
9
|
|
|
10
10
|
private args: string[]
|
|
11
11
|
|
|
12
|
-
private readonly
|
|
12
|
+
private readonly createImplCommand = 'create.impl'
|
|
13
13
|
private interfaceName!: string
|
|
14
14
|
private implName!: string
|
|
15
15
|
|
|
@@ -19,7 +19,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
19
19
|
private keywords!: string[]
|
|
20
20
|
|
|
21
21
|
private readonly supportedCommands = [
|
|
22
|
-
this.
|
|
22
|
+
this.createImplCommand,
|
|
23
23
|
this.createPackageCommand,
|
|
24
24
|
]
|
|
25
25
|
|
|
@@ -51,24 +51,32 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
private async runCommand() {
|
|
54
|
-
if (this.
|
|
55
|
-
await this.
|
|
56
|
-
} else if (this.
|
|
54
|
+
if (this.isCreateImplCommand) {
|
|
55
|
+
await this.createImpl()
|
|
56
|
+
} else if (this.isCreatePackageCommand) {
|
|
57
57
|
await this.createPackage()
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
private
|
|
61
|
+
private get isCreateImplCommand() {
|
|
62
|
+
return this.command === this.createImplCommand
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private get isCreatePackageCommand() {
|
|
66
|
+
return this.command === this.createPackageCommand
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
private async createImpl() {
|
|
62
70
|
const { interfaceName, implName } = await this.promptForAutomodule()
|
|
63
71
|
|
|
64
72
|
this.interfaceName = interfaceName
|
|
65
73
|
this.implName = implName
|
|
66
74
|
|
|
67
|
-
if (!this.
|
|
75
|
+
if (!this.userInputExistsForCreateImpl) {
|
|
68
76
|
return
|
|
69
77
|
}
|
|
70
78
|
|
|
71
|
-
const automodule = this.
|
|
79
|
+
const automodule = this.ImplAutomodule()
|
|
72
80
|
await automodule.run()
|
|
73
81
|
}
|
|
74
82
|
|
|
@@ -93,7 +101,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
93
101
|
private readonly implNameMessage =
|
|
94
102
|
'What should the implementation class be called? Example: YourInterfaceImpl'
|
|
95
103
|
|
|
96
|
-
private get
|
|
104
|
+
private get userInputExistsForCreateImpl() {
|
|
97
105
|
return this.interfaceName && this.implName
|
|
98
106
|
}
|
|
99
107
|
|
|
@@ -166,10 +174,11 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
166
174
|
return CliCommandRunner.prompts
|
|
167
175
|
}
|
|
168
176
|
|
|
169
|
-
private
|
|
170
|
-
return
|
|
177
|
+
private ImplAutomodule() {
|
|
178
|
+
return ImplAutomodule.Create({
|
|
171
179
|
testSaveDir: 'src/__tests__/modules',
|
|
172
180
|
moduleSaveDir: 'src/modules',
|
|
181
|
+
fakeSaveDir: `src/testDoubles/${this.interfaceName}`,
|
|
173
182
|
interfaceName: this.interfaceName,
|
|
174
183
|
implName: this.implName,
|
|
175
184
|
})
|