@teambit/cli 0.0.1367 → 0.0.1368

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.
@@ -211,14 +211,16 @@ class CLIParser {
211
211
  }
212
212
  parseCommandWithSubCommands(command) {
213
213
  const yarnCommand = this.getYargsCommand(command);
214
- const builderFunc = () => {
214
+ // registering the sub-commands has to happen from a builder, which replaces the adapter's own
215
+ // builder. that one registers this command's flags, positionals and examples, so without
216
+ // delegating to it, running the parent with any of its own flags fails as an unknown argument.
217
+ const registerOwnOptions = yarnCommand.builder;
218
+ const builderFunc = yargsInstance => {
215
219
  command.commands?.forEach(cmd => {
216
220
  const subCommand = this.getYargsCommand(cmd);
217
221
  this.addYargsCommand(subCommand);
218
222
  });
219
- // since the "builder" method is overridden, the global flags of the main command are gone, this fixes it.
220
- _yargs().default.options(_yargsAdapter().YargsAdapter.getGlobalOptions(command));
221
- return _yargs().default;
223
+ return registerOwnOptions(yargsInstance);
222
224
  };
223
225
  yarnCommand.builder = builderFunc;
224
226
  this.addYargsCommand(yarnCommand);
@@ -1 +1 @@
1
- {"version":3,"names":["_didyoumean","data","_interopRequireDefault","require","_yargs","_lodash","_legacy","_legacy2","_legacy3","_chalk","_getCommandId","_help","_yargsAdapter","_commandNotFound","_yargsExitWorkaround","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CLIParser","constructor","commands","groups","onCommandStartSlot","yargs","parse","args","process","argv","slice","throwForNonExistsCommand","logger","debug","join","writeCommandHistoryStart","help","configureParser","forEach","command","length","parseCommandWithSubCommands","yargsCommand","getYargsCommand","addYargsCommand","configureGlobalFlags","setHelpMiddleware","handleCommandFailure","configureCompletion","strict","wrap","currentYargsCommand","yargsCommands","find","y","commandRunner","Error","push","middleware","_","shouldShowInternalCommands","Boolean","internal","printHelp","exit","loader","off","showHelp","logCommandHelp","bind","fail","msg","err","stop","isHelpFlagEntered","includes","msgForDaemon","error","YargsExitWorkaround","helpMsg","isMsgAboutMissingArgs","startsWith","console","log","chalk","yellow","isDaemon","commandsToShowComponentIdsForCompletion","completion","current","completionFilter","done","consumer","loadConsumerIfExist","bitmapIdsFromCurrentLane","map","id","toStringWithoutVersion","formatHelp","parserConfiguration","yarnCommand","builderFunc","cmd","subCommand","options","YargsAdapter","getGlobalOptions","builder","handler","option","alias","describe","group","GLOBAL_GROUP","global","commandName","commandsNames","c","getCommandId","name","aliases","filter","a","existingGlobalFlags","validCommands","commandExist","didYouMean","returnFirstMatch","suggestions","private","suggestion","Array","isArray","CommandNotFound","findCommandByArgv","lines","split","linesWithoutEmpty","compact","cmdLine","enteredCommand","commandId","replace","description","globalOptions","subCommands","examples","optionsStarted","globalStarted","subCommandsStarted","positionalsStarted","examplesStarted","currentLine","STANDARD_GROUP","optionsColored","optLine","match","leadingSpaces","optionPart","rest","coloredOptionPart","m","p1","p2","green","argsColored","arg","argName","optionsStr","argumentsStr","examplesStr","subCommandsStr","descriptionColored","desc","bold","extendedDescription","helpUrl","underline","descriptionStr","globalOptionsStr","finalOutput","exports","enteredSubCommand","undefined","isCommandMatch","str"],"sources":["cli-parser.ts"],"sourcesContent":["import didYouMean from 'didyoumean';\nimport yargs from 'yargs';\nimport type { Command } from './command';\nimport type { GroupsType } from './command-groups';\nimport { compact } from 'lodash';\nimport { loadConsumerIfExist } from '@teambit/legacy.consumer';\nimport { logger } from '@teambit/legacy.logger';\nimport { loader } from '@teambit/legacy.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';\nimport type { OnCommandStartSlot } from './cli.main.runtime';\nimport type { CommandRunner } from './command-runner';\nimport { YargsExitWorkaround } from './exceptions/yargs-exit-workaround';\n\nexport class CLIParser {\n public parser = yargs;\n private yargsCommands: YargsAdapter[] = [];\n constructor(\n private commands: Command[],\n private groups: GroupsType,\n private onCommandStartSlot: OnCommandStartSlot\n ) {}\n\n async parse(args = process.argv.slice(2)): Promise<CommandRunner> {\n this.throwForNonExistsCommand(args[0]);\n logger.debug(`[+] CLI-INPUT: ${args.join(' ')}`);\n logger.writeCommandHistoryStart();\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 this.addYargsCommand(yargsCommand);\n }\n });\n this.configureGlobalFlags();\n this.setHelpMiddleware();\n this.handleCommandFailure();\n this.configureCompletion();\n // yargs.showHelpOnFail(false); // doesn't help. it still shows the help on failure.\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 const currentYargsCommand = this.yargsCommands.find((y) => y.commandRunner);\n if (!currentYargsCommand) {\n // this happens when the args/flags are wrong. in this case, it prints the help of the command and in most cases\n // exits the process before reaching this line. however, in case logger.isDaemon is true, which is for bit-cli-server,\n // it doesn't exits the process, so we need to return undefined here.\n throw new Error(`yargs failed to parse the command \"${args.join(' ')}\" and also failed to catch it properly`);\n }\n return currentYargsCommand.commandRunner as CommandRunner;\n }\n\n private addYargsCommand(yargsCommand: YargsAdapter) {\n this.yargsCommands.push(yargsCommand);\n yargs.command(yargsCommand);\n }\n\n private setHelpMiddleware() {\n yargs.middleware((argv) => {\n if (argv._.length === 0 && argv.help) {\n const shouldShowInternalCommands = Boolean(argv.internal);\n // this is the main help page\n this.printHelp(shouldShowInternalCommands);\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 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 const args = process.argv.slice(2);\n const isHelpFlagEntered = args.includes('--help') || args.includes('-h');\n let msgForDaemon = '';\n try {\n yargs.showHelp(this.logCommandHelp.bind(this));\n } catch (error: any) {\n if (error instanceof YargsExitWorkaround) {\n msgForDaemon = error.helpMsg;\n } else {\n throw error;\n }\n }\n const isMsgAboutMissingArgs = msg.startsWith('Not enough non-option arguments');\n // avoid showing the \"Not enough non-option arguments\" message when the user is trying to get the command help\n if (!isMsgAboutMissingArgs || !isHelpFlagEntered) {\n // eslint-disable-next-line no-console\n console.log(`\\n${chalk.yellow(msg)}`);\n msgForDaemon += `\\n${chalk.yellow(msg)}`;\n }\n if (logger.isDaemon) throw new YargsExitWorkaround(1, msgForDaemon);\n 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(shouldShowInternalCommands = false) {\n const help = formatHelp(this.commands, this.groups, shouldShowInternalCommands);\n if (logger.isDaemon) throw new YargsExitWorkaround(0, help);\n else console.log(help); // eslint-disable-line no-console\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 const builderFunc = () => {\n command.commands?.forEach((cmd) => {\n const subCommand = this.getYargsCommand(cmd);\n this.addYargsCommand(subCommand);\n });\n // since the \"builder\" method is overridden, the global flags of the main command are gone, this fixes it.\n yargs.options(YargsAdapter.getGlobalOptions(command));\n return yargs;\n };\n yarnCommand.builder = builderFunc;\n this.addYargsCommand(yarnCommand);\n }\n\n private getYargsCommand(command: Command): YargsAdapter {\n const yargsCommand = new YargsAdapter(command, this.onCommandStartSlot);\n yargsCommand.builder = yargsCommand.builder.bind(yargsCommand);\n yargsCommand.handler = yargsCommand.handler.bind(yargsCommand);\n\n return yargsCommand;\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 * the original order of the output:\n * description\n * Options\n * Commands\n * Global\n * Positionals\n * Examples\n */\n private logCommandHelp(help: string) {\n const command = findCommandByArgv(this.commands);\n\n const lines = help.split('\\n');\n const linesWithoutEmpty = compact(lines);\n let cmdLine = linesWithoutEmpty[0];\n if (command?.alias) {\n const enteredCommand = process.argv[2];\n if (enteredCommand === command.alias) {\n const commandId = getCommandId(command.name);\n cmdLine = cmdLine.replace(commandId, command.alias);\n }\n }\n const description: string[] = [];\n const options: string[] = [];\n const globalOptions: string[] = [];\n const subCommands: string[] = [];\n const args: string[] = [];\n const examples: string[] = [];\n\n let optionsStarted = false;\n let globalStarted = false;\n let subCommandsStarted = false;\n let positionalsStarted = false;\n let examplesStarted = 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 (currentLine === 'Positionals:') {\n positionalsStarted = true;\n } else if (currentLine === 'Examples:') {\n examplesStarted = true;\n } else if (examplesStarted) {\n examples.push(currentLine);\n } else if (positionalsStarted) {\n args.push(currentLine);\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((optLine) => {\n const match = optLine.match(/^(\\s*)(.+?)(\\s{2,}.*)/);\n if (match) {\n const leadingSpaces = match[1];\n const optionPart = match[2];\n const rest = match[3];\n const coloredOptionPart = optionPart.replace(\n /(^|[^a-zA-Z0-9])(--?[a-zA-Z][a-zA-Z-]*)/g,\n (m, p1, p2) => p1 + chalk.green(p2)\n );\n return leadingSpaces + coloredOptionPart + rest;\n } else {\n return optLine;\n }\n });\n const argsColored = args.map((arg) => arg.replace(/^ {2}\\S+/, (argName) => chalk.green(argName))); // regex: two spaces then the first word until a white space\n const optionsStr = options.length ? `\\n${STANDARD_GROUP}\\n${optionsColored.join('\\n')}\\n` : '';\n const argumentsStr = args.length ? `\\nArguments:\\n${argsColored.join('\\n')}\\n` : '';\n const examplesStr = examples.length ? `\\nExamples:\\n${examples.join('\\n')}\\n` : '';\n const subCommandsStr = subCommands.length ? `\\n${'Commands:'}\\n${subCommands.join('\\n')}\\n` : '';\n // show the description in bold\n const descriptionColored = description.map((desc) => chalk.bold(desc));\n if (command?.extendedDescription) {\n descriptionColored.push(command?.extendedDescription);\n }\n if (command?.helpUrl) {\n descriptionColored.push(`for more info, visit: ${chalk.underline(command.helpUrl)}`);\n }\n const descriptionStr = descriptionColored.join('\\n');\n const globalOptionsStr = globalOptions.join('\\n');\n\n const finalOutput = `${cmdLine}\n\n${descriptionStr}\n${argumentsStr}${subCommandsStr}${optionsStr}${examplesStr}\n${GLOBAL_GROUP}\n${globalOptionsStr}`;\n\n if (logger.isDaemon) throw new YargsExitWorkaround(0, finalOutput);\n else console.log(finalOutput); // eslint-disable-line no-console\n }\n}\n\nexport function findCommandByArgv(commands: Command[]): 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 = 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"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_didyoumean","data","_interopRequireDefault","require","_yargs","_lodash","_legacy","_legacy2","_legacy3","_chalk","_getCommandId","_help","_yargsAdapter","_commandNotFound","_yargsExitWorkaround","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CLIParser","constructor","commands","groups","onCommandStartSlot","yargs","parse","args","process","argv","slice","throwForNonExistsCommand","logger","debug","join","writeCommandHistoryStart","help","configureParser","forEach","command","length","parseCommandWithSubCommands","yargsCommand","getYargsCommand","addYargsCommand","configureGlobalFlags","setHelpMiddleware","handleCommandFailure","configureCompletion","strict","wrap","currentYargsCommand","yargsCommands","find","y","commandRunner","Error","push","middleware","_","shouldShowInternalCommands","Boolean","internal","printHelp","exit","loader","off","showHelp","logCommandHelp","bind","fail","msg","err","stop","isHelpFlagEntered","includes","msgForDaemon","error","YargsExitWorkaround","helpMsg","isMsgAboutMissingArgs","startsWith","console","log","chalk","yellow","isDaemon","commandsToShowComponentIdsForCompletion","completion","current","completionFilter","done","consumer","loadConsumerIfExist","bitmapIdsFromCurrentLane","map","id","toStringWithoutVersion","formatHelp","parserConfiguration","yarnCommand","registerOwnOptions","builder","builderFunc","yargsInstance","cmd","subCommand","YargsAdapter","handler","option","alias","describe","group","GLOBAL_GROUP","global","commandName","commandsNames","c","getCommandId","name","aliases","filter","a","existingGlobalFlags","validCommands","commandExist","didYouMean","returnFirstMatch","suggestions","private","suggestion","Array","isArray","CommandNotFound","findCommandByArgv","lines","split","linesWithoutEmpty","compact","cmdLine","enteredCommand","commandId","replace","description","options","globalOptions","subCommands","examples","optionsStarted","globalStarted","subCommandsStarted","positionalsStarted","examplesStarted","currentLine","STANDARD_GROUP","optionsColored","optLine","match","leadingSpaces","optionPart","rest","coloredOptionPart","m","p1","p2","green","argsColored","arg","argName","optionsStr","argumentsStr","examplesStr","subCommandsStr","descriptionColored","desc","bold","extendedDescription","helpUrl","underline","descriptionStr","globalOptionsStr","finalOutput","exports","enteredSubCommand","undefined","isCommandMatch","str"],"sources":["cli-parser.ts"],"sourcesContent":["import didYouMean from 'didyoumean';\nimport yargs from 'yargs';\nimport type { Command } from './command';\nimport type { GroupsType } from './command-groups';\nimport { compact } from 'lodash';\nimport { loadConsumerIfExist } from '@teambit/legacy.consumer';\nimport { logger } from '@teambit/legacy.logger';\nimport { loader } from '@teambit/legacy.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';\nimport type { OnCommandStartSlot } from './cli.main.runtime';\nimport type { CommandRunner } from './command-runner';\nimport { YargsExitWorkaround } from './exceptions/yargs-exit-workaround';\n\nexport class CLIParser {\n public parser = yargs;\n private yargsCommands: YargsAdapter[] = [];\n constructor(\n private commands: Command[],\n private groups: GroupsType,\n private onCommandStartSlot: OnCommandStartSlot\n ) {}\n\n async parse(args = process.argv.slice(2)): Promise<CommandRunner> {\n this.throwForNonExistsCommand(args[0]);\n logger.debug(`[+] CLI-INPUT: ${args.join(' ')}`);\n logger.writeCommandHistoryStart();\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 this.addYargsCommand(yargsCommand);\n }\n });\n this.configureGlobalFlags();\n this.setHelpMiddleware();\n this.handleCommandFailure();\n this.configureCompletion();\n // yargs.showHelpOnFail(false); // doesn't help. it still shows the help on failure.\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 const currentYargsCommand = this.yargsCommands.find((y) => y.commandRunner);\n if (!currentYargsCommand) {\n // this happens when the args/flags are wrong. in this case, it prints the help of the command and in most cases\n // exits the process before reaching this line. however, in case logger.isDaemon is true, which is for bit-cli-server,\n // it doesn't exits the process, so we need to return undefined here.\n throw new Error(`yargs failed to parse the command \"${args.join(' ')}\" and also failed to catch it properly`);\n }\n return currentYargsCommand.commandRunner as CommandRunner;\n }\n\n private addYargsCommand(yargsCommand: YargsAdapter) {\n this.yargsCommands.push(yargsCommand);\n yargs.command(yargsCommand);\n }\n\n private setHelpMiddleware() {\n yargs.middleware((argv) => {\n if (argv._.length === 0 && argv.help) {\n const shouldShowInternalCommands = Boolean(argv.internal);\n // this is the main help page\n this.printHelp(shouldShowInternalCommands);\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 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 const args = process.argv.slice(2);\n const isHelpFlagEntered = args.includes('--help') || args.includes('-h');\n let msgForDaemon = '';\n try {\n yargs.showHelp(this.logCommandHelp.bind(this));\n } catch (error: any) {\n if (error instanceof YargsExitWorkaround) {\n msgForDaemon = error.helpMsg;\n } else {\n throw error;\n }\n }\n const isMsgAboutMissingArgs = msg.startsWith('Not enough non-option arguments');\n // avoid showing the \"Not enough non-option arguments\" message when the user is trying to get the command help\n if (!isMsgAboutMissingArgs || !isHelpFlagEntered) {\n // eslint-disable-next-line no-console\n console.log(`\\n${chalk.yellow(msg)}`);\n msgForDaemon += `\\n${chalk.yellow(msg)}`;\n }\n if (logger.isDaemon) throw new YargsExitWorkaround(1, msgForDaemon);\n 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(shouldShowInternalCommands = false) {\n const help = formatHelp(this.commands, this.groups, shouldShowInternalCommands);\n if (logger.isDaemon) throw new YargsExitWorkaround(0, help);\n else console.log(help); // eslint-disable-line no-console\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 // registering the sub-commands has to happen from a builder, which replaces the adapter's own\n // builder. that one registers this command's flags, positionals and examples, so without\n // delegating to it, running the parent with any of its own flags fails as an unknown argument.\n const registerOwnOptions = yarnCommand.builder as (yargsInstance: typeof yargs) => typeof yargs;\n const builderFunc = (yargsInstance: typeof yargs) => {\n command.commands?.forEach((cmd) => {\n const subCommand = this.getYargsCommand(cmd);\n this.addYargsCommand(subCommand);\n });\n return registerOwnOptions(yargsInstance);\n };\n yarnCommand.builder = builderFunc;\n this.addYargsCommand(yarnCommand);\n }\n\n private getYargsCommand(command: Command): YargsAdapter {\n const yargsCommand = new YargsAdapter(command, this.onCommandStartSlot);\n yargsCommand.builder = yargsCommand.builder.bind(yargsCommand);\n yargsCommand.handler = yargsCommand.handler.bind(yargsCommand);\n\n return yargsCommand;\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 * the original order of the output:\n * description\n * Options\n * Commands\n * Global\n * Positionals\n * Examples\n */\n private logCommandHelp(help: string) {\n const command = findCommandByArgv(this.commands);\n\n const lines = help.split('\\n');\n const linesWithoutEmpty = compact(lines);\n let cmdLine = linesWithoutEmpty[0];\n if (command?.alias) {\n const enteredCommand = process.argv[2];\n if (enteredCommand === command.alias) {\n const commandId = getCommandId(command.name);\n cmdLine = cmdLine.replace(commandId, command.alias);\n }\n }\n const description: string[] = [];\n const options: string[] = [];\n const globalOptions: string[] = [];\n const subCommands: string[] = [];\n const args: string[] = [];\n const examples: string[] = [];\n\n let optionsStarted = false;\n let globalStarted = false;\n let subCommandsStarted = false;\n let positionalsStarted = false;\n let examplesStarted = 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 (currentLine === 'Positionals:') {\n positionalsStarted = true;\n } else if (currentLine === 'Examples:') {\n examplesStarted = true;\n } else if (examplesStarted) {\n examples.push(currentLine);\n } else if (positionalsStarted) {\n args.push(currentLine);\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((optLine) => {\n const match = optLine.match(/^(\\s*)(.+?)(\\s{2,}.*)/);\n if (match) {\n const leadingSpaces = match[1];\n const optionPart = match[2];\n const rest = match[3];\n const coloredOptionPart = optionPart.replace(\n /(^|[^a-zA-Z0-9])(--?[a-zA-Z][a-zA-Z-]*)/g,\n (m, p1, p2) => p1 + chalk.green(p2)\n );\n return leadingSpaces + coloredOptionPart + rest;\n } else {\n return optLine;\n }\n });\n const argsColored = args.map((arg) => arg.replace(/^ {2}\\S+/, (argName) => chalk.green(argName))); // regex: two spaces then the first word until a white space\n const optionsStr = options.length ? `\\n${STANDARD_GROUP}\\n${optionsColored.join('\\n')}\\n` : '';\n const argumentsStr = args.length ? `\\nArguments:\\n${argsColored.join('\\n')}\\n` : '';\n const examplesStr = examples.length ? `\\nExamples:\\n${examples.join('\\n')}\\n` : '';\n const subCommandsStr = subCommands.length ? `\\n${'Commands:'}\\n${subCommands.join('\\n')}\\n` : '';\n // show the description in bold\n const descriptionColored = description.map((desc) => chalk.bold(desc));\n if (command?.extendedDescription) {\n descriptionColored.push(command?.extendedDescription);\n }\n if (command?.helpUrl) {\n descriptionColored.push(`for more info, visit: ${chalk.underline(command.helpUrl)}`);\n }\n const descriptionStr = descriptionColored.join('\\n');\n const globalOptionsStr = globalOptions.join('\\n');\n\n const finalOutput = `${cmdLine}\n\n${descriptionStr}\n${argumentsStr}${subCommandsStr}${optionsStr}${examplesStr}\n${GLOBAL_GROUP}\n${globalOptionsStr}`;\n\n if (logger.isDaemon) throw new YargsExitWorkaround(0, finalOutput);\n else console.log(finalOutput); // eslint-disable-line no-console\n }\n}\n\nexport function findCommandByArgv(commands: Command[]): 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 = 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"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ function _chai() {
4
+ const data = require("chai");
5
+ _chai = function () {
6
+ return data;
7
+ };
8
+ return data;
9
+ }
10
+ function _legacy() {
11
+ const data = require("@teambit/legacy.logger");
12
+ _legacy = function () {
13
+ return data;
14
+ };
15
+ return data;
16
+ }
17
+ function _cliParser() {
18
+ const data = require("./cli-parser");
19
+ _cliParser = function () {
20
+ return data;
21
+ };
22
+ return data;
23
+ }
24
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
25
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
26
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
27
+ class SubCmd {
28
+ constructor() {
29
+ _defineProperty(this, "name", 'sub <arg>');
30
+ _defineProperty(this, "description", 'a sub command');
31
+ _defineProperty(this, "options", [['f', 'force', 'force it'],
32
+ // the parent declares "remote" as a flag that takes a value. this one is a boolean, so the
33
+ // parent's must not reach here, otherwise yargs demands a value that was never meant to exist.
34
+ ['r', 'remote', 'a boolean here, unlike the parent']]);
35
+ _defineProperty(this, "group", 'general');
36
+ }
37
+ async report() {
38
+ return '';
39
+ }
40
+ }
41
+ class ParentCmd {
42
+ constructor() {
43
+ _defineProperty(this, "name", 'parent [pattern]');
44
+ _defineProperty(this, "description", 'a command that also has sub commands');
45
+ _defineProperty(this, "options", [['j', 'json', 'return the output in json format'], ['d', 'details', 'show more details'], ['r', 'remote <scope-name>', 'a flag that takes a value']]);
46
+ _defineProperty(this, "group", 'general');
47
+ _defineProperty(this, "commands", [new SubCmd()]);
48
+ }
49
+ async report() {
50
+ return '';
51
+ }
52
+ }
53
+ function parse(args) {
54
+ const parser = new (_cliParser().CLIParser)([new ParentCmd()], {}, {
55
+ values: () => []
56
+ });
57
+ return parser.parse(args);
58
+ }
59
+ function flagsOf(runner) {
60
+ return runner.flags;
61
+ }
62
+ function argsOf(runner) {
63
+ return runner.args;
64
+ }
65
+ describe('CLIParser', () => {
66
+ let isDaemon;
67
+ before(() => {
68
+ // a parse failure exits the process unless the logger is in daemon mode, in which case it
69
+ // throws instead. without this, a regression here would kill the test run rather than fail it.
70
+ isDaemon = _legacy().logger.isDaemon;
71
+ _legacy().logger.isDaemon = true;
72
+ });
73
+ after(() => {
74
+ _legacy().logger.isDaemon = isDaemon;
75
+ });
76
+ describe('a command that has sub-commands', () => {
77
+ it('accepts the parent command own flags', async () => {
78
+ // registering sub-commands replaces the builder that declares the parent's own flags. when
79
+ // that is not accounted for, yargs strict mode rejects them as unknown arguments.
80
+ const runner = await parse(['parent', 'some-pattern', '--json']);
81
+ (0, _chai().expect)(flagsOf(runner).json).to.be.true;
82
+ (0, _chai().expect)(argsOf(runner)[0]).to.equal('some-pattern');
83
+ });
84
+ it('accepts the parent command own flags by their alias', async () => {
85
+ const runner = await parse(['parent', '-d']);
86
+ (0, _chai().expect)(flagsOf(runner).details).to.be.true;
87
+ });
88
+ it('still routes to a sub-command and accepts its flags', async () => {
89
+ const runner = await parse(['parent', 'sub', 'some-arg', '--force']);
90
+ (0, _chai().expect)(flagsOf(runner).force).to.be.true;
91
+ (0, _chai().expect)(argsOf(runner)[0]).to.equal('some-arg');
92
+ });
93
+ it('keeps the global flags available on the parent command', async () => {
94
+ const runner = await parse(['parent', '--log=error']);
95
+ (0, _chai().expect)(flagsOf(runner).log).to.equal('error');
96
+ });
97
+ it('accepts a value for a parent flag that takes one', async () => {
98
+ const runner = await parse(['parent', '--remote', 'my-scope']);
99
+ (0, _chai().expect)(flagsOf(runner).remote).to.equal('my-scope');
100
+ });
101
+ it('does not leak the parent flags into a sub-command that declares the same name', async () => {
102
+ // the parent's "remote" takes a value while the sub-command's is a boolean. if the parent's
103
+ // is registered globally it shadows the sub-command's, and yargs rejects the next token as a
104
+ // missing value: `Not enough arguments following: remote`.
105
+ const runner = await parse(['parent', 'sub', 'some-arg', '--remote', '--force']);
106
+ (0, _chai().expect)(flagsOf(runner).remote).to.be.true;
107
+ (0, _chai().expect)(flagsOf(runner).force).to.be.true;
108
+ (0, _chai().expect)(argsOf(runner)[0]).to.equal('some-arg');
109
+ });
110
+ });
111
+ });
112
+
113
+ //# sourceMappingURL=cli-parser.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_chai","data","require","_legacy","_cliParser","_defineProperty","e","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","SubCmd","constructor","report","ParentCmd","parse","args","parser","CLIParser","values","flagsOf","runner","flags","argsOf","describe","isDaemon","before","logger","after","it","expect","json","to","be","true","equal","details","force","log","remote"],"sources":["cli-parser.spec.ts"],"sourcesContent":["import { expect } from 'chai';\nimport { logger } from '@teambit/legacy.logger';\nimport type { Command, CommandOptions } from './command';\nimport { CLIParser } from './cli-parser';\n\nclass SubCmd implements Command {\n name = 'sub <arg>';\n description = 'a sub command';\n options = [\n ['f', 'force', 'force it'],\n // the parent declares \"remote\" as a flag that takes a value. this one is a boolean, so the\n // parent's must not reach here, otherwise yargs demands a value that was never meant to exist.\n ['r', 'remote', 'a boolean here, unlike the parent'],\n ] as CommandOptions;\n group = 'general';\n async report() {\n return '';\n }\n}\n\nclass ParentCmd implements Command {\n name = 'parent [pattern]';\n description = 'a command that also has sub commands';\n options = [\n ['j', 'json', 'return the output in json format'],\n ['d', 'details', 'show more details'],\n ['r', 'remote <scope-name>', 'a flag that takes a value'],\n ] as CommandOptions;\n group = 'general';\n commands: Command[] = [new SubCmd()];\n async report() {\n return '';\n }\n}\n\nfunction parse(args: string[]) {\n const parser = new CLIParser([new ParentCmd()], {} as any, { values: () => [] } as any);\n return parser.parse(args);\n}\n\nfunction flagsOf(runner: any): Record<string, any> {\n return runner.flags;\n}\n\nfunction argsOf(runner: any): any[] {\n return runner.args;\n}\n\ndescribe('CLIParser', () => {\n let isDaemon: boolean;\n before(() => {\n // a parse failure exits the process unless the logger is in daemon mode, in which case it\n // throws instead. without this, a regression here would kill the test run rather than fail it.\n isDaemon = logger.isDaemon;\n logger.isDaemon = true;\n });\n after(() => {\n logger.isDaemon = isDaemon;\n });\n\n describe('a command that has sub-commands', () => {\n it('accepts the parent command own flags', async () => {\n // registering sub-commands replaces the builder that declares the parent's own flags. when\n // that is not accounted for, yargs strict mode rejects them as unknown arguments.\n const runner = await parse(['parent', 'some-pattern', '--json']);\n\n expect(flagsOf(runner).json).to.be.true;\n expect(argsOf(runner)[0]).to.equal('some-pattern');\n });\n\n it('accepts the parent command own flags by their alias', async () => {\n const runner = await parse(['parent', '-d']);\n\n expect(flagsOf(runner).details).to.be.true;\n });\n\n it('still routes to a sub-command and accepts its flags', async () => {\n const runner = await parse(['parent', 'sub', 'some-arg', '--force']);\n\n expect(flagsOf(runner).force).to.be.true;\n expect(argsOf(runner)[0]).to.equal('some-arg');\n });\n\n it('keeps the global flags available on the parent command', async () => {\n const runner = await parse(['parent', '--log=error']);\n\n expect(flagsOf(runner).log).to.equal('error');\n });\n\n it('accepts a value for a parent flag that takes one', async () => {\n const runner = await parse(['parent', '--remote', 'my-scope']);\n\n expect(flagsOf(runner).remote).to.equal('my-scope');\n });\n\n it('does not leak the parent flags into a sub-command that declares the same name', async () => {\n // the parent's \"remote\" takes a value while the sub-command's is a boolean. if the parent's\n // is registered globally it shadows the sub-command's, and yargs rejects the next token as a\n // missing value: `Not enough arguments following: remote`.\n const runner = await parse(['parent', 'sub', 'some-arg', '--remote', '--force']);\n\n expect(flagsOf(runner).remote).to.be.true;\n expect(flagsOf(runner).force).to.be.true;\n expect(argsOf(runner)[0]).to.equal('some-arg');\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_cli@0.0.1367/dist/cli.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_cli@0.0.1367/dist/cli.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_cli@0.0.1368/dist/cli.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.harmony_cli@0.0.1368/dist/cli.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -77,14 +77,21 @@ class YargsAdapter {
77
77
  }
78
78
  static optionsToBuilder(command) {
79
79
  const flagsData = (0, _commandHelper().getFlagsData)(command);
80
+ // yargs options are global by default, which would let a command's own flags reach its
81
+ // sub-commands. a sub-command may declare the same flag name with a different arity - e.g.
82
+ // `bit lane --remote <scope>` takes a value where `bit lane remove --remote` is a boolean - and
83
+ // the parent's definition would shadow it. the global options below stay global on purpose.
84
+ const isLocalToCommand = Boolean(command.commands?.length);
80
85
  const option = flagsData.reduce((acc, flag) => {
81
- acc[flag.name] = {
86
+ acc[flag.name] = _objectSpread({
82
87
  alias: flag.alias,
83
88
  describe: flag.description,
84
89
  group: STANDARD_GROUP,
85
90
  type: flag.type,
86
91
  requiresArg: flag.requiresArg
87
- };
92
+ }, isLocalToCommand ? {
93
+ global: false
94
+ } : {});
88
95
  return acc;
89
96
  }, {});
90
97
  const globalOptions = YargsAdapter.getGlobalOptions(command);
@@ -1 +1 @@
1
- {"version":3,"names":["_legacy","data","require","_commandRunner","_commandHelper","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GLOBAL_GROUP","exports","STANDARD_GROUP","YargsAdapter","constructor","commanderCommand","onCommandStartSlot","command","name","describe","description","aliases","alias","builder","yargs","options","optionsToBuilder","option","arg","positional","examples","example","cmd","handler","argv","commandArgs","getArgsData","map","nameCamelCase","argsValues","a","flags","reduce","acc","current","val","_packageManagerArgs","commandRunner","CommandRunner","flagsData","getFlagsData","flag","group","type","requiresArg","globalOptions","getGlobalOptions","remoteOp","TOKEN_FLAG","log","pager"],"sources":["yargs-adapter.ts"],"sourcesContent":["import type { Command } from './command';\nimport type { Arguments, CommandModule, Argv, Options } from 'yargs';\nimport { TOKEN_FLAG } from '@teambit/legacy.constants';\nimport { CommandRunner } from './command-runner';\nimport type { OnCommandStartSlot } from './cli.main.runtime';\nimport { getArgsData, getFlagsData } from './command-helper';\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 commandRunner?: CommandRunner;\n constructor(\n private commanderCommand: Command,\n private onCommandStartSlot: OnCommandStartSlot\n ) {\n this.command = commanderCommand.name;\n this.describe = commanderCommand.description;\n this.aliases = commanderCommand.alias;\n }\n\n builder(yargs: Argv) {\n const options = YargsAdapter.optionsToBuilder(this.commanderCommand);\n yargs.option(options);\n this.commanderCommand.arguments?.forEach((arg) => {\n yargs.positional(arg.name, { description: arg.description });\n });\n this.commanderCommand.examples?.forEach((example) => {\n yargs.example(example.cmd, example.description);\n });\n\n return yargs;\n }\n\n handler(argv: Arguments) {\n const commandArgs = getArgsData(this.commanderCommand).map((arg) => arg.nameCamelCase);\n const argsValues = commandArgs.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, this.onCommandStartSlot);\n this.commandRunner = commandRunner;\n }\n\n get positional() {\n return this.commanderCommand.arguments;\n }\n\n static optionsToBuilder(command: Command): { [key: string]: Options } {\n const flagsData = getFlagsData(command);\n const option = flagsData.reduce((acc, flag) => {\n acc[flag.name] = {\n alias: flag.alias,\n describe: flag.description,\n group: STANDARD_GROUP,\n type: flag.type,\n requiresArg: flag.requiresArg,\n } as Options;\n return acc;\n }, {});\n\n const globalOptions = YargsAdapter.getGlobalOptions(command);\n\n return { ...option, ...globalOptions };\n }\n\n static 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 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 'useful when it fails to load normally. it skips loading aspects from workspace.jsonc, and for legacy-commands it initializes only the CLI aspect',\n group: GLOBAL_GROUP,\n };\n if (command.pager) {\n globalOptions.pager = {\n describe: 'force paging the output through a pager (e.g. less), even if it fits on one screen',\n group: GLOBAL_GROUP,\n type: 'boolean',\n };\n globalOptions['no-pager'] = {\n describe: 'do not use a pager; print all output at once (default for ai-agents, CI, and piped output)',\n group: GLOBAL_GROUP,\n type: 'boolean',\n };\n }\n return globalOptions;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_legacy","data","require","_commandRunner","_commandHelper","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","GLOBAL_GROUP","exports","STANDARD_GROUP","YargsAdapter","constructor","commanderCommand","onCommandStartSlot","command","name","describe","description","aliases","alias","builder","yargs","options","optionsToBuilder","option","arg","positional","examples","example","cmd","handler","argv","commandArgs","getArgsData","map","nameCamelCase","argsValues","a","flags","reduce","acc","current","val","_packageManagerArgs","commandRunner","CommandRunner","flagsData","getFlagsData","isLocalToCommand","Boolean","commands","flag","group","type","requiresArg","global","globalOptions","getGlobalOptions","remoteOp","TOKEN_FLAG","log","pager"],"sources":["yargs-adapter.ts"],"sourcesContent":["import type { Command } from './command';\nimport type { Arguments, CommandModule, Argv, Options } from 'yargs';\nimport { TOKEN_FLAG } from '@teambit/legacy.constants';\nimport { CommandRunner } from './command-runner';\nimport type { OnCommandStartSlot } from './cli.main.runtime';\nimport { getArgsData, getFlagsData } from './command-helper';\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 commandRunner?: CommandRunner;\n constructor(\n private commanderCommand: Command,\n private onCommandStartSlot: OnCommandStartSlot\n ) {\n this.command = commanderCommand.name;\n this.describe = commanderCommand.description;\n this.aliases = commanderCommand.alias;\n }\n\n builder(yargs: Argv) {\n const options = YargsAdapter.optionsToBuilder(this.commanderCommand);\n yargs.option(options);\n this.commanderCommand.arguments?.forEach((arg) => {\n yargs.positional(arg.name, { description: arg.description });\n });\n this.commanderCommand.examples?.forEach((example) => {\n yargs.example(example.cmd, example.description);\n });\n\n return yargs;\n }\n\n handler(argv: Arguments) {\n const commandArgs = getArgsData(this.commanderCommand).map((arg) => arg.nameCamelCase);\n const argsValues = commandArgs.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, this.onCommandStartSlot);\n this.commandRunner = commandRunner;\n }\n\n get positional() {\n return this.commanderCommand.arguments;\n }\n\n static optionsToBuilder(command: Command): { [key: string]: Options } {\n const flagsData = getFlagsData(command);\n // yargs options are global by default, which would let a command's own flags reach its\n // sub-commands. a sub-command may declare the same flag name with a different arity - e.g.\n // `bit lane --remote <scope>` takes a value where `bit lane remove --remote` is a boolean - and\n // the parent's definition would shadow it. the global options below stay global on purpose.\n const isLocalToCommand = Boolean(command.commands?.length);\n const option = flagsData.reduce((acc, flag) => {\n acc[flag.name] = {\n alias: flag.alias,\n describe: flag.description,\n group: STANDARD_GROUP,\n type: flag.type,\n requiresArg: flag.requiresArg,\n ...(isLocalToCommand ? { global: false } : {}),\n } as Options;\n return acc;\n }, {});\n\n const globalOptions = YargsAdapter.getGlobalOptions(command);\n\n return { ...option, ...globalOptions };\n }\n\n static 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 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 'useful when it fails to load normally. it skips loading aspects from workspace.jsonc, and for legacy-commands it initializes only the CLI aspect',\n group: GLOBAL_GROUP,\n };\n if (command.pager) {\n globalOptions.pager = {\n describe: 'force paging the output through a pager (e.g. less), even if it fits on one screen',\n group: GLOBAL_GROUP,\n type: 'boolean',\n };\n globalOptions['no-pager'] = {\n describe: 'do not use a pager; print all output at once (default for ai-agents, CI, and piped output)',\n group: GLOBAL_GROUP,\n type: 'boolean',\n };\n }\n return globalOptions;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/cli",
3
- "version": "0.0.1367",
3
+ "version": "0.0.1368",
4
4
  "homepage": "https://bit.cloud/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.1367"
9
+ "version": "0.0.1368"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -16,6 +16,7 @@
16
16
  "p-map-series": "2.1.0",
17
17
  "fs-extra": "10.0.0",
18
18
  "pad-right": "0.2.2",
19
+ "@teambit/legacy.consumer": "0.0.148",
19
20
  "@teambit/legacy.loader": "0.0.29",
20
21
  "@teambit/legacy.logger": "0.0.56",
21
22
  "@teambit/harmony": "0.4.12",
@@ -25,8 +26,7 @@
25
26
  "@teambit/bit-error": "0.0.404",
26
27
  "@teambit/legacy.cli.error": "0.0.56",
27
28
  "@teambit/legacy.utils": "0.0.48",
28
- "@teambit/legacy.consumer": "0.0.148",
29
- "@teambit/logger": "0.0.1460"
29
+ "@teambit/logger": "0.0.1461"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/didyoumean": "1.2.0",
@@ -37,7 +37,8 @@
37
37
  "@teambit/harmony.envs.core-aspect-env": "2.0.6"
38
38
  },
39
39
  "peerDependencies": {
40
- "react": "^17.0.0 || ^18.0.0 || ^19.0.0"
40
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
41
+ "chai": "5.2.1"
41
42
  },
42
43
  "license": "Apache-2.0",
43
44
  "optionalDependencies": {},