@neurodevs/ndx-cli 0.1.2 → 0.1.3

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.
@@ -14,9 +14,10 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
14
14
  protected static createPackageDoesNotContinueIfPromptsIsInterrupted(): Promise<void>;
15
15
  protected static createPackageCreatesNpmAutopackage(): Promise<void>;
16
16
  protected static createPackageRunsNpmAutopackage(): Promise<void>;
17
- private static expandHomeDir;
18
17
  private static runCreateModule;
19
18
  private static runCreatePackage;
19
+ private static expandHomeDir;
20
+ private static splitOnCommaOrWhitespace;
20
21
  private static setFakeAutomodule;
21
22
  private static setFakeAutopackage;
22
23
  private static setFakePrompts;
@@ -26,6 +27,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
26
27
  private static readonly implName;
27
28
  private static readonly packageName;
28
29
  private static readonly description;
30
+ private static readonly keywords;
29
31
  private static readonly githubToken;
30
32
  private static readonly interfaceNameMessage;
31
33
  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.keywords,
136
144
  gitNamespace: 'neurodevs',
137
145
  npmNamespace: 'neurodevs',
138
146
  installDir: this.expandHomeDir('~/dev'),
@@ -144,11 +152,6 @@ class CliCommandRunnerTest extends test_utils_1.default {
144
152
  await this.runCreatePackage();
145
153
  test_utils_1.assert.isEqual(meta_node_1.FakeAutopackage.numCallsToRun, 1, 'Did not call run on Autopackage!');
146
154
  }
147
- static expandHomeDir(inputPath) {
148
- return inputPath.startsWith('~')
149
- ? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
150
- : inputPath;
151
- }
152
155
  static async runCreateModule(responses) {
153
156
  this.setFakeResponsesForCreateModule(responses);
154
157
  const instance = this.CliCommandRunner([this.createModuleCommand]);
@@ -161,6 +164,17 @@ class CliCommandRunnerTest extends test_utils_1.default {
161
164
  await instance.run();
162
165
  return instance;
163
166
  }
167
+ static expandHomeDir(inputPath) {
168
+ return inputPath.startsWith('~')
169
+ ? path_1.default.join(os_1.default.homedir(), inputPath.slice(1))
170
+ : inputPath;
171
+ }
172
+ static splitOnCommaOrWhitespace(value) {
173
+ return value
174
+ .split(/[\s,]+/)
175
+ .map((v) => v.trim())
176
+ .filter(Boolean);
177
+ }
164
178
  static setFakeAutomodule() {
165
179
  meta_node_1.NodeAutomodule.Class = meta_node_1.FakeAutomodule;
166
180
  meta_node_1.FakeAutomodule.resetTestDouble();
@@ -184,6 +198,7 @@ class CliCommandRunnerTest extends test_utils_1.default {
184
198
  (0, fakePrompts_1.setFakeResponses)({
185
199
  packageName: this.packageName,
186
200
  description: this.description,
201
+ keywords: this.keywords,
187
202
  ...responses,
188
203
  });
189
204
  }
@@ -197,6 +212,7 @@ CliCommandRunnerTest.interfaceName = (0, test_utils_1.generateId)();
197
212
  CliCommandRunnerTest.implName = (0, test_utils_1.generateId)();
198
213
  CliCommandRunnerTest.packageName = (0, test_utils_1.generateId)();
199
214
  CliCommandRunnerTest.description = (0, test_utils_1.generateId)();
215
+ CliCommandRunnerTest.keywords = [(0, test_utils_1.generateId)(), (0, test_utils_1.generateId)()];
200
216
  CliCommandRunnerTest.githubToken = (0, test_utils_1.generateId)();
201
217
  CliCommandRunnerTest.interfaceNameMessage = 'What should the interface be called? Example: YourInterface';
202
218
  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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,2BAA2B;QAC9C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAE7C,mBAAM,CAAC,QAAQ,CACX,QAAQ,EACR,iCAAiC,IAAI,CAAC,mBAAmB,GAAG,CAC/D,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,+BAA+B;QAClD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAE5B,mBAAM,CAAC,WAAW,CACd,gCAAkB,CAAC,CAAC,CAAC,EACrB;YACI;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,EACD,yCAAyC,CAC5C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,iDAAiD;QACpE,MAAM,IAAI,CAAC,eAAe,CAAC;YACvB,aAAa,EAAE,EAAE;YACjB,QAAQ,EAAE,EAAE;SACf,CAAC,CAAA;QAEF,mBAAM,CAAC,OAAO,CACV,0BAAc,CAAC,aAAa,EAC5B,CAAC,EACD,+CAA+C,CAClD,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,iCAAiC;QACpD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAE5B,mBAAM,CAAC,WAAW,CACd,0BAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACpC;YACI,WAAW,EAAE,uBAAuB;YACpC,aAAa,EAAE,aAAa;YAC5B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,EACD,sDAAsD,CACzD,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,8BAA8B;QACjD,MAAM,IAAI,CAAC,eAAe,EAAE,CAAA;QAE5B,mBAAM,CAAC,OAAO,CACV,0BAAc,CAAC,aAAa,EAC5B,CAAC,EACD,qCAAqC,CACxC,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,4BAA4B;QAC/C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE9C,mBAAM,CAAC,QAAQ,CACX,QAAQ,EACR,iCAAiC,IAAI,CAAC,oBAAoB,GAAG,CAChE,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,gCAAgC;QACnD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE7B,mBAAM,CAAC,WAAW,CACd,gCAAkB,CAAC,CAAC,CAAC,EACrB;YACI;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,EACD,yCAAyC,CAC5C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kDAAkD;QACrE,MAAM,IAAI,CAAC,gBAAgB,CAAC;YACxB,WAAW,EAAE,EAAE;YACf,WAAW,EAAE,EAAE;SAClB,CAAC,CAAA;QAEF,mBAAM,CAAC,OAAO,CACV,2BAAe,CAAC,aAAa,EAC7B,CAAC,EACD,4CAA4C,CAC/C,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,kCAAkC;QACrD,IAAI,CAAC,sCAAsC,EAAE,CAAA;QAE7C,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE7B,mBAAM,CAAC,WAAW,CACd,2BAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC,EACrC;YACI,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,EACD,sDAAsD,CACzD,CAAA;IACL,CAAC;IAGsB,AAAb,MAAM,CAAC,KAAK,CAAC,+BAA+B;QAClD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAE7B,mBAAM,CAAC,OAAO,CACV,2BAAe,CAAC,aAAa,EAC7B,CAAC,EACD,kCAAkC,CACrC,CAAA;IACL,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,SAAiB;QAC1C,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;IAEO,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,SAAkC;QACnE,IAAI,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAA;QAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA;QAClE,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAA;QAEpB,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAkC;QACpE,IAAI,CAAC,sCAAsC,CAAC,SAAS,CAAC,CAAA;QAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAA;QACnE,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAA;QAEpB,OAAO,QAAQ,CAAA;IACnB,CAAC;IAEO,MAAM,CAAC,iBAAiB;QAC5B,0BAAc,CAAC,KAAK,GAAG,0BAAc,CAAA;QACrC,0BAAc,CAAC,eAAe,EAAE,CAAA;IACpC,CAAC;IAEO,MAAM,CAAC,kBAAkB;QAC7B,0BAAc,CAAC,KAAK,GAAG,2BAAe,CAAA;QACtC,2BAAe,CAAC,eAAe,EAAE,CAAA;IACrC,CAAC;IAEO,MAAM,CAAC,cAAc;QACzB,0BAAgB,CAAC,OAAO,GAAG,yBAAwC,CAAA;QACnE,IAAA,qCAAuB,GAAE,CAAA;IAC7B,CAAC;IAEO,MAAM,CAAC,+BAA+B,CAC1C,SAAkC;QAElC,IAAA,8BAAgB,EAAC;YACb,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,GAAG,SAAS;SACf,CAAC,CAAA;IACN,CAAC;IAEO,MAAM,CAAC,sCAAsC,CACjD,SAAkC;QAElC,IAAA,8BAAgB,EAAC;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,GAAG,SAAS;SACf,CAAC,CAAA;IACN,CAAC;IAoBO,MAAM,CAAC,gBAAgB,CAAC,IAAe;QAC3C,OAAO,0BAAgB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;IAC7D,CAAC;;AAnQuB,wCAAmB,GAAG,eAAe,CAAA;AACrC,yCAAoB,GAAG,gBAAgB,CAAA;AA8OvC,kCAAa,GAAG,IAAA,uBAAU,GAAE,CAAA;AAC5B,6BAAQ,GAAG,IAAA,uBAAU,GAAE,CAAA;AACvB,gCAAW,GAAG,IAAA,uBAAU,GAAE,CAAA;AAC1B,gCAAW,GAAG,IAAA,uBAAU,GAAE,CAAA;AAC1B,gCAAW,GAAG,IAAA,uBAAU,GAAE,CAAA;AAE1B,yCAAoB,GACxC,6DAA6D,CAAA;AAEzC,oCAAe,GACnC,4EAA4E,CAAA;AAExD,uCAAkB,GACtC,4DAA4D,CAAA;AAExC,8CAAyB,GAC7C,oEAAoE,CAAA;kBAhQvD,oBAAoB;AAed;IADtB,IAAA,iBAAI,GAAE;+DAcN;AAGsB;IADtB,IAAA,iBAAI,GAAE;6DAQN;AAGsB;IADtB,IAAA,iBAAI,GAAE;iEAoBN;AAGsB;IADtB,IAAA,iBAAI,GAAE;mFAYN;AAGsB;IADtB,IAAA,iBAAI,GAAE;mEAcN;AAGsB;IADtB,IAAA,iBAAI,GAAE;gEASN;AAGsB;IADtB,IAAA,iBAAI,GAAE;8DAQN;AAGsB;IADtB,IAAA,iBAAI,GAAE;kEAoBN;AAGsB;IADtB,IAAA,iBAAI,GAAE;oFAYN;AAGsB;IADtB,IAAA,iBAAI,GAAE;oEAmBN;AAGsB;IADtB,IAAA,iBAAI,GAAE;iEASN"}
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: 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":"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"}
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,6 +1,7 @@
1
1
  {
2
2
  "name": "@neurodevs/ndx-cli",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
+ "description": "CLI tools for the Neurodevs ecosystem.",
4
5
  "keywords": [],
5
6
  "license": "MIT",
6
7
  "author": "Eric Yates <hello@ericthecurious.com>",
@@ -13,6 +14,9 @@
13
14
  "url": "https://github.com/neurodevs/ndx-cli/issues"
14
15
  },
15
16
  "main": "build/index.js",
17
+ "bin": {
18
+ "ndx": "build/cli.js"
19
+ },
16
20
  "scripts": {
17
21
  "build.ci": "yarn run build.tsc && yarn run build.resolve-paths && yarn run lint",
18
22
  "build.dev": "yarn run build.tsc --sourceMap ; yarn run resolve-paths.lint",
@@ -73,8 +77,5 @@
73
77
  "moduleNameMapper": {
74
78
  "^#spruce/(.*)$": "<rootDir>/build/.spruce/$1"
75
79
  }
76
- },
77
- "bin": {
78
- "ndx": "build/cli.js"
79
80
  }
80
81
  }
@@ -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.keywords,
183
193
  gitNamespace: 'neurodevs',
184
194
  npmNamespace: 'neurodevs',
185
195
  installDir: this.expandHomeDir('~/dev'),
@@ -201,12 +211,6 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
201
211
  )
202
212
  }
203
213
 
204
- private static expandHomeDir(inputPath: string): string {
205
- return inputPath.startsWith('~')
206
- ? path.join(os.homedir(), inputPath.slice(1))
207
- : inputPath
208
- }
209
-
210
214
  private static async runCreateModule(responses?: Record<string, string>) {
211
215
  this.setFakeResponsesForCreateModule(responses)
212
216
 
@@ -225,6 +229,19 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
225
229
  return instance
226
230
  }
227
231
 
232
+ private static expandHomeDir(inputPath: string): string {
233
+ return inputPath.startsWith('~')
234
+ ? path.join(os.homedir(), inputPath.slice(1))
235
+ : inputPath
236
+ }
237
+
238
+ private static splitOnCommaOrWhitespace(value: string) {
239
+ return value
240
+ .split(/[\s,]+/)
241
+ .map((v: string) => v.trim())
242
+ .filter(Boolean)
243
+ }
244
+
228
245
  private static setFakeAutomodule() {
229
246
  NodeAutomodule.Class = FakeAutomodule
230
247
  FakeAutomodule.resetTestDouble()
@@ -256,6 +273,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
256
273
  setFakeResponses({
257
274
  packageName: this.packageName,
258
275
  description: this.description,
276
+ keywords: this.keywords,
259
277
  ...responses,
260
278
  })
261
279
  }
@@ -264,6 +282,7 @@ export default class CliCommandRunnerTest extends AbstractSpruceTest {
264
282
  private static readonly implName = generateId()
265
283
  private static readonly packageName = generateId()
266
284
  private static readonly description = generateId()
285
+ private static readonly keywords = [generateId(), generateId()]
267
286
  private static readonly githubToken = generateId()
268
287
 
269
288
  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: 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
  }