@neurodevs/ndx-cli 0.1.2 → 0.1.4
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 +4 -1
- package/build/__tests__/modules/CliCommandRunner.test.js +26 -7
- package/build/__tests__/modules/CliCommandRunner.test.js.map +1 -1
- package/build/modules/CliCommandRunner.d.ts +2 -0
- package/build/modules/CliCommandRunner.js +16 -1
- package/build/modules/CliCommandRunner.js.map +1 -1
- package/build/testDoubles/prompts/fakePrompts.d.ts +4 -4
- package/build/testDoubles/prompts/fakePrompts.js.map +1 -1
- package/package.json +14 -5
- package/src/__tests__/modules/CliCommandRunner.test.ts +32 -9
- package/src/modules/CliCommandRunner.ts +21 -1
- package/src/testDoubles/prompts/fakePrompts.ts +4 -4
|
@@ -13,10 +13,12 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
13
13
|
protected static createPackagePromptsUserForInput(): Promise<void>;
|
|
14
14
|
protected static createPackageDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
|
|
15
15
|
protected static createPackageCreatesNpmAutopackage(): Promise<void>;
|
|
16
|
+
private static keywordsWithDefaults;
|
|
16
17
|
protected static createPackageRunsNpmAutopackage(): Promise<void>;
|
|
17
|
-
private static expandHomeDir;
|
|
18
18
|
private static runCreateModule;
|
|
19
19
|
private static runCreatePackage;
|
|
20
|
+
private static expandHomeDir;
|
|
21
|
+
private static splitOnCommaOrWhitespace;
|
|
20
22
|
private static setFakeAutomodule;
|
|
21
23
|
private static setFakeAutopackage;
|
|
22
24
|
private static setFakePrompts;
|
|
@@ -26,6 +28,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
26
28
|
private static readonly implName;
|
|
27
29
|
private static readonly packageName;
|
|
28
30
|
private static readonly description;
|
|
31
|
+
private static readonly keywords;
|
|
29
32
|
private static readonly githubToken;
|
|
30
33
|
private static readonly interfaceNameMessage;
|
|
31
34
|
private static readonly implNameMessage;
|
|
@@ -107,7 +107,7 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
107
107
|
}
|
|
108
108
|
static async createPackagePromptsUserForInput() {
|
|
109
109
|
await this.runCreatePackage();
|
|
110
|
-
test_utils_1.assert.isEqualDeep(fakePrompts_1.callsToFakePrompts[0], [
|
|
110
|
+
test_utils_1.assert.isEqualDeep(JSON.stringify(fakePrompts_1.callsToFakePrompts[0]), JSON.stringify([
|
|
111
111
|
{
|
|
112
112
|
type: 'text',
|
|
113
113
|
name: 'packageName',
|
|
@@ -118,7 +118,14 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
118
118
|
name: 'description',
|
|
119
119
|
message: this.packageDescriptionMessage,
|
|
120
120
|
},
|
|
121
|
-
|
|
121
|
+
{
|
|
122
|
+
type: 'text',
|
|
123
|
+
name: 'keywords',
|
|
124
|
+
message: 'Enter keywords (comma or space separated, optional):',
|
|
125
|
+
initial: '',
|
|
126
|
+
format: (value) => value ? this.splitOnCommaOrWhitespace(value) : [],
|
|
127
|
+
},
|
|
128
|
+
]), 'Did not prompt user for expected input!');
|
|
122
129
|
}
|
|
123
130
|
static async createPackageDoesNotContinueIfPromptsIsInterrupted() {
|
|
124
131
|
await this.runCreatePackage({
|
|
@@ -133,6 +140,7 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
133
140
|
test_utils_1.assert.isEqualDeep(meta_node_1.FakeAutopackage.callsToConstructor[0], {
|
|
134
141
|
name: this.packageName,
|
|
135
142
|
description: this.description,
|
|
143
|
+
keywords: this.keywordsWithDefaults(),
|
|
136
144
|
gitNamespace: 'neurodevs',
|
|
137
145
|
npmNamespace: 'neurodevs',
|
|
138
146
|
installDir: this.expandHomeDir('~/dev'),
|
|
@@ -140,15 +148,13 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
140
148
|
author: 'Eric Yates <hello@ericthecurious.com>',
|
|
141
149
|
}, 'Did not create NpmAutopackage with expected options!');
|
|
142
150
|
}
|
|
151
|
+
static keywordsWithDefaults() {
|
|
152
|
+
return ['nodejs', 'typescript', 'tdd', ...this.keywords];
|
|
153
|
+
}
|
|
143
154
|
static async createPackageRunsNpmAutopackage() {
|
|
144
155
|
await this.runCreatePackage();
|
|
145
156
|
test_utils_1.assert.isEqual(meta_node_1.FakeAutopackage.numCallsToRun, 1, 'Did not call run on Autopackage!');
|
|
146
157
|
}
|
|
147
|
-
static expandHomeDir(inputPath) {
|
|
148
|
-
return inputPath.startsWith('~')
|
|
149
|
-
? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
|
|
150
|
-
: inputPath;
|
|
151
|
-
}
|
|
152
158
|
static async runCreateModule(responses) {
|
|
153
159
|
this.setFakeResponsesForCreateModule(responses);
|
|
154
160
|
const instance = this.CliCommandRunner([this.createModuleCommand]);
|
|
@@ -161,6 +167,17 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
161
167
|
await instance.run();
|
|
162
168
|
return instance;
|
|
163
169
|
}
|
|
170
|
+
static expandHomeDir(inputPath) {
|
|
171
|
+
return inputPath.startsWith('~')
|
|
172
|
+
? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
|
|
173
|
+
: inputPath;
|
|
174
|
+
}
|
|
175
|
+
static splitOnCommaOrWhitespace(value) {
|
|
176
|
+
return value
|
|
177
|
+
.split(/[\s,]+/)
|
|
178
|
+
.map((v) => v.trim())
|
|
179
|
+
.filter(Boolean);
|
|
180
|
+
}
|
|
164
181
|
static setFakeAutomodule() {
|
|
165
182
|
meta_node_1.NodeAutomodule.Class = meta_node_1.FakeAutomodule;
|
|
166
183
|
meta_node_1.FakeAutomodule.resetTestDouble();
|
|
@@ -184,6 +201,7 @@ class CliCommandRunnerTest extends test_utils_1.default {
|
|
|
184
201
|
(0, fakePrompts_1.setFakeResponses)({
|
|
185
202
|
packageName: this.packageName,
|
|
186
203
|
description: this.description,
|
|
204
|
+
keywords: this.keywords,
|
|
187
205
|
...responses,
|
|
188
206
|
});
|
|
189
207
|
}
|
|
@@ -197,6 +215,7 @@ CliCommandRunnerTest.interfaceName = (0, test_utils_1.generateId)();
|
|
|
197
215
|
CliCommandRunnerTest.implName = (0, test_utils_1.generateId)();
|
|
198
216
|
CliCommandRunnerTest.packageName = (0, test_utils_1.generateId)();
|
|
199
217
|
CliCommandRunnerTest.description = (0, test_utils_1.generateId)();
|
|
218
|
+
CliCommandRunnerTest.keywords = [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()];
|
|
200
219
|
CliCommandRunnerTest.githubToken = (0, test_utils_1.generateId)();
|
|
201
220
|
CliCommandRunnerTest.interfaceNameMessage = 'What should the interface be called? Example: YourInterface';
|
|
202
221
|
CliCommandRunnerTest.implNameMessage = 'What should the implementation class be called? Example: YourInterfaceImpl';
|
|
@@ -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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"}
|
|
@@ -7,6 +7,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
7
7
|
private implName;
|
|
8
8
|
private packageName;
|
|
9
9
|
private description;
|
|
10
|
+
private keywords;
|
|
10
11
|
private readonly createModuleCommand;
|
|
11
12
|
private readonly createPackageCommand;
|
|
12
13
|
private readonly supportedCommands;
|
|
@@ -26,6 +27,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
26
27
|
private promptForAutopackage;
|
|
27
28
|
private readonly packageNameMessage;
|
|
28
29
|
private readonly packageDescriptionMessage;
|
|
30
|
+
private splitOnCommaOrWhitespace;
|
|
29
31
|
private get userInputExistsForCreatePackage();
|
|
30
32
|
private expandHomeDir;
|
|
31
33
|
private get prompts();
|
|
@@ -75,9 +75,10 @@ class CliCommandRunner {
|
|
|
75
75
|
return this.interfaceName && this.implName;
|
|
76
76
|
}
|
|
77
77
|
async createPackage() {
|
|
78
|
-
const { packageName, description } = await this.promptForAutopackage();
|
|
78
|
+
const { packageName, description, keywords } = await this.promptForAutopackage();
|
|
79
79
|
this.packageName = packageName;
|
|
80
80
|
this.description = description;
|
|
81
|
+
this.keywords = keywords;
|
|
81
82
|
if (!this.userInputExistsForCreatePackage) {
|
|
82
83
|
return;
|
|
83
84
|
}
|
|
@@ -96,8 +97,21 @@ class CliCommandRunner {
|
|
|
96
97
|
name: 'description',
|
|
97
98
|
message: this.packageDescriptionMessage,
|
|
98
99
|
},
|
|
100
|
+
{
|
|
101
|
+
type: 'text',
|
|
102
|
+
name: 'keywords',
|
|
103
|
+
message: 'Enter keywords (comma or space separated, optional):',
|
|
104
|
+
initial: '',
|
|
105
|
+
format: (value) => value ? this.splitOnCommaOrWhitespace(value) : [],
|
|
106
|
+
},
|
|
99
107
|
]);
|
|
100
108
|
}
|
|
109
|
+
splitOnCommaOrWhitespace(value) {
|
|
110
|
+
return value
|
|
111
|
+
.split(/[\s,]+/)
|
|
112
|
+
.map((v) => v.trim())
|
|
113
|
+
.filter(Boolean);
|
|
114
|
+
}
|
|
101
115
|
get userInputExistsForCreatePackage() {
|
|
102
116
|
return this.packageName && this.description;
|
|
103
117
|
}
|
|
@@ -121,6 +135,7 @@ class CliCommandRunner {
|
|
|
121
135
|
return meta_node_1.NpmAutopackage.Create({
|
|
122
136
|
name: this.packageName,
|
|
123
137
|
description: this.description,
|
|
138
|
+
keywords: ['nodejs', 'typescript', 'tdd', ...this.keywords],
|
|
124
139
|
gitNamespace: 'neurodevs',
|
|
125
140
|
npmNamespace: 'neurodevs',
|
|
126
141
|
installDir: this.expandHomeDir('~/dev'),
|
|
@@ -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,4CAAmB;AACnB,gDAAuB;AACvB,oDAAqE;AACrE,sDAA6B;AAE7B,MAAqB,gBAAgB;IAqBjC,YAAsB,IAAc;QARnB,wBAAmB,GAAG,eAAe,CAAA;QACrC,yBAAoB,GAAG,gBAAgB,CAAA;QAEvC,sBAAiB,GAAG;YACjC,IAAI,CAAC,mBAAmB;YACxB,IAAI,CAAC,oBAAoB;SAC5B,CAAA;QAkEgB,yBAAoB,GACjC,6DAA6D,CAAA;QAEhD,oBAAe,GAC5B,4EAA4E,CAAA;QA6C/D,uBAAkB,GAC/B,4DAA4D,CAAA;QAE/C,8BAAyB,GACtC,oEAAoE,CAAA;QApHpE,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,OAAO,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,gBAAgB,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,aAAa,EAAE,CAAA;QAC9B,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,YAAY;QACtB,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,8BAA8B,EAAE,CAAC;YACvC,OAAM;QACV,CAAC;QAED,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,8BAA8B;QACtC,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAA;IAC9C,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,yBAAyB;aAC1C;YACD;gBACI,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,sDAAsD;gBAC/D,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;IAQO,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;IAED,IAAY,OAAO;QACf,OAAO,gBAAgB,CAAC,OAAO,CAAA;IACnC,CAAC;IAEO,cAAc;QAClB,OAAO,0BAAc,CAAC,MAAM,CAAC;YACzB,WAAW,EAAE,uBAAuB;YACpC,aAAa,EAAE,aAAa;YAC5B,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;;AAnLa,wBAAO,GAAG,iBAAO,AAAV,CAAU;kBAFd,gBAAgB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export declare let callsToFakePrompts: Record<string,
|
|
1
|
+
export declare let callsToFakePrompts: Record<string, unknown>[][];
|
|
2
2
|
export declare function resetCallsToFakePrompts(): void;
|
|
3
|
-
export declare let fakeResponses: Record<string,
|
|
4
|
-
export declare function setFakeResponses(responses: Record<string,
|
|
5
|
-
export declare function fakePrompts(questions: Record<string,
|
|
3
|
+
export declare let fakeResponses: Record<string, unknown>;
|
|
4
|
+
export declare function setFakeResponses(responses: Record<string, unknown>): void;
|
|
5
|
+
export declare function fakePrompts(questions: Record<string, unknown>[]): Record<string, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fakePrompts.js","sourceRoot":"","sources":["../../../src/testDoubles/prompts/fakePrompts.ts"],"names":[],"mappings":";;;AAEA,0DAEC;AAID,4CAEC;AAED,kCAGC;AAfU,QAAA,kBAAkB,
|
|
1
|
+
{"version":3,"file":"fakePrompts.js","sourceRoot":"","sources":["../../../src/testDoubles/prompts/fakePrompts.ts"],"names":[],"mappings":";;;AAEA,0DAEC;AAID,4CAEC;AAED,kCAGC;AAfU,QAAA,kBAAkB,GAAgC,EAAE,CAAA;AAE/D,SAAgB,uBAAuB;IACnC,0BAAkB,GAAG,EAAE,CAAA;AAC3B,CAAC;AAEU,QAAA,aAAa,GAA4B,EAAE,CAAA;AAEtD,SAAgB,gBAAgB,CAAC,SAAkC;IAC/D,qBAAa,GAAG,SAAS,CAAA;AAC7B,CAAC;AAED,SAAgB,WAAW,CAAC,SAAoC;IAC5D,0BAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAClC,OAAO,qBAAa,CAAA;AACxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@neurodevs/ndx-cli",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"
|
|
3
|
+
"version": "0.1.4",
|
|
4
|
+
"description": "CLI tools for the Neurodevs ecosystem.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"nodejs",
|
|
7
|
+
"typescript",
|
|
8
|
+
"tdd",
|
|
9
|
+
"cli",
|
|
10
|
+
"neurodevs",
|
|
11
|
+
"package",
|
|
12
|
+
"module"
|
|
13
|
+
],
|
|
5
14
|
"license": "MIT",
|
|
6
15
|
"author": "Eric Yates <hello@ericthecurious.com>",
|
|
7
16
|
"homepage": "https://github.com/neurodevs/ndx-cli",
|
|
@@ -13,6 +22,9 @@
|
|
|
13
22
|
"url": "https://github.com/neurodevs/ndx-cli/issues"
|
|
14
23
|
},
|
|
15
24
|
"main": "build/index.js",
|
|
25
|
+
"bin": {
|
|
26
|
+
"ndx": "build/cli.js"
|
|
27
|
+
},
|
|
16
28
|
"scripts": {
|
|
17
29
|
"build.ci": "yarn run build.tsc && yarn run build.resolve-paths && yarn run lint",
|
|
18
30
|
"build.dev": "yarn run build.tsc --sourceMap ; yarn run resolve-paths.lint",
|
|
@@ -73,8 +85,5 @@
|
|
|
73
85
|
"moduleNameMapper": {
|
|
74
86
|
"^#spruce/(.*)$": "<rootDir>/build/.spruce/$1"
|
|
75
87
|
}
|
|
76
|
-
},
|
|
77
|
-
"bin": {
|
|
78
|
-
"ndx": "build/cli.js"
|
|
79
88
|
}
|
|
80
89
|
}
|
|
@@ -138,8 +138,8 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
138
138
|
await this.runCreatePackage()
|
|
139
139
|
|
|
140
140
|
assert.isEqualDeep(
|
|
141
|
-
callsToFakePrompts[0],
|
|
142
|
-
[
|
|
141
|
+
JSON.stringify(callsToFakePrompts[0]),
|
|
142
|
+
JSON.stringify([
|
|
143
143
|
{
|
|
144
144
|
type: 'text',
|
|
145
145
|
name: 'packageName',
|
|
@@ -150,7 +150,16 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
150
150
|
name: 'description',
|
|
151
151
|
message: this.packageDescriptionMessage,
|
|
152
152
|
},
|
|
153
|
-
|
|
153
|
+
{
|
|
154
|
+
type: 'text',
|
|
155
|
+
name: 'keywords',
|
|
156
|
+
message:
|
|
157
|
+
'Enter keywords (comma or space separated, optional):',
|
|
158
|
+
initial: '',
|
|
159
|
+
format: (value: string) =>
|
|
160
|
+
value ? this.splitOnCommaOrWhitespace(value) : [],
|
|
161
|
+
},
|
|
162
|
+
]),
|
|
154
163
|
'Did not prompt user for expected input!'
|
|
155
164
|
)
|
|
156
165
|
}
|
|
@@ -180,6 +189,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
180
189
|
{
|
|
181
190
|
name: this.packageName,
|
|
182
191
|
description: this.description,
|
|
192
|
+
keywords: this.keywordsWithDefaults(),
|
|
183
193
|
gitNamespace: 'neurodevs',
|
|
184
194
|
npmNamespace: 'neurodevs',
|
|
185
195
|
installDir: this.expandHomeDir('~/dev'),
|
|
@@ -190,6 +200,10 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
190
200
|
)
|
|
191
201
|
}
|
|
192
202
|
|
|
203
|
+
private static keywordsWithDefaults() {
|
|
204
|
+
return ['nodejs', 'typescript', 'tdd', ...this.keywords]
|
|
205
|
+
}
|
|
206
|
+
|
|
193
207
|
@test()
|
|
194
208
|
protected static async createPackageRunsNpmAutopackage() {
|
|
195
209
|
await this.runCreatePackage()
|
|
@@ -201,12 +215,6 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
201
215
|
)
|
|
202
216
|
}
|
|
203
217
|
|
|
204
|
-
private static expandHomeDir(inputPath: string): string {
|
|
205
|
-
return inputPath.startsWith('~')
|
|
206
|
-
? path.join(os.homedir(), inputPath.slice(1))
|
|
207
|
-
: inputPath
|
|
208
|
-
}
|
|
209
|
-
|
|
210
218
|
private static async runCreateModule(responses?: Record<string, string>) {
|
|
211
219
|
this.setFakeResponsesForCreateModule(responses)
|
|
212
220
|
|
|
@@ -225,6 +233,19 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
225
233
|
return instance
|
|
226
234
|
}
|
|
227
235
|
|
|
236
|
+
private static expandHomeDir(inputPath: string): string {
|
|
237
|
+
return inputPath.startsWith('~')
|
|
238
|
+
? path.join(os.homedir(), inputPath.slice(1))
|
|
239
|
+
: inputPath
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
private static splitOnCommaOrWhitespace(value: string) {
|
|
243
|
+
return value
|
|
244
|
+
.split(/[\s,]+/)
|
|
245
|
+
.map((v: string) => v.trim())
|
|
246
|
+
.filter(Boolean)
|
|
247
|
+
}
|
|
248
|
+
|
|
228
249
|
private static setFakeAutomodule() {
|
|
229
250
|
NodeAutomodule.Class = FakeAutomodule
|
|
230
251
|
FakeAutomodule.resetTestDouble()
|
|
@@ -256,6 +277,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
256
277
|
setFakeResponses({
|
|
257
278
|
packageName: this.packageName,
|
|
258
279
|
description: this.description,
|
|
280
|
+
keywords: this.keywords,
|
|
259
281
|
...responses,
|
|
260
282
|
})
|
|
261
283
|
}
|
|
@@ -264,6 +286,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
|
|
|
264
286
|
private static readonly implName = generateId()
|
|
265
287
|
private static readonly packageName = generateId()
|
|
266
288
|
private static readonly description = generateId()
|
|
289
|
+
private static readonly keywords = [generateId(), generateId()]
|
|
267
290
|
private static readonly githubToken = generateId()
|
|
268
291
|
|
|
269
292
|
private static readonly interfaceNameMessage =
|
|
@@ -11,8 +11,10 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
11
11
|
|
|
12
12
|
private interfaceName!: string
|
|
13
13
|
private implName!: string
|
|
14
|
+
|
|
14
15
|
private packageName!: string
|
|
15
16
|
private description!: string
|
|
17
|
+
private keywords!: string[]
|
|
16
18
|
|
|
17
19
|
private readonly createModuleCommand = 'create.module'
|
|
18
20
|
private readonly createPackageCommand = 'create.package'
|
|
@@ -97,10 +99,12 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
private async createPackage() {
|
|
100
|
-
const { packageName, description } =
|
|
102
|
+
const { packageName, description, keywords } =
|
|
103
|
+
await this.promptForAutopackage()
|
|
101
104
|
|
|
102
105
|
this.packageName = packageName
|
|
103
106
|
this.description = description
|
|
107
|
+
this.keywords = keywords
|
|
104
108
|
|
|
105
109
|
if (!this.userInputExistsForCreatePackage) {
|
|
106
110
|
return
|
|
@@ -122,6 +126,14 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
122
126
|
name: 'description',
|
|
123
127
|
message: this.packageDescriptionMessage,
|
|
124
128
|
},
|
|
129
|
+
{
|
|
130
|
+
type: 'text',
|
|
131
|
+
name: 'keywords',
|
|
132
|
+
message: 'Enter keywords (comma or space separated, optional):',
|
|
133
|
+
initial: '',
|
|
134
|
+
format: (value) =>
|
|
135
|
+
value ? this.splitOnCommaOrWhitespace(value) : [],
|
|
136
|
+
},
|
|
125
137
|
])
|
|
126
138
|
}
|
|
127
139
|
|
|
@@ -131,6 +143,13 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
131
143
|
private readonly packageDescriptionMessage =
|
|
132
144
|
'What should the package description be? Example: A useful package.'
|
|
133
145
|
|
|
146
|
+
private splitOnCommaOrWhitespace(value: string) {
|
|
147
|
+
return value
|
|
148
|
+
.split(/[\s,]+/)
|
|
149
|
+
.map((v: string) => v.trim())
|
|
150
|
+
.filter(Boolean)
|
|
151
|
+
}
|
|
152
|
+
|
|
134
153
|
private get userInputExistsForCreatePackage() {
|
|
135
154
|
return this.packageName && this.description
|
|
136
155
|
}
|
|
@@ -158,6 +177,7 @@ export default class CliCommandRunner implements CommandRunner {
|
|
|
158
177
|
return NpmAutopackage.Create({
|
|
159
178
|
name: this.packageName,
|
|
160
179
|
description: this.description,
|
|
180
|
+
keywords: ['nodejs', 'typescript', 'tdd', ...this.keywords],
|
|
161
181
|
gitNamespace: 'neurodevs',
|
|
162
182
|
npmNamespace: 'neurodevs',
|
|
163
183
|
installDir: this.expandHomeDir('~/dev'),
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
export let callsToFakePrompts: Record<string,
|
|
1
|
+
export let callsToFakePrompts: Record<string, unknown>[][] = []
|
|
2
2
|
|
|
3
3
|
export function resetCallsToFakePrompts() {
|
|
4
4
|
callsToFakePrompts = []
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
export let fakeResponses: Record<string,
|
|
7
|
+
export let fakeResponses: Record<string, unknown> = {}
|
|
8
8
|
|
|
9
|
-
export function setFakeResponses(responses: Record<string,
|
|
9
|
+
export function setFakeResponses(responses: Record<string, unknown>) {
|
|
10
10
|
fakeResponses = responses
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
export function fakePrompts(questions: Record<string,
|
|
13
|
+
export function fakePrompts(questions: Record<string, unknown>[]) {
|
|
14
14
|
callsToFakePrompts.push(questions)
|
|
15
15
|
return fakeResponses
|
|
16
16
|
}
|