@teambit/cli 0.0.434 → 0.0.438

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.
@@ -1 +1 @@
1
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_cli@0.0.434/dist/cli.docs.md')]
1
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.harmony_cli@0.0.438/dist/cli.docs.md')]
@@ -16,4 +16,10 @@ export declare class CLIParser {
16
16
  private getYargsCommand;
17
17
  private configureGlobalFlags;
18
18
  private throwForNonExistsCommand;
19
+ /**
20
+ * manipulate the command help output. there is no API from Yarn to do any of this, so it needs to be done manually.
21
+ * see https://github.com/yargs/yargs/issues/1956
22
+ */
23
+ private logCommandHelp;
24
+ private findCommandByArgv;
19
25
  }
@@ -35,6 +35,16 @@ function _yargs() {
35
35
  return data;
36
36
  }
37
37
 
38
+ function _lodash() {
39
+ const data = require("lodash");
40
+
41
+ _lodash = function () {
42
+ return data;
43
+ };
44
+
45
+ return data;
46
+ }
47
+
38
48
  function _consumer() {
39
49
  const data = require("@teambit/legacy/dist/consumer");
40
50
 
@@ -168,7 +178,7 @@ class CLIParser {
168
178
  // this is a command help page
169
179
 
170
180
 
171
- _yargs().default.showHelp(logCommandHelp);
181
+ _yargs().default.showHelp(this.logCommandHelp.bind(this));
172
182
 
173
183
  if (!_logger().default.isDaemon) process.exit(0);
174
184
  }
@@ -183,7 +193,7 @@ class CLIParser {
183
193
  throw err;
184
194
  }
185
195
 
186
- _yargs().default.showHelp(logCommandHelp); // eslint-disable-next-line no-console
196
+ _yargs().default.showHelp(this.logCommandHelp.bind(this)); // eslint-disable-next-line no-console
187
197
 
188
198
 
189
199
  console.log(`\n${_chalk().default.yellow(msg)}`);
@@ -273,35 +283,102 @@ class CLIParser {
273
283
  throw new (_commandNotFound().CommandNotFound)(commandName, suggestion);
274
284
  }
275
285
  }
286
+ /**
287
+ * manipulate the command help output. there is no API from Yarn to do any of this, so it needs to be done manually.
288
+ * see https://github.com/yargs/yargs/issues/1956
289
+ */
290
+
291
+
292
+ logCommandHelp(help) {
293
+ const command = this.findCommandByArgv();
294
+
295
+ const replacer = (_, p1, p2) => `${p1}${_chalk().default.green(p2)}`;
296
+
297
+ const lines = help.split('\n');
298
+ const linesWithoutEmpty = (0, _lodash().compact)(lines);
299
+ const cmdLine = linesWithoutEmpty[0];
300
+ const description = [];
301
+ const options = [];
302
+ const globalOptions = [];
303
+ const subCommands = [];
304
+ let optionsStarted = false;
305
+ let globalStarted = false;
306
+ let subCommandsStarted = false;
307
+
308
+ for (let i = 1; i < linesWithoutEmpty.length; i += 1) {
309
+ const currentLine = linesWithoutEmpty[i];
310
+
311
+ if (currentLine === _yargsAdapter().STANDARD_GROUP) {
312
+ optionsStarted = true;
313
+ } else if (currentLine === _yargsAdapter().GLOBAL_GROUP) {
314
+ globalStarted = true;
315
+ } else if (currentLine === 'Commands:') {
316
+ subCommandsStarted = true;
317
+ } else if (globalStarted) {
318
+ globalOptions.push(currentLine);
319
+ } else if (optionsStarted) {
320
+ options.push(currentLine);
321
+ } else if (subCommandsStarted) {
322
+ subCommands.push(currentLine);
323
+ } else {
324
+ description.push(currentLine);
325
+ }
326
+ } // show the flags in green
276
327
 
277
- }
278
- /**
279
- * color the flags with green.
280
- * there is no API to get the options, so it is done by regex.
281
- * see https://github.com/yargs/yargs/issues/1956
282
- */
283
328
 
329
+ const optionsColored = options.map(opt => opt.replace(/(--)([\w-]+)/, replacer).replace(/(-)([\w-]+)/, replacer));
330
+ const optionsStr = options.length ? `\n${_yargsAdapter().STANDARD_GROUP}\n${optionsColored.join('\n')}\n` : '';
331
+ const subCommandsStr = subCommands.length ? `\n${'Commands:'}\n${subCommands.join('\n')}\n` : ''; // show the description in yellow
284
332
 
285
- exports.CLIParser = CLIParser;
333
+ const descriptionColored = description.map(desc => _chalk().default.yellow(desc));
286
334
 
287
- function logCommandHelp(help) {
288
- const replacer = (_, p1, p2) => `${p1}${_chalk().default.green(p2)}`;
335
+ if (command !== null && command !== void 0 && command.extendedDescription) {
336
+ descriptionColored.push(command === null || command === void 0 ? void 0 : command.extendedDescription);
337
+ }
289
338
 
290
- const lines = help.split('\n');
291
- let passedOptions = false;
339
+ const descriptionStr = descriptionColored.join('\n');
340
+ const globalOptionsStr = globalOptions.join('\n');
341
+ const finalOutput = `${cmdLine}
292
342
 
293
- for (let i = 0; i < lines.length; i += 1) {
294
- const line = lines[i];
343
+ ${descriptionStr}
344
+ ${subCommandsStr}${optionsStr}
345
+ ${_yargsAdapter().GLOBAL_GROUP}
346
+ ${globalOptionsStr}`; // eslint-disable-next-line no-console
295
347
 
296
- if (line.startsWith(_yargsAdapter().STANDARD_GROUP)) {
297
- passedOptions = true;
298
- } else if (passedOptions) {
299
- lines[i] = line.replace(/(--)([\w-]+)/, replacer).replace(/(-)([\w-]+)/, replacer);
348
+ console.log(finalOutput);
349
+ }
350
+
351
+ findCommandByArgv() {
352
+ const args = process.argv.slice(2);
353
+ const enteredCommand = args[0];
354
+ const enteredSubCommand = args[1];
355
+
356
+ if (!enteredCommand) {
357
+ return undefined;
358
+ }
359
+
360
+ const isCommandMatch = (cmd, str) => {
361
+ return cmd.name.startsWith(`${str} `) || // e.g. "tag <id>".startsWith("tag ")
362
+ cmd.name === str || // e.g. "globals" === "globals"
363
+ cmd.alias === str; // e.g. "t" === "t"
364
+ };
365
+
366
+ const command = this.commands.find(cmd => isCommandMatch(cmd, enteredCommand));
367
+
368
+ if (!command) {
369
+ return undefined;
370
+ }
371
+
372
+ if (!command.commands || !enteredSubCommand) {
373
+ return command; // no sub-commands.
300
374
  }
301
- } // eslint-disable-next-line no-console
302
375
 
376
+ const subCommand = command.commands.find(cmd => isCommandMatch(cmd, enteredSubCommand));
377
+ return subCommand || command;
378
+ }
303
379
 
304
- console.log(lines.join('\n'));
305
380
  }
306
381
 
382
+ exports.CLIParser = CLIParser;
383
+
307
384
  //# sourceMappingURL=cli-parser.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["cli-parser.ts"],"names":["CLIParser","constructor","commands","groups","parser","yargs","parse","args","process","argv","slice","throwForNonExistsCommand","logger","debug","join","help","configureParser","forEach","command","length","parseCommandWithSubCommands","yargsCommand","getYargsCommand","configureGlobalFlags","setHelpMiddleware","handleCommandFailure","configureCompletion","strict","wrap","middleware","_","printHelp","exit","loader","off","showHelp","logCommandHelp","isDaemon","fail","msg","err","stop","console","log","chalk","yellow","commandsToShowComponentIdsForCompletion","completion","current","completionFilter","done","startsWith","includes","consumer","bitmapIdsFromCurrentLane","map","id","toStringWithoutVersion","parserConfiguration","yarnCommand","builder","cmd","subCommand","YargsAdapter","handler","bind","option","alias","describe","group","GLOBAL_GROUP","global","commandName","commandsNames","c","name","aliases","filter","a","existingGlobalFlags","validCommands","commandExist","didYouMean","returnFirstMatch","suggestions","private","suggestion","Array","isArray","CommandNotFound","replacer","p1","p2","green","lines","split","passedOptions","i","line","STANDARD_GROUP","replace"],"mappings":"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","sourcesContent":["import didYouMean from 'didyoumean';\nimport yargs, { CommandModule } from 'yargs';\nimport { Command } from '@teambit/legacy/dist/cli/command';\nimport { GroupsType } from '@teambit/legacy/dist/cli/command-groups';\nimport { loadConsumerIfExist } from '@teambit/legacy/dist/consumer';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport chalk from 'chalk';\nimport { getCommandId } from './get-command-id';\nimport { formatHelp } from './help';\nimport { GLOBAL_GROUP, STANDARD_GROUP, YargsAdapter } from './yargs-adapter';\nimport { CommandNotFound } from './exceptions/command-not-found';\n\nexport class CLIParser {\n constructor(private commands: Command[], private groups: GroupsType, public parser = yargs) {}\n\n async parse(args = process.argv.slice(2)) {\n this.throwForNonExistsCommand(args[0]);\n logger.debug(`[+] CLI-INPUT: ${args.join(' ')}`);\n yargs(args);\n yargs.help(false);\n this.configureParser();\n this.commands.forEach((command: Command) => {\n if (command.commands && command.commands.length) {\n this.parseCommandWithSubCommands(command);\n } else {\n const yargsCommand = this.getYargsCommand(command);\n yargs.command(yargsCommand);\n }\n });\n this.configureGlobalFlags();\n this.setHelpMiddleware();\n this.handleCommandFailure();\n this.configureCompletion();\n yargs.strict(); // don't allow non-exist flags and non-exist commands\n\n yargs\n // .recommendCommands() // don't use it, it brings the global help of yargs, we have a custom one\n .wrap(null);\n\n await yargs.parse();\n }\n\n private setHelpMiddleware() {\n yargs.middleware((argv) => {\n if (argv._.length === 0 && argv.help) {\n // this is the main help page\n this.printHelp();\n process.exit(0);\n }\n if (argv.help) {\n loader.off(); // stop the \"loading bit...\" before showing help if needed\n // this is a command help page\n yargs.showHelp(logCommandHelp);\n if (!logger.isDaemon) process.exit(0);\n }\n }, true);\n }\n\n private handleCommandFailure() {\n yargs.fail((msg, err) => {\n loader.stop();\n if (err) {\n throw err;\n }\n yargs.showHelp(logCommandHelp);\n // eslint-disable-next-line no-console\n console.log(`\\n${chalk.yellow(msg)}`);\n if (!logger.isDaemon) process.exit(1);\n });\n }\n\n private configureCompletion() {\n const commandsToShowComponentIdsForCompletion = [\n 'show',\n 'diff',\n 'tag',\n 'export',\n 'env',\n 'envs',\n 'compile',\n 'build',\n 'test',\n 'lint',\n 'log',\n 'dependents',\n 'dependencies',\n ];\n // @ts-ignore\n yargs.completion('completion', async function (current, argv, completionFilter, done) {\n if (!current.startsWith('-') && commandsToShowComponentIdsForCompletion.includes(argv._[1])) {\n const consumer = await loadConsumerIfExist();\n done(consumer?.bitmapIdsFromCurrentLane.map((id) => id.toStringWithoutVersion()));\n } else {\n completionFilter();\n }\n });\n }\n\n private printHelp() {\n const help = formatHelp(this.commands, this.groups);\n // eslint-disable-next-line no-console\n console.log(help);\n }\n\n private configureParser() {\n yargs.parserConfiguration({\n // 'strip-dashed': true, // we can't enable it, otherwise, the completion doesn't work\n 'strip-aliased': true,\n 'boolean-negation': false,\n 'populate--': true,\n });\n }\n\n private parseCommandWithSubCommands(command: Command) {\n const yarnCommand = this.getYargsCommand(command);\n yarnCommand.builder = () => {\n command.commands?.forEach((cmd) => {\n const subCommand = this.getYargsCommand(cmd);\n yargs.command(subCommand);\n });\n return yargs;\n };\n yargs.command(yarnCommand);\n }\n\n private getYargsCommand(command: Command): CommandModule {\n const yarnCommand = new YargsAdapter(command);\n yarnCommand.handler = yarnCommand.handler.bind(yarnCommand);\n\n return yarnCommand;\n }\n\n private configureGlobalFlags() {\n yargs\n .option('help', {\n alias: 'h',\n describe: 'show help',\n group: GLOBAL_GROUP,\n })\n .option('version', {\n global: false,\n alias: 'v',\n describe: 'show version',\n group: GLOBAL_GROUP,\n });\n }\n\n private throwForNonExistsCommand(commandName: string) {\n if (!commandName || commandName.startsWith('-')) {\n return;\n }\n const commandsNames = this.commands.map((c) => getCommandId(c.name));\n const aliases = this.commands.map((c) => c.alias).filter((a) => a);\n const existingGlobalFlags = ['-V', '--version'];\n const validCommands = [...commandsNames, ...aliases, ...existingGlobalFlags];\n const commandExist = validCommands.includes(commandName);\n\n if (!commandExist) {\n didYouMean.returnFirstMatch = true;\n const suggestions = didYouMean(\n commandName,\n this.commands.filter((c) => !c.private).map((c) => getCommandId(c.name))\n );\n const suggestion = suggestions && Array.isArray(suggestions) ? suggestions[0] : suggestions;\n\n throw new CommandNotFound(commandName, suggestion as string);\n }\n }\n}\n\n/**\n * color the flags with green.\n * there is no API to get the options, so it is done by regex.\n * see https://github.com/yargs/yargs/issues/1956\n */\nfunction logCommandHelp(help: string) {\n const replacer = (_, p1, p2) => `${p1}${chalk.green(p2)}`;\n const lines = help.split('\\n');\n let passedOptions = false;\n for (let i = 0; i < lines.length; i += 1) {\n const line = lines[i];\n if (line.startsWith(STANDARD_GROUP)) {\n passedOptions = true;\n } else if (passedOptions) {\n lines[i] = line.replace(/(--)([\\w-]+)/, replacer).replace(/(-)([\\w-]+)/, replacer);\n }\n }\n // eslint-disable-next-line no-console\n console.log(lines.join('\\n'));\n}\n"]}
1
+ {"version":3,"sources":["cli-parser.ts"],"names":["CLIParser","constructor","commands","groups","parser","yargs","parse","args","process","argv","slice","throwForNonExistsCommand","logger","debug","join","help","configureParser","forEach","command","length","parseCommandWithSubCommands","yargsCommand","getYargsCommand","configureGlobalFlags","setHelpMiddleware","handleCommandFailure","configureCompletion","strict","wrap","middleware","_","printHelp","exit","loader","off","showHelp","logCommandHelp","bind","isDaemon","fail","msg","err","stop","console","log","chalk","yellow","commandsToShowComponentIdsForCompletion","completion","current","completionFilter","done","startsWith","includes","consumer","bitmapIdsFromCurrentLane","map","id","toStringWithoutVersion","parserConfiguration","yarnCommand","builder","cmd","subCommand","YargsAdapter","handler","option","alias","describe","group","GLOBAL_GROUP","global","commandName","commandsNames","c","name","aliases","filter","a","existingGlobalFlags","validCommands","commandExist","didYouMean","returnFirstMatch","suggestions","private","suggestion","Array","isArray","CommandNotFound","findCommandByArgv","replacer","p1","p2","green","lines","split","linesWithoutEmpty","cmdLine","description","options","globalOptions","subCommands","optionsStarted","globalStarted","subCommandsStarted","i","currentLine","STANDARD_GROUP","push","optionsColored","opt","replace","optionsStr","subCommandsStr","descriptionColored","desc","extendedDescription","descriptionStr","globalOptionsStr","finalOutput","enteredCommand","enteredSubCommand","undefined","isCommandMatch","str","find"],"mappings":"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","sourcesContent":["import didYouMean from 'didyoumean';\nimport yargs, { CommandModule } from 'yargs';\nimport { Command } from '@teambit/legacy/dist/cli/command';\nimport { GroupsType } from '@teambit/legacy/dist/cli/command-groups';\nimport { compact } from 'lodash';\nimport { loadConsumerIfExist } from '@teambit/legacy/dist/consumer';\nimport logger from '@teambit/legacy/dist/logger/logger';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport chalk from 'chalk';\nimport { getCommandId } from './get-command-id';\nimport { formatHelp } from './help';\nimport { GLOBAL_GROUP, STANDARD_GROUP, YargsAdapter } from './yargs-adapter';\nimport { CommandNotFound } from './exceptions/command-not-found';\n\nexport class CLIParser {\n constructor(private commands: Command[], private groups: GroupsType, public parser = yargs) {}\n\n async parse(args = process.argv.slice(2)) {\n this.throwForNonExistsCommand(args[0]);\n logger.debug(`[+] CLI-INPUT: ${args.join(' ')}`);\n yargs(args);\n yargs.help(false);\n this.configureParser();\n this.commands.forEach((command: Command) => {\n if (command.commands && command.commands.length) {\n this.parseCommandWithSubCommands(command);\n } else {\n const yargsCommand = this.getYargsCommand(command);\n yargs.command(yargsCommand);\n }\n });\n this.configureGlobalFlags();\n this.setHelpMiddleware();\n this.handleCommandFailure();\n this.configureCompletion();\n yargs.strict(); // don't allow non-exist flags and non-exist commands\n\n yargs\n // .recommendCommands() // don't use it, it brings the global help of yargs, we have a custom one\n .wrap(null);\n\n await yargs.parse();\n }\n\n private setHelpMiddleware() {\n yargs.middleware((argv) => {\n if (argv._.length === 0 && argv.help) {\n // this is the main help page\n this.printHelp();\n process.exit(0);\n }\n if (argv.help) {\n loader.off(); // stop the \"loading bit...\" before showing help if needed\n // this is a command help page\n yargs.showHelp(this.logCommandHelp.bind(this));\n if (!logger.isDaemon) process.exit(0);\n }\n }, true);\n }\n\n private handleCommandFailure() {\n yargs.fail((msg, err) => {\n loader.stop();\n if (err) {\n throw err;\n }\n yargs.showHelp(this.logCommandHelp.bind(this));\n // eslint-disable-next-line no-console\n console.log(`\\n${chalk.yellow(msg)}`);\n if (!logger.isDaemon) process.exit(1);\n });\n }\n\n private configureCompletion() {\n const commandsToShowComponentIdsForCompletion = [\n 'show',\n 'diff',\n 'tag',\n 'export',\n 'env',\n 'envs',\n 'compile',\n 'build',\n 'test',\n 'lint',\n 'log',\n 'dependents',\n 'dependencies',\n ];\n // @ts-ignore\n yargs.completion('completion', async function (current, argv, completionFilter, done) {\n if (!current.startsWith('-') && commandsToShowComponentIdsForCompletion.includes(argv._[1])) {\n const consumer = await loadConsumerIfExist();\n done(consumer?.bitmapIdsFromCurrentLane.map((id) => id.toStringWithoutVersion()));\n } else {\n completionFilter();\n }\n });\n }\n\n private printHelp() {\n const help = formatHelp(this.commands, this.groups);\n // eslint-disable-next-line no-console\n console.log(help);\n }\n\n private configureParser() {\n yargs.parserConfiguration({\n // 'strip-dashed': true, // we can't enable it, otherwise, the completion doesn't work\n 'strip-aliased': true,\n 'boolean-negation': false,\n 'populate--': true,\n });\n }\n\n private parseCommandWithSubCommands(command: Command) {\n const yarnCommand = this.getYargsCommand(command);\n yarnCommand.builder = () => {\n command.commands?.forEach((cmd) => {\n const subCommand = this.getYargsCommand(cmd);\n yargs.command(subCommand);\n });\n return yargs;\n };\n yargs.command(yarnCommand);\n }\n\n private getYargsCommand(command: Command): CommandModule {\n const yarnCommand = new YargsAdapter(command);\n yarnCommand.handler = yarnCommand.handler.bind(yarnCommand);\n\n return yarnCommand;\n }\n\n private configureGlobalFlags() {\n yargs\n .option('help', {\n alias: 'h',\n describe: 'show help',\n group: GLOBAL_GROUP,\n })\n .option('version', {\n global: false,\n alias: 'v',\n describe: 'show version',\n group: GLOBAL_GROUP,\n });\n }\n\n private throwForNonExistsCommand(commandName: string) {\n if (!commandName || commandName.startsWith('-')) {\n return;\n }\n const commandsNames = this.commands.map((c) => getCommandId(c.name));\n const aliases = this.commands.map((c) => c.alias).filter((a) => a);\n const existingGlobalFlags = ['-V', '--version'];\n const validCommands = [...commandsNames, ...aliases, ...existingGlobalFlags];\n const commandExist = validCommands.includes(commandName);\n\n if (!commandExist) {\n didYouMean.returnFirstMatch = true;\n const suggestions = didYouMean(\n commandName,\n this.commands.filter((c) => !c.private).map((c) => getCommandId(c.name))\n );\n const suggestion = suggestions && Array.isArray(suggestions) ? suggestions[0] : suggestions;\n\n throw new CommandNotFound(commandName, suggestion as string);\n }\n }\n\n /**\n * manipulate the command help output. there is no API from Yarn to do any of this, so it needs to be done manually.\n * see https://github.com/yargs/yargs/issues/1956\n */\n private logCommandHelp(help: string) {\n const command = this.findCommandByArgv();\n\n const replacer = (_, p1, p2) => `${p1}${chalk.green(p2)}`;\n const lines = help.split('\\n');\n const linesWithoutEmpty = compact(lines);\n const cmdLine = linesWithoutEmpty[0];\n const description: string[] = [];\n const options: string[] = [];\n const globalOptions: string[] = [];\n const subCommands: string[] = [];\n\n let optionsStarted = false;\n let globalStarted = false;\n let subCommandsStarted = false;\n for (let i = 1; i < linesWithoutEmpty.length; i += 1) {\n const currentLine = linesWithoutEmpty[i];\n if (currentLine === STANDARD_GROUP) {\n optionsStarted = true;\n } else if (currentLine === GLOBAL_GROUP) {\n globalStarted = true;\n } else if (currentLine === 'Commands:') {\n subCommandsStarted = true;\n } else if (globalStarted) {\n globalOptions.push(currentLine);\n } else if (optionsStarted) {\n options.push(currentLine);\n } else if (subCommandsStarted) {\n subCommands.push(currentLine);\n } else {\n description.push(currentLine);\n }\n }\n\n // show the flags in green\n const optionsColored = options.map((opt) => opt.replace(/(--)([\\w-]+)/, replacer).replace(/(-)([\\w-]+)/, replacer));\n const optionsStr = options.length ? `\\n${STANDARD_GROUP}\\n${optionsColored.join('\\n')}\\n` : '';\n const subCommandsStr = subCommands.length ? `\\n${'Commands:'}\\n${subCommands.join('\\n')}\\n` : '';\n // show the description in yellow\n const descriptionColored = description.map((desc) => chalk.yellow(desc));\n if (command?.extendedDescription) {\n descriptionColored.push(command?.extendedDescription);\n }\n const descriptionStr = descriptionColored.join('\\n');\n const globalOptionsStr = globalOptions.join('\\n');\n\n const finalOutput = `${cmdLine}\n\n${descriptionStr}\n${subCommandsStr}${optionsStr}\n${GLOBAL_GROUP}\n${globalOptionsStr}`;\n\n // eslint-disable-next-line no-console\n console.log(finalOutput);\n }\n\n private findCommandByArgv(): Command | undefined {\n const args = process.argv.slice(2);\n const enteredCommand = args[0];\n const enteredSubCommand = args[1];\n if (!enteredCommand) {\n return undefined;\n }\n const isCommandMatch = (cmd: Command, str: string) => {\n return (\n cmd.name.startsWith(`${str} `) || // e.g. \"tag <id>\".startsWith(\"tag \")\n cmd.name === str || // e.g. \"globals\" === \"globals\"\n cmd.alias === str\n ); // e.g. \"t\" === \"t\"\n };\n const command = this.commands.find((cmd) => isCommandMatch(cmd, enteredCommand));\n if (!command) {\n return undefined;\n }\n if (!command.commands || !enteredSubCommand) {\n return command; // no sub-commands.\n }\n const subCommand = command.commands.find((cmd) => isCommandMatch(cmd, enteredSubCommand));\n return subCommand || command;\n }\n}\n"]}
@@ -25,16 +25,6 @@ function _defineProperty2() {
25
25
  return data;
26
26
  }
27
27
 
28
- function _chalk() {
29
- const data = _interopRequireDefault(require("chalk"));
30
-
31
- _chalk = function () {
32
- return data;
33
- };
34
-
35
- return data;
36
- }
37
-
38
28
  function _constants() {
39
29
  const data = require("@teambit/legacy/dist/constants");
40
30
 
@@ -82,7 +72,7 @@ class YargsAdapter {
82
72
  (0, _defineProperty2().default)(this, "aliases", void 0);
83
73
  (0, _defineProperty2().default)(this, "builder", void 0);
84
74
  this.command = commanderCommand.name;
85
- this.describe = _chalk().default.yellow(commanderCommand.description);
75
+ this.describe = commanderCommand.description;
86
76
  this.aliases = commanderCommand.alias;
87
77
  this.builder = this.optionsToBuilder(commanderCommand);
88
78
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["yargs-adapter.ts"],"names":["GLOBAL_GROUP","STANDARD_GROUP","YargsAdapter","constructor","commanderCommand","command","name","describe","chalk","yellow","description","aliases","alias","builder","optionsToBuilder","handler","argv","enteredArgs","getArgsFromCommandName","argsValues","map","a","flags","Object","keys","reduce","acc","current","val","_packageManagerArgs","commandRunner","CommandRunner","runCommand","option","options","opt","desc","optName","split","group","type","includes","requiresArg","globalOptions","getGlobalOptions","remoteOp","TOKEN_FLAG","internal","log","commandName","commandSplit","shift","existArg","trimmed","trim","startsWith","endsWith","Error","withoutBrackets","slice"],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport { Command } from '@teambit/legacy/dist/cli/command';\nimport { Arguments, CommandBuilder, CommandModule } from 'yargs';\nimport { TOKEN_FLAG } from '@teambit/legacy/dist/constants';\nimport { camelCase } from 'lodash';\nimport { CommandRunner } from './command-runner';\n\nexport const GLOBAL_GROUP = 'Global';\nexport const STANDARD_GROUP = 'Options';\n\nexport class YargsAdapter implements CommandModule {\n command: string;\n describe?: string;\n aliases?: string;\n builder: CommandBuilder;\n constructor(private commanderCommand: Command) {\n this.command = commanderCommand.name;\n this.describe = chalk.yellow(commanderCommand.description as string);\n this.aliases = commanderCommand.alias;\n this.builder = this.optionsToBuilder(commanderCommand);\n }\n\n handler(argv: Arguments) {\n const enteredArgs = getArgsFromCommandName(this.commanderCommand.name);\n const argsValues = enteredArgs.map((a) => argv[a]) as any[];\n // a workaround to get a flag syntax such as \"--all [version]\" work with yargs.\n const flags = Object.keys(argv).reduce((acc, current) => {\n if (current === '_' || current === '$0' || current === '--') return acc;\n // const flagName = current.split(' ')[0];\n const val = typeof argv[current] === 'string' && !argv[current] ? true : argv[current];\n acc[current] = val;\n return acc;\n }, {});\n this.commanderCommand._packageManagerArgs = (argv['--'] || []) as string[];\n\n const commandRunner = new CommandRunner(this.commanderCommand, argsValues, flags);\n return commandRunner.runCommand();\n }\n\n private optionsToBuilder(command: Command) {\n const option = command.options.reduce((acc, [alias, opt, desc]) => {\n const optName = opt.split(' ')[0];\n acc[optName] = {\n alias,\n describe: desc,\n group: STANDARD_GROUP,\n type: opt.includes(' ') ? 'string' : 'boolean',\n requiresArg: opt.includes('<'),\n };\n return acc;\n }, {});\n const globalOptions = this.getGlobalOptions(command);\n\n return { ...option, ...globalOptions };\n }\n\n private getGlobalOptions(command: Command): Record<string, any> {\n const globalOptions: Record<string, any> = {};\n if (command.remoteOp) {\n globalOptions[TOKEN_FLAG] = {\n describe: 'authentication token',\n group: GLOBAL_GROUP,\n };\n }\n if (!command.internal) {\n globalOptions.log = {\n describe:\n 'print log messages to the screen, options are: [trace, debug, info, warn, error, fatal], the default is info',\n group: GLOBAL_GROUP,\n };\n globalOptions['safe-mode'] = {\n describe:\n 'bootstrap the bare-minimum with only the CLI aspect. useful mainly for low-level commands when bit refuses to load',\n group: GLOBAL_GROUP,\n };\n }\n return globalOptions;\n }\n}\n\nfunction getArgsFromCommandName(commandName: string) {\n const commandSplit = commandName.split(' ');\n commandSplit.shift(); // remove the first element, it's the command-name\n\n return commandSplit.map((existArg) => {\n const trimmed = existArg.trim();\n if ((!trimmed.startsWith('<') && !trimmed.startsWith('[')) || (!trimmed.endsWith('>') && !trimmed.endsWith(']'))) {\n throw new Error(`expect arg \"${trimmed}\" of \"${commandName}\" to be wrapped with \"[]\" or \"<>\"`);\n }\n // remove the opening and closing brackets\n const withoutBrackets = trimmed.slice(1, -1);\n\n return camelCase(withoutBrackets);\n });\n}\n"]}
1
+ {"version":3,"sources":["yargs-adapter.ts"],"names":["GLOBAL_GROUP","STANDARD_GROUP","YargsAdapter","constructor","commanderCommand","command","name","describe","description","aliases","alias","builder","optionsToBuilder","handler","argv","enteredArgs","getArgsFromCommandName","argsValues","map","a","flags","Object","keys","reduce","acc","current","val","_packageManagerArgs","commandRunner","CommandRunner","runCommand","option","options","opt","desc","optName","split","group","type","includes","requiresArg","globalOptions","getGlobalOptions","remoteOp","TOKEN_FLAG","internal","log","commandName","commandSplit","shift","existArg","trimmed","trim","startsWith","endsWith","Error","withoutBrackets","slice"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;;;;;AAEO,MAAMA,YAAY,GAAG,QAArB;;AACA,MAAMC,cAAc,GAAG,SAAvB;;;AAEA,MAAMC,YAAN,CAA4C;AAKjDC,EAAAA,WAAW,CAASC,gBAAT,EAAoC;AAAA,SAA3BA,gBAA2B,GAA3BA,gBAA2B;AAAA;AAAA;AAAA;AAAA;AAC7C,SAAKC,OAAL,GAAeD,gBAAgB,CAACE,IAAhC;AACA,SAAKC,QAAL,GAAgBH,gBAAgB,CAACI,WAAjC;AACA,SAAKC,OAAL,GAAeL,gBAAgB,CAACM,KAAhC;AACA,SAAKC,OAAL,GAAe,KAAKC,gBAAL,CAAsBR,gBAAtB,CAAf;AACD;;AAEDS,EAAAA,OAAO,CAACC,IAAD,EAAkB;AACvB,UAAMC,WAAW,GAAGC,sBAAsB,CAAC,KAAKZ,gBAAL,CAAsBE,IAAvB,CAA1C;AACA,UAAMW,UAAU,GAAGF,WAAW,CAACG,GAAZ,CAAiBC,CAAD,IAAOL,IAAI,CAACK,CAAD,CAA3B,CAAnB,CAFuB,CAGvB;;AACA,UAAMC,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYR,IAAZ,EAAkBS,MAAlB,CAAyB,CAACC,GAAD,EAAMC,OAAN,KAAkB;AACvD,UAAIA,OAAO,KAAK,GAAZ,IAAmBA,OAAO,KAAK,IAA/B,IAAuCA,OAAO,KAAK,IAAvD,EAA6D,OAAOD,GAAP,CADN,CAEvD;;AACA,YAAME,GAAG,GAAG,OAAOZ,IAAI,CAACW,OAAD,CAAX,KAAyB,QAAzB,IAAqC,CAACX,IAAI,CAACW,OAAD,CAA1C,GAAsD,IAAtD,GAA6DX,IAAI,CAACW,OAAD,CAA7E;AACAD,MAAAA,GAAG,CAACC,OAAD,CAAH,GAAeC,GAAf;AACA,aAAOF,GAAP;AACD,KANa,EAMX,EANW,CAAd;AAOA,SAAKpB,gBAAL,CAAsBuB,mBAAtB,GAA6Cb,IAAI,CAAC,IAAD,CAAJ,IAAc,EAA3D;AAEA,UAAMc,aAAa,GAAG,KAAIC,8BAAJ,EAAkB,KAAKzB,gBAAvB,EAAyCa,UAAzC,EAAqDG,KAArD,CAAtB;AACA,WAAOQ,aAAa,CAACE,UAAd,EAAP;AACD;;AAEOlB,EAAAA,gBAAgB,CAACP,OAAD,EAAmB;AACzC,UAAM0B,MAAM,GAAG1B,OAAO,CAAC2B,OAAR,CAAgBT,MAAhB,CAAuB,CAACC,GAAD,EAAM,CAACd,KAAD,EAAQuB,GAAR,EAAaC,IAAb,CAAN,KAA6B;AACjE,YAAMC,OAAO,GAAGF,GAAG,CAACG,KAAJ,CAAU,GAAV,EAAe,CAAf,CAAhB;AACAZ,MAAAA,GAAG,CAACW,OAAD,CAAH,GAAe;AACbzB,QAAAA,KADa;AAEbH,QAAAA,QAAQ,EAAE2B,IAFG;AAGbG,QAAAA,KAAK,EAAEpC,cAHM;AAIbqC,QAAAA,IAAI,EAAEL,GAAG,CAACM,QAAJ,CAAa,GAAb,IAAoB,QAApB,GAA+B,SAJxB;AAKbC,QAAAA,WAAW,EAAEP,GAAG,CAACM,QAAJ,CAAa,GAAb;AALA,OAAf;AAOA,aAAOf,GAAP;AACD,KAVc,EAUZ,EAVY,CAAf;AAWA,UAAMiB,aAAa,GAAG,KAAKC,gBAAL,CAAsBrC,OAAtB,CAAtB;AAEA,2CAAY0B,MAAZ,GAAuBU,aAAvB;AACD;;AAEOC,EAAAA,gBAAgB,CAACrC,OAAD,EAAwC;AAC9D,UAAMoC,aAAkC,GAAG,EAA3C;;AACA,QAAIpC,OAAO,CAACsC,QAAZ,EAAsB;AACpBF,MAAAA,aAAa,CAACG,uBAAD,CAAb,GAA4B;AAC1BrC,QAAAA,QAAQ,EAAE,sBADgB;AAE1B8B,QAAAA,KAAK,EAAErC;AAFmB,OAA5B;AAID;;AACD,QAAI,CAACK,OAAO,CAACwC,QAAb,EAAuB;AACrBJ,MAAAA,aAAa,CAACK,GAAd,GAAoB;AAClBvC,QAAAA,QAAQ,EACN,8GAFgB;AAGlB8B,QAAAA,KAAK,EAAErC;AAHW,OAApB;AAKAyC,MAAAA,aAAa,CAAC,WAAD,CAAb,GAA6B;AAC3BlC,QAAAA,QAAQ,EACN,oHAFyB;AAG3B8B,QAAAA,KAAK,EAAErC;AAHoB,OAA7B;AAKD;;AACD,WAAOyC,aAAP;AACD;;AAnEgD;;;;AAsEnD,SAASzB,sBAAT,CAAgC+B,WAAhC,EAAqD;AACnD,QAAMC,YAAY,GAAGD,WAAW,CAACX,KAAZ,CAAkB,GAAlB,CAArB;AACAY,EAAAA,YAAY,CAACC,KAAb,GAFmD,CAE7B;;AAEtB,SAAOD,YAAY,CAAC9B,GAAb,CAAkBgC,QAAD,IAAc;AACpC,UAAMC,OAAO,GAAGD,QAAQ,CAACE,IAAT,EAAhB;;AACA,QAAK,CAACD,OAAO,CAACE,UAAR,CAAmB,GAAnB,CAAD,IAA4B,CAACF,OAAO,CAACE,UAAR,CAAmB,GAAnB,CAA9B,IAA2D,CAACF,OAAO,CAACG,QAAR,CAAiB,GAAjB,CAAD,IAA0B,CAACH,OAAO,CAACG,QAAR,CAAiB,GAAjB,CAA1F,EAAkH;AAChH,YAAM,IAAIC,KAAJ,CAAW,eAAcJ,OAAQ,SAAQJ,WAAY,mCAArD,CAAN;AACD,KAJmC,CAKpC;;;AACA,UAAMS,eAAe,GAAGL,OAAO,CAACM,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAxB;AAEA,WAAO,yBAAUD,eAAV,CAAP;AACD,GATM,CAAP;AAUD","sourcesContent":["import { Command } from '@teambit/legacy/dist/cli/command';\nimport { Arguments, CommandBuilder, CommandModule } from 'yargs';\nimport { TOKEN_FLAG } from '@teambit/legacy/dist/constants';\nimport { camelCase } from 'lodash';\nimport { CommandRunner } from './command-runner';\n\nexport const GLOBAL_GROUP = 'Global';\nexport const STANDARD_GROUP = 'Options';\n\nexport class YargsAdapter implements CommandModule {\n command: string;\n describe?: string;\n aliases?: string;\n builder: CommandBuilder;\n constructor(private commanderCommand: Command) {\n this.command = commanderCommand.name;\n this.describe = commanderCommand.description;\n this.aliases = commanderCommand.alias;\n this.builder = this.optionsToBuilder(commanderCommand);\n }\n\n handler(argv: Arguments) {\n const enteredArgs = getArgsFromCommandName(this.commanderCommand.name);\n const argsValues = enteredArgs.map((a) => argv[a]) as any[];\n // a workaround to get a flag syntax such as \"--all [version]\" work with yargs.\n const flags = Object.keys(argv).reduce((acc, current) => {\n if (current === '_' || current === '$0' || current === '--') return acc;\n // const flagName = current.split(' ')[0];\n const val = typeof argv[current] === 'string' && !argv[current] ? true : argv[current];\n acc[current] = val;\n return acc;\n }, {});\n this.commanderCommand._packageManagerArgs = (argv['--'] || []) as string[];\n\n const commandRunner = new CommandRunner(this.commanderCommand, argsValues, flags);\n return commandRunner.runCommand();\n }\n\n private optionsToBuilder(command: Command) {\n const option = command.options.reduce((acc, [alias, opt, desc]) => {\n const optName = opt.split(' ')[0];\n acc[optName] = {\n alias,\n describe: desc,\n group: STANDARD_GROUP,\n type: opt.includes(' ') ? 'string' : 'boolean',\n requiresArg: opt.includes('<'),\n };\n return acc;\n }, {});\n const globalOptions = this.getGlobalOptions(command);\n\n return { ...option, ...globalOptions };\n }\n\n private getGlobalOptions(command: Command): Record<string, any> {\n const globalOptions: Record<string, any> = {};\n if (command.remoteOp) {\n globalOptions[TOKEN_FLAG] = {\n describe: 'authentication token',\n group: GLOBAL_GROUP,\n };\n }\n if (!command.internal) {\n globalOptions.log = {\n describe:\n 'print log messages to the screen, options are: [trace, debug, info, warn, error, fatal], the default is info',\n group: GLOBAL_GROUP,\n };\n globalOptions['safe-mode'] = {\n describe:\n 'bootstrap the bare-minimum with only the CLI aspect. useful mainly for low-level commands when bit refuses to load',\n group: GLOBAL_GROUP,\n };\n }\n return globalOptions;\n }\n}\n\nfunction getArgsFromCommandName(commandName: string) {\n const commandSplit = commandName.split(' ');\n commandSplit.shift(); // remove the first element, it's the command-name\n\n return commandSplit.map((existArg) => {\n const trimmed = existArg.trim();\n if ((!trimmed.startsWith('<') && !trimmed.startsWith('[')) || (!trimmed.endsWith('>') && !trimmed.endsWith(']'))) {\n throw new Error(`expect arg \"${trimmed}\" of \"${commandName}\" to be wrapped with \"[]\" or \"<>\"`);\n }\n // remove the opening and closing brackets\n const withoutBrackets = trimmed.slice(1, -1);\n\n return camelCase(withoutBrackets);\n });\n}\n"]}
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@teambit/cli",
3
- "version": "0.0.434",
3
+ "version": "0.0.438",
4
4
  "homepage": "https://bit.dev/teambit/harmony/cli",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.harmony",
8
8
  "name": "cli",
9
- "version": "0.0.434"
9
+ "version": "0.0.438"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
13
13
  "didyoumean": "1.2.1",
14
+ "lodash": "4.17.21",
14
15
  "yargs": "17.0.1",
15
16
  "@teambit/harmony": "0.2.11",
16
- "lodash": "4.17.21",
17
17
  "ink": "3.0.8",
18
18
  "pad-right": "0.2.2",
19
19
  "@babel/runtime": "7.12.18",
@@ -22,8 +22,8 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/didyoumean": "1.2.0",
25
- "@types/yargs": "17.0.0",
26
25
  "@types/lodash": "4.14.165",
26
+ "@types/yargs": "17.0.0",
27
27
  "@types/mocha": "5.2.7",
28
28
  "@types/testing-library__jest-dom": "5.9.5",
29
29
  "@types/jest": "^26.0.0",
@@ -32,7 +32,7 @@
32
32
  "@types/node": "12.20.4"
33
33
  },
34
34
  "peerDependencies": {
35
- "@teambit/legacy": "1.0.210",
35
+ "@teambit/legacy": "1.0.216",
36
36
  "react-dom": "^16.8.0 || ^17.0.0",
37
37
  "react": "^16.8.0 || ^17.0.0"
38
38
  },
@@ -60,7 +60,7 @@
60
60
  "react": "-"
61
61
  },
62
62
  "peerDependencies": {
63
- "@teambit/legacy": "1.0.210",
63
+ "@teambit/legacy": "1.0.216",
64
64
  "react-dom": "^16.8.0 || ^17.0.0",
65
65
  "react": "^16.8.0 || ^17.0.0"
66
66
  }
Binary file