@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.
@@ -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
- ], 'Did not prompt user for expected input!');
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;IAmBjC,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;QAmC/D,uBAAkB,GAC/B,4DAA4D,CAAA;QAE/C,8BAAyB,GACtC,oEAAoE,CAAA;QA1GpE,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,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAA;QAEtE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAE9B,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;SACJ,CAAC,CAAA;IACN,CAAC;IAQD,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,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;;AA/Ja,wBAAO,GAAG,iBAAO,AAAV,CAAU;kBAFd,gBAAgB"}
1
+ {"version":3,"file":"CliCommandRunner.js","sourceRoot":"","sources":["../../src/modules/CliCommandRunner.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export declare let callsToFakePrompts: Record<string, string>[][];
1
+ export declare let callsToFakePrompts: Record<string, unknown>[][];
2
2
  export declare function resetCallsToFakePrompts(): void;
3
- export declare let fakeResponses: Record<string, string>;
4
- export declare function setFakeResponses(responses: Record<string, string>): void;
5
- export declare function fakePrompts(questions: Record<string, string>[]): Record<string, 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,GAA+B,EAAE,CAAA;AAE9D,SAAgB,uBAAuB;IACnC,0BAAkB,GAAG,EAAE,CAAA;AAC3B,CAAC;AAEU,QAAA,aAAa,GAA2B,EAAE,CAAA;AAErD,SAAgB,gBAAgB,CAAC,SAAiC;IAC9D,qBAAa,GAAG,SAAS,CAAA;AAC7B,CAAC;AAED,SAAgB,WAAW,CAAC,SAAmC;IAC3D,0BAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAClC,OAAO,qBAAa,CAAA;AACxB,CAAC"}
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.2",
4
- "keywords": [],
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 } = await this.promptForAutopackage()
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, 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, string> = {}
7
+ export let fakeResponses: Record<string, unknown> = {}
8
8
 
9
- export function setFakeResponses(responses: Record<string, string>) {
9
+ export function setFakeResponses(responses: Record<string, unknown>) {
10
10
  fakeResponses = responses
11
11
  }
12
12
 
13
- export function fakePrompts(questions: Record<string, string>[]) {
13
+ export function fakePrompts(questions: Record<string, unknown>[]) {
14
14
  callsToFakePrompts.push(questions)
15
15
  return fakeResponses
16
16
  }