@teambit/cli 0.0.411 → 0.0.419

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.
@@ -124,6 +124,9 @@ class CLIParser {
124
124
 
125
125
  async parse(args = process.argv.slice(2)) {
126
126
  this.throwForNonExistsCommand(args[0]);
127
+
128
+ _logger().default.debug(`[+] CLI-INPUT: ${args.join(' ')}`);
129
+
127
130
  (0, _yargs().default)(args);
128
131
 
129
132
  _yargs().default.help(false);
@@ -1 +1 @@
1
- {"version":3,"sources":["cli-parser.ts"],"names":["CLIParser","constructor","commands","groups","parser","yargs","parse","args","process","argv","slice","throwForNonExistsCommand","help","configureParser","forEach","command","length","parseCommandWithSubCommands","yargsCommand","getYargsCommand","configureGlobalFlags","setHelpMiddleware","handleCommandFailure","configureCompletion","strict","wrap","middleware","_","printHelp","exit","loader","off","showHelp","logCommandHelp","logger","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","join"],"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\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","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"]}
@@ -22,6 +22,10 @@ export declare class CLIMain {
22
22
  * list of all registered commands. (legacy and new).
23
23
  */
24
24
  get commands(): CommandList;
25
+ /**
26
+ * get an instance of a registered command. (useful for aspects to modify and extend existing commands)
27
+ */
28
+ getCommand(name: string): Command | undefined;
25
29
  /**
26
30
  * when running `bit help`, commands are grouped by categories.
27
31
  * this method helps registering a new group by providing its name and a description.
@@ -198,6 +198,14 @@ class CLIMain {
198
198
  get commands() {
199
199
  return this.commandsSlot.values().flat();
200
200
  }
201
+ /**
202
+ * get an instance of a registered command. (useful for aspects to modify and extend existing commands)
203
+ */
204
+
205
+
206
+ getCommand(name) {
207
+ return this.commands.find(command => command.name === name);
208
+ }
201
209
  /**
202
210
  * when running `bit help`, commands are grouped by categories.
203
211
  * this method helps registering a new group by providing its name and a description.
@@ -1 +1 @@
1
- {"version":3,"sources":["cli.main.runtime.ts"],"names":["CLIMain","constructor","commandsSlot","onStartSlot","groups","register","commands","forEach","command","setDefaults","cmd","unregister","commandName","toArray","aspectId","filteredCommands","filter","name","map","set","values","flat","registerGroup","description","AlreadyExistsError","registerOnStart","onStartFn","run","hasWorkspace","invokeOnStart","CliParser","CLIParser","parse","onStartFns","promises","onStart","Promise","all","alias","shortDescription","group","options","private","loader","undefined","internal","provider","deps","config","cliMain","legacyExtensions","extension","registerHookActionsOnHooksManager","extensionsCommands","reduce","acc","curr","length","concat","legacyRegistry","legacyCommands","legacyCommandsAdapters","LegacyCommandAdapter","cliGenerateCmd","CliGenerateCmd","cliCmd","CliCmd","helpCmd","HelpCmd","push","CompletionCmd","MainRuntime","Slot","withType","CLIAspect","addRuntime"],"mappings":"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","sourcesContent":["import { Slot, SlotRegistry } from '@teambit/harmony';\nimport { buildRegistry } from '@teambit/legacy/dist/cli';\nimport { Command } from '@teambit/legacy/dist/cli/command';\nimport LegacyLoadExtensions from '@teambit/legacy/dist/legacy-extensions/extensions-loader';\nimport { groups, GroupsType } from '@teambit/legacy/dist/cli/command-groups';\nimport { clone } from 'lodash';\nimport { CLIAspect, MainRuntime } from './cli.aspect';\nimport { AlreadyExistsError } from './exceptions/already-exists';\nimport { getCommandId } from './get-command-id';\nimport { LegacyCommandAdapter } from './legacy-command-adapter';\nimport { CLIParser } from './cli-parser';\nimport { CompletionCmd } from './completion.cmd';\nimport { CliCmd, CliGenerateCmd } from './cli.cmd';\nimport { HelpCmd } from './help.cmd';\n\nexport type CommandList = Array<Command>;\nexport type OnStart = (hasWorkspace: boolean) => Promise<void>;\n\nexport type OnStartSlot = SlotRegistry<OnStart>;\nexport type CommandsSlot = SlotRegistry<CommandList>;\n\nexport class CLIMain {\n public groups: GroupsType = clone(groups); // if it's not cloned, it is cached across loadBit() instances\n\n constructor(private commandsSlot: CommandsSlot, private onStartSlot: OnStartSlot) {}\n\n /**\n * registers a new command in to the CLI.\n */\n register(...commands: CommandList) {\n commands.forEach((command) => {\n this.setDefaults(command);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n command.commands!.forEach((cmd) => this.setDefaults(cmd));\n });\n this.commandsSlot.register(commands);\n }\n\n /**\n * helpful for having the same command name in different environments (legacy and Harmony)\n */\n unregister(commandName: string) {\n this.commandsSlot.toArray().forEach(([aspectId, commands]) => {\n const filteredCommands = commands.filter((command) => {\n return getCommandId(command.name) !== commandName;\n });\n this.commandsSlot.map.set(aspectId, filteredCommands);\n });\n }\n\n /**\n * list of all registered commands. (legacy and new).\n */\n get commands(): CommandList {\n return this.commandsSlot.values().flat();\n }\n\n /**\n * when running `bit help`, commands are grouped by categories.\n * this method helps registering a new group by providing its name and a description.\n * the name is what needs to be assigned to the `group` property of the Command interface.\n * the description is what shown in the `bit help` output.\n */\n registerGroup(name: string, description: string) {\n if (this.groups[name]) {\n throw new AlreadyExistsError('group', name);\n }\n this.groups[name] = description;\n }\n\n registerOnStart(onStartFn: OnStart) {\n this.onStartSlot.register(onStartFn);\n return this;\n }\n\n /**\n * execute commands registered to this aspect.\n */\n async run(hasWorkspace: boolean) {\n await this.invokeOnStart(hasWorkspace);\n const CliParser = new CLIParser(this.commands, this.groups);\n await CliParser.parse();\n }\n\n private async invokeOnStart(hasWorkspace: boolean) {\n const onStartFns = this.onStartSlot.values();\n const promises = onStartFns.map(async (onStart) => onStart(hasWorkspace));\n return Promise.all(promises);\n }\n\n private setDefaults(command: Command) {\n command.alias = command.alias || '';\n command.description = command.description || '';\n command.shortDescription = command.shortDescription || '';\n command.group = command.group || 'ungrouped';\n command.options = command.options || [];\n command.private = command.private || false;\n command.commands = command.commands || [];\n if (command.loader === undefined) {\n if (command.internal) {\n command.loader = false;\n } else {\n command.loader = true;\n }\n }\n }\n\n static dependencies = [];\n static runtime = MainRuntime;\n static slots = [Slot.withType<CommandList>(), Slot.withType<OnStart>()];\n\n static async provider(deps, config, [commandsSlot, onStartSlot]: [CommandsSlot, OnStartSlot]) {\n const cliMain = new CLIMain(commandsSlot, onStartSlot);\n const legacyExtensions = await LegacyLoadExtensions();\n // Make sure to register all the hooks actions in the global hooks manager\n legacyExtensions.forEach((extension) => {\n extension.registerHookActionsOnHooksManager();\n });\n\n const extensionsCommands = legacyExtensions.reduce((acc, curr) => {\n if (curr.commands && curr.commands.length) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n acc = acc.concat(curr.commands);\n }\n return acc;\n }, []);\n\n const legacyRegistry = buildRegistry(extensionsCommands);\n const legacyCommands = legacyRegistry.commands.concat(legacyRegistry.extensionsCommands || []);\n const legacyCommandsAdapters = legacyCommands.map((command) => new LegacyCommandAdapter(command, cliMain));\n const cliGenerateCmd = new CliGenerateCmd(cliMain);\n const cliCmd = new CliCmd(cliMain);\n const helpCmd = new HelpCmd(cliMain);\n cliCmd.commands.push(cliGenerateCmd);\n cliMain.register(...legacyCommandsAdapters, new CompletionCmd(), cliCmd, helpCmd);\n return cliMain;\n }\n}\n\nCLIAspect.addRuntime(CLIMain);\n"]}
1
+ {"version":3,"sources":["cli.main.runtime.ts"],"names":["CLIMain","constructor","commandsSlot","onStartSlot","groups","register","commands","forEach","command","setDefaults","cmd","unregister","commandName","toArray","aspectId","filteredCommands","filter","name","map","set","values","flat","getCommand","find","registerGroup","description","AlreadyExistsError","registerOnStart","onStartFn","run","hasWorkspace","invokeOnStart","CliParser","CLIParser","parse","onStartFns","promises","onStart","Promise","all","alias","shortDescription","group","options","private","loader","undefined","internal","provider","deps","config","cliMain","legacyExtensions","extension","registerHookActionsOnHooksManager","extensionsCommands","reduce","acc","curr","length","concat","legacyRegistry","legacyCommands","legacyCommandsAdapters","LegacyCommandAdapter","cliGenerateCmd","CliGenerateCmd","cliCmd","CliCmd","helpCmd","HelpCmd","push","CompletionCmd","MainRuntime","Slot","withType","CLIAspect","addRuntime"],"mappings":"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","sourcesContent":["import { Slot, SlotRegistry } from '@teambit/harmony';\nimport { buildRegistry } from '@teambit/legacy/dist/cli';\nimport { Command } from '@teambit/legacy/dist/cli/command';\nimport LegacyLoadExtensions from '@teambit/legacy/dist/legacy-extensions/extensions-loader';\nimport { groups, GroupsType } from '@teambit/legacy/dist/cli/command-groups';\nimport { clone } from 'lodash';\nimport { CLIAspect, MainRuntime } from './cli.aspect';\nimport { AlreadyExistsError } from './exceptions/already-exists';\nimport { getCommandId } from './get-command-id';\nimport { LegacyCommandAdapter } from './legacy-command-adapter';\nimport { CLIParser } from './cli-parser';\nimport { CompletionCmd } from './completion.cmd';\nimport { CliCmd, CliGenerateCmd } from './cli.cmd';\nimport { HelpCmd } from './help.cmd';\n\nexport type CommandList = Array<Command>;\nexport type OnStart = (hasWorkspace: boolean) => Promise<void>;\n\nexport type OnStartSlot = SlotRegistry<OnStart>;\nexport type CommandsSlot = SlotRegistry<CommandList>;\n\nexport class CLIMain {\n public groups: GroupsType = clone(groups); // if it's not cloned, it is cached across loadBit() instances\n\n constructor(private commandsSlot: CommandsSlot, private onStartSlot: OnStartSlot) {}\n\n /**\n * registers a new command in to the CLI.\n */\n register(...commands: CommandList) {\n commands.forEach((command) => {\n this.setDefaults(command);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n command.commands!.forEach((cmd) => this.setDefaults(cmd));\n });\n this.commandsSlot.register(commands);\n }\n\n /**\n * helpful for having the same command name in different environments (legacy and Harmony)\n */\n unregister(commandName: string) {\n this.commandsSlot.toArray().forEach(([aspectId, commands]) => {\n const filteredCommands = commands.filter((command) => {\n return getCommandId(command.name) !== commandName;\n });\n this.commandsSlot.map.set(aspectId, filteredCommands);\n });\n }\n\n /**\n * list of all registered commands. (legacy and new).\n */\n get commands(): CommandList {\n return this.commandsSlot.values().flat();\n }\n\n /**\n * get an instance of a registered command. (useful for aspects to modify and extend existing commands)\n */\n getCommand(name: string): Command | undefined {\n return this.commands.find((command) => command.name === name);\n }\n\n /**\n * when running `bit help`, commands are grouped by categories.\n * this method helps registering a new group by providing its name and a description.\n * the name is what needs to be assigned to the `group` property of the Command interface.\n * the description is what shown in the `bit help` output.\n */\n registerGroup(name: string, description: string) {\n if (this.groups[name]) {\n throw new AlreadyExistsError('group', name);\n }\n this.groups[name] = description;\n }\n\n registerOnStart(onStartFn: OnStart) {\n this.onStartSlot.register(onStartFn);\n return this;\n }\n\n /**\n * execute commands registered to this aspect.\n */\n async run(hasWorkspace: boolean) {\n await this.invokeOnStart(hasWorkspace);\n const CliParser = new CLIParser(this.commands, this.groups);\n await CliParser.parse();\n }\n\n private async invokeOnStart(hasWorkspace: boolean) {\n const onStartFns = this.onStartSlot.values();\n const promises = onStartFns.map(async (onStart) => onStart(hasWorkspace));\n return Promise.all(promises);\n }\n\n private setDefaults(command: Command) {\n command.alias = command.alias || '';\n command.description = command.description || '';\n command.shortDescription = command.shortDescription || '';\n command.group = command.group || 'ungrouped';\n command.options = command.options || [];\n command.private = command.private || false;\n command.commands = command.commands || [];\n if (command.loader === undefined) {\n if (command.internal) {\n command.loader = false;\n } else {\n command.loader = true;\n }\n }\n }\n\n static dependencies = [];\n static runtime = MainRuntime;\n static slots = [Slot.withType<CommandList>(), Slot.withType<OnStart>()];\n\n static async provider(deps, config, [commandsSlot, onStartSlot]: [CommandsSlot, OnStartSlot]) {\n const cliMain = new CLIMain(commandsSlot, onStartSlot);\n const legacyExtensions = await LegacyLoadExtensions();\n // Make sure to register all the hooks actions in the global hooks manager\n legacyExtensions.forEach((extension) => {\n extension.registerHookActionsOnHooksManager();\n });\n\n const extensionsCommands = legacyExtensions.reduce((acc, curr) => {\n if (curr.commands && curr.commands.length) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n acc = acc.concat(curr.commands);\n }\n return acc;\n }, []);\n\n const legacyRegistry = buildRegistry(extensionsCommands);\n const legacyCommands = legacyRegistry.commands.concat(legacyRegistry.extensionsCommands || []);\n const legacyCommandsAdapters = legacyCommands.map((command) => new LegacyCommandAdapter(command, cliMain));\n const cliGenerateCmd = new CliGenerateCmd(cliMain);\n const cliCmd = new CliCmd(cliMain);\n const helpCmd = new HelpCmd(cliMain);\n cliCmd.commands.push(cliGenerateCmd);\n cliMain.register(...legacyCommandsAdapters, new CompletionCmd(), cliCmd, helpCmd);\n return cliMain;\n }\n}\n\nCLIAspect.addRuntime(CLIMain);\n"]}
@@ -247,7 +247,7 @@ class CommandRunner {
247
247
 
248
248
  async writeAndExit(data, exitCode) {
249
249
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
250
- return process.stdout.write(data, async () => _logger().default.exitAfterFlush(exitCode, this.commandName));
250
+ return process.stdout.write(data, async () => _logger().default.exitAfterFlush(exitCode, this.commandName, data));
251
251
  }
252
252
 
253
253
  async runMigrateIfNeeded() {
@@ -1 +1 @@
1
- {"version":3,"sources":["command-runner.ts"],"names":["CommandRunner","constructor","command","args","flags","commandName","name","runCommand","bootstrapCommand","runMigrateIfNeeded","determineConsoleWritingDuringCommand","json","runJsonHandler","shouldRunRender","runRenderHandler","report","runReportHandler","err","internal","Error","Analytics","init","logger","info","token","TOKEN_FLAG_NAME","globalFlags","toString","isTerminal","process","stdout","isTTY","Boolean","render","result","code","data","writeAndExit","JSON","stringify","loader","off","toRenderResult","waitUntilExit","exitAfterFlush","exitCode","on","start","shouldWriteToConsole","log","logValue","undefined","switchToConsoleLogger","write","migration","debug","obj","isRenderResult","hasOwnProperty"],"mappings":"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","sourcesContent":["import { render } from 'ink';\nimport { migrate } from '@teambit/legacy/dist/api/consumer';\nimport logger, { LoggerLevel } from '@teambit/legacy/dist/logger/logger';\nimport { CLIArgs, Command, Flags, RenderResult } from '@teambit/legacy/dist/cli/command';\nimport { parseCommandName } from '@teambit/legacy/dist/cli/command-registry';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { handleErrorAndExit } from '@teambit/legacy/dist/cli/handle-errors';\nimport { TOKEN_FLAG_NAME } from '@teambit/legacy/dist/constants';\nimport globalFlags from '@teambit/legacy/dist/cli/global-flags';\nimport { Analytics } from '@teambit/legacy/dist/analytics/analytics';\n\nexport class CommandRunner {\n private commandName: string;\n constructor(private command: Command, private args: CLIArgs, private flags: Flags) {\n this.commandName = parseCommandName(this.command.name);\n }\n\n /**\n * run command using one of the handler, \"json\"/\"report\"/\"render\". once done, exit the process.\n */\n async runCommand() {\n try {\n this.bootstrapCommand();\n await this.runMigrateIfNeeded();\n this.determineConsoleWritingDuringCommand();\n if (this.flags.json) {\n return await this.runJsonHandler();\n }\n if (this.shouldRunRender()) {\n return await this.runRenderHandler();\n }\n if (this.command.report) {\n return await this.runReportHandler();\n }\n } catch (err: any) {\n return handleErrorAndExit(err, this.commandName, this.command.internal);\n }\n\n throw new Error(`command \"${this.commandName}\" doesn't implement \"render\" nor \"report\" methods`);\n }\n\n private bootstrapCommand() {\n Analytics.init(this.commandName, this.flags, this.args);\n logger.info(`[*] started a new command: \"${this.commandName}\" with the following data:`, {\n args: this.args,\n flags: this.flags,\n });\n const token = this.flags[TOKEN_FLAG_NAME];\n if (token) {\n globalFlags.token = token.toString();\n }\n }\n\n /**\n * when both \"render\" and \"report\" were implemented, check whether it's a terminal.\n * if it's a terminal, use \"render\", if not, use \"report\" because \"report\" is just a string\n */\n private shouldRunRender() {\n const isTerminal = process.stdout.isTTY;\n if (this.command.report && !isTerminal) {\n return false;\n }\n return Boolean(this.command.render);\n }\n\n /**\n * this works for both, Harmony commands and Legacy commands (the legacy-command-adapter\n * implements json() method)\n */\n private async runJsonHandler() {\n if (!this.flags.json) return null;\n if (!this.command.json) throw new Error(`command \"${this.commandName}\" doesn't implement \"json\" method`);\n const result = await this.command.json(this.args, this.flags);\n const code = result.code || 0;\n const data = result.data || result;\n return this.writeAndExit(JSON.stringify(data, null, 2), code);\n }\n\n private async runRenderHandler() {\n if (!this.command.render) throw new Error('runRenderHandler expects command.render to be implemented');\n const result = await this.command.render(this.args, this.flags);\n loader.off();\n\n const { data, code } = toRenderResult(result);\n\n const { waitUntilExit } = render(data);\n await waitUntilExit();\n return logger.exitAfterFlush(code, this.commandName);\n }\n\n private async runReportHandler() {\n if (!this.command.report) throw new Error('runReportHandler expects command.report to be implemented');\n const result = await this.command.report(this.args, this.flags);\n loader.off();\n const data = typeof result === 'string' ? result : result.data;\n const exitCode = typeof result === 'string' ? 0 : result.code;\n return this.writeAndExit(`${data}\\n`, exitCode);\n }\n\n /**\n * the loader and logger.console write output to the console during the command execution.\n * for internals commands, such as, _put, _fetch, the command.loader = false.\n */\n private determineConsoleWritingDuringCommand() {\n if (this.command.loader && !this.flags.json && !this.flags['get-yargs-completions']) {\n loader.on();\n loader.start(`running command \"${this.commandName}\"...`);\n logger.shouldWriteToConsole = true;\n } else {\n loader.off();\n logger.shouldWriteToConsole = false;\n }\n if (this.flags.log) {\n const logValue = typeof this.flags.log === 'string' ? this.flags.log : undefined;\n logger.switchToConsoleLogger(logValue as LoggerLevel);\n }\n }\n\n private async writeAndExit(data: string, exitCode: number) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return process.stdout.write(data, async () => logger.exitAfterFlush(exitCode, this.commandName));\n }\n\n private async runMigrateIfNeeded(): Promise<any> {\n // @ts-ignore LegacyCommandAdapter has .migration\n if (this.command.migration) {\n logger.debug('Checking if a migration is needed');\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return migrate(null, false);\n }\n return null;\n }\n}\n\nfunction toRenderResult(obj: RenderResult | React.ReactElement) {\n return isRenderResult(obj) ? obj : { data: obj, code: 0 };\n}\n\nfunction isRenderResult(obj: RenderResult | any): obj is RenderResult {\n // eslint-disable-next-line no-prototype-builtins\n return typeof obj === 'object' && typeof obj.code === 'number' && obj.hasOwnProperty('data');\n}\n"]}
1
+ {"version":3,"sources":["command-runner.ts"],"names":["CommandRunner","constructor","command","args","flags","commandName","name","runCommand","bootstrapCommand","runMigrateIfNeeded","determineConsoleWritingDuringCommand","json","runJsonHandler","shouldRunRender","runRenderHandler","report","runReportHandler","err","internal","Error","Analytics","init","logger","info","token","TOKEN_FLAG_NAME","globalFlags","toString","isTerminal","process","stdout","isTTY","Boolean","render","result","code","data","writeAndExit","JSON","stringify","loader","off","toRenderResult","waitUntilExit","exitAfterFlush","exitCode","on","start","shouldWriteToConsole","log","logValue","undefined","switchToConsoleLogger","write","migration","debug","obj","isRenderResult","hasOwnProperty"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AACA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAEO,MAAMA,aAAN,CAAoB;AAEzBC,EAAAA,WAAW,CAASC,OAAT,EAAmCC,IAAnC,EAA0DC,KAA1D,EAAwE;AAAA,SAA/DF,OAA+D,GAA/DA,OAA+D;AAAA,SAArCC,IAAqC,GAArCA,IAAqC;AAAA,SAAdC,KAAc,GAAdA,KAAc;AAAA;AACjF,SAAKC,WAAL,GAAmB,yCAAiB,KAAKH,OAAL,CAAaI,IAA9B,CAAnB;AACD;AAED;AACF;AACA;;;AACkB,QAAVC,UAAU,GAAG;AACjB,QAAI;AACF,WAAKC,gBAAL;AACA,YAAM,KAAKC,kBAAL,EAAN;AACA,WAAKC,oCAAL;;AACA,UAAI,KAAKN,KAAL,CAAWO,IAAf,EAAqB;AACnB,eAAO,MAAM,KAAKC,cAAL,EAAb;AACD;;AACD,UAAI,KAAKC,eAAL,EAAJ,EAA4B;AAC1B,eAAO,MAAM,KAAKC,gBAAL,EAAb;AACD;;AACD,UAAI,KAAKZ,OAAL,CAAaa,MAAjB,EAAyB;AACvB,eAAO,MAAM,KAAKC,gBAAL,EAAb;AACD;AACF,KAbD,CAaE,OAAOC,GAAP,EAAiB;AACjB,aAAO,wCAAmBA,GAAnB,EAAwB,KAAKZ,WAA7B,EAA0C,KAAKH,OAAL,CAAagB,QAAvD,CAAP;AACD;;AAED,UAAM,IAAIC,KAAJ,CAAW,YAAW,KAAKd,WAAY,mDAAvC,CAAN;AACD;;AAEOG,EAAAA,gBAAgB,GAAG;AACzBY,2BAAUC,IAAV,CAAe,KAAKhB,WAApB,EAAiC,KAAKD,KAAtC,EAA6C,KAAKD,IAAlD;;AACAmB,sBAAOC,IAAP,CAAa,+BAA8B,KAAKlB,WAAY,4BAA5D,EAAyF;AACvFF,MAAAA,IAAI,EAAE,KAAKA,IAD4E;AAEvFC,MAAAA,KAAK,EAAE,KAAKA;AAF2E,KAAzF;;AAIA,UAAMoB,KAAK,GAAG,KAAKpB,KAAL,CAAWqB,4BAAX,CAAd;;AACA,QAAID,KAAJ,EAAW;AACTE,6BAAYF,KAAZ,GAAoBA,KAAK,CAACG,QAAN,EAApB;AACD;AACF;AAED;AACF;AACA;AACA;;;AACUd,EAAAA,eAAe,GAAG;AACxB,UAAMe,UAAU,GAAGC,OAAO,CAACC,MAAR,CAAeC,KAAlC;;AACA,QAAI,KAAK7B,OAAL,CAAaa,MAAb,IAAuB,CAACa,UAA5B,EAAwC;AACtC,aAAO,KAAP;AACD;;AACD,WAAOI,OAAO,CAAC,KAAK9B,OAAL,CAAa+B,MAAd,CAAd;AACD;AAED;AACF;AACA;AACA;;;AAC8B,QAAdrB,cAAc,GAAG;AAC7B,QAAI,CAAC,KAAKR,KAAL,CAAWO,IAAhB,EAAsB,OAAO,IAAP;AACtB,QAAI,CAAC,KAAKT,OAAL,CAAaS,IAAlB,EAAwB,MAAM,IAAIQ,KAAJ,CAAW,YAAW,KAAKd,WAAY,mCAAvC,CAAN;AACxB,UAAM6B,MAAM,GAAG,MAAM,KAAKhC,OAAL,CAAaS,IAAb,CAAkB,KAAKR,IAAvB,EAA6B,KAAKC,KAAlC,CAArB;AACA,UAAM+B,IAAI,GAAGD,MAAM,CAACC,IAAP,IAAe,CAA5B;AACA,UAAMC,IAAI,GAAGF,MAAM,CAACE,IAAP,IAAeF,MAA5B;AACA,WAAO,KAAKG,YAAL,CAAkBC,IAAI,CAACC,SAAL,CAAeH,IAAf,EAAqB,IAArB,EAA2B,CAA3B,CAAlB,EAAiDD,IAAjD,CAAP;AACD;;AAE6B,QAAhBrB,gBAAgB,GAAG;AAC/B,QAAI,CAAC,KAAKZ,OAAL,CAAa+B,MAAlB,EAA0B,MAAM,IAAId,KAAJ,CAAU,2DAAV,CAAN;AAC1B,UAAMe,MAAM,GAAG,MAAM,KAAKhC,OAAL,CAAa+B,MAAb,CAAoB,KAAK9B,IAAzB,EAA+B,KAAKC,KAApC,CAArB;;AACAoC,sBAAOC,GAAP;;AAEA,UAAM;AAAEL,MAAAA,IAAF;AAAQD,MAAAA;AAAR,QAAiBO,cAAc,CAACR,MAAD,CAArC;AAEA,UAAM;AAAES,MAAAA;AAAF,QAAoB,mBAAOP,IAAP,CAA1B;AACA,UAAMO,aAAa,EAAnB;AACA,WAAOrB,kBAAOsB,cAAP,CAAsBT,IAAtB,EAA4B,KAAK9B,WAAjC,CAAP;AACD;;AAE6B,QAAhBW,gBAAgB,GAAG;AAC/B,QAAI,CAAC,KAAKd,OAAL,CAAaa,MAAlB,EAA0B,MAAM,IAAII,KAAJ,CAAU,2DAAV,CAAN;AAC1B,UAAMe,MAAM,GAAG,MAAM,KAAKhC,OAAL,CAAaa,MAAb,CAAoB,KAAKZ,IAAzB,EAA+B,KAAKC,KAApC,CAArB;;AACAoC,sBAAOC,GAAP;;AACA,UAAML,IAAI,GAAG,OAAOF,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCA,MAAM,CAACE,IAA1D;AACA,UAAMS,QAAQ,GAAG,OAAOX,MAAP,KAAkB,QAAlB,GAA6B,CAA7B,GAAiCA,MAAM,CAACC,IAAzD;AACA,WAAO,KAAKE,YAAL,CAAmB,GAAED,IAAK,IAA1B,EAA+BS,QAA/B,CAAP;AACD;AAED;AACF;AACA;AACA;;;AACUnC,EAAAA,oCAAoC,GAAG;AAC7C,QAAI,KAAKR,OAAL,CAAasC,MAAb,IAAuB,CAAC,KAAKpC,KAAL,CAAWO,IAAnC,IAA2C,CAAC,KAAKP,KAAL,CAAW,uBAAX,CAAhD,EAAqF;AACnFoC,wBAAOM,EAAP;;AACAN,wBAAOO,KAAP,CAAc,oBAAmB,KAAK1C,WAAY,MAAlD;;AACAiB,wBAAO0B,oBAAP,GAA8B,IAA9B;AACD,KAJD,MAIO;AACLR,wBAAOC,GAAP;;AACAnB,wBAAO0B,oBAAP,GAA8B,KAA9B;AACD;;AACD,QAAI,KAAK5C,KAAL,CAAW6C,GAAf,EAAoB;AAClB,YAAMC,QAAQ,GAAG,OAAO,KAAK9C,KAAL,CAAW6C,GAAlB,KAA0B,QAA1B,GAAqC,KAAK7C,KAAL,CAAW6C,GAAhD,GAAsDE,SAAvE;;AACA7B,wBAAO8B,qBAAP,CAA6BF,QAA7B;AACD;AACF;;AAEyB,QAAZb,YAAY,CAACD,IAAD,EAAeS,QAAf,EAAiC;AACzD;AACA,WAAOhB,OAAO,CAACC,MAAR,CAAeuB,KAAf,CAAqBjB,IAArB,EAA2B,YAAYd,kBAAOsB,cAAP,CAAsBC,QAAtB,EAAgC,KAAKxC,WAArC,EAAkD+B,IAAlD,CAAvC,CAAP;AACD;;AAE+B,QAAlB3B,kBAAkB,GAAiB;AAC/C;AACA,QAAI,KAAKP,OAAL,CAAaoD,SAAjB,EAA4B;AAC1BhC,wBAAOiC,KAAP,CAAa,mCAAb,EAD0B,CAE1B;;;AACA,aAAO,yBAAQ,IAAR,EAAc,KAAd,CAAP;AACD;;AACD,WAAO,IAAP;AACD;;AAxHwB;;;;AA2H3B,SAASb,cAAT,CAAwBc,GAAxB,EAAgE;AAC9D,SAAOC,cAAc,CAACD,GAAD,CAAd,GAAsBA,GAAtB,GAA4B;AAAEpB,IAAAA,IAAI,EAAEoB,GAAR;AAAarB,IAAAA,IAAI,EAAE;AAAnB,GAAnC;AACD;;AAED,SAASsB,cAAT,CAAwBD,GAAxB,EAAsE;AACpE;AACA,SAAO,OAAOA,GAAP,KAAe,QAAf,IAA2B,OAAOA,GAAG,CAACrB,IAAX,KAAoB,QAA/C,IAA2DqB,GAAG,CAACE,cAAJ,CAAmB,MAAnB,CAAlE;AACD","sourcesContent":["import { render } from 'ink';\nimport { migrate } from '@teambit/legacy/dist/api/consumer';\nimport logger, { LoggerLevel } from '@teambit/legacy/dist/logger/logger';\nimport { CLIArgs, Command, Flags, RenderResult } from '@teambit/legacy/dist/cli/command';\nimport { parseCommandName } from '@teambit/legacy/dist/cli/command-registry';\nimport loader from '@teambit/legacy/dist/cli/loader';\nimport { handleErrorAndExit } from '@teambit/legacy/dist/cli/handle-errors';\nimport { TOKEN_FLAG_NAME } from '@teambit/legacy/dist/constants';\nimport globalFlags from '@teambit/legacy/dist/cli/global-flags';\nimport { Analytics } from '@teambit/legacy/dist/analytics/analytics';\n\nexport class CommandRunner {\n private commandName: string;\n constructor(private command: Command, private args: CLIArgs, private flags: Flags) {\n this.commandName = parseCommandName(this.command.name);\n }\n\n /**\n * run command using one of the handler, \"json\"/\"report\"/\"render\". once done, exit the process.\n */\n async runCommand() {\n try {\n this.bootstrapCommand();\n await this.runMigrateIfNeeded();\n this.determineConsoleWritingDuringCommand();\n if (this.flags.json) {\n return await this.runJsonHandler();\n }\n if (this.shouldRunRender()) {\n return await this.runRenderHandler();\n }\n if (this.command.report) {\n return await this.runReportHandler();\n }\n } catch (err: any) {\n return handleErrorAndExit(err, this.commandName, this.command.internal);\n }\n\n throw new Error(`command \"${this.commandName}\" doesn't implement \"render\" nor \"report\" methods`);\n }\n\n private bootstrapCommand() {\n Analytics.init(this.commandName, this.flags, this.args);\n logger.info(`[*] started a new command: \"${this.commandName}\" with the following data:`, {\n args: this.args,\n flags: this.flags,\n });\n const token = this.flags[TOKEN_FLAG_NAME];\n if (token) {\n globalFlags.token = token.toString();\n }\n }\n\n /**\n * when both \"render\" and \"report\" were implemented, check whether it's a terminal.\n * if it's a terminal, use \"render\", if not, use \"report\" because \"report\" is just a string\n */\n private shouldRunRender() {\n const isTerminal = process.stdout.isTTY;\n if (this.command.report && !isTerminal) {\n return false;\n }\n return Boolean(this.command.render);\n }\n\n /**\n * this works for both, Harmony commands and Legacy commands (the legacy-command-adapter\n * implements json() method)\n */\n private async runJsonHandler() {\n if (!this.flags.json) return null;\n if (!this.command.json) throw new Error(`command \"${this.commandName}\" doesn't implement \"json\" method`);\n const result = await this.command.json(this.args, this.flags);\n const code = result.code || 0;\n const data = result.data || result;\n return this.writeAndExit(JSON.stringify(data, null, 2), code);\n }\n\n private async runRenderHandler() {\n if (!this.command.render) throw new Error('runRenderHandler expects command.render to be implemented');\n const result = await this.command.render(this.args, this.flags);\n loader.off();\n\n const { data, code } = toRenderResult(result);\n\n const { waitUntilExit } = render(data);\n await waitUntilExit();\n return logger.exitAfterFlush(code, this.commandName);\n }\n\n private async runReportHandler() {\n if (!this.command.report) throw new Error('runReportHandler expects command.report to be implemented');\n const result = await this.command.report(this.args, this.flags);\n loader.off();\n const data = typeof result === 'string' ? result : result.data;\n const exitCode = typeof result === 'string' ? 0 : result.code;\n return this.writeAndExit(`${data}\\n`, exitCode);\n }\n\n /**\n * the loader and logger.console write output to the console during the command execution.\n * for internals commands, such as, _put, _fetch, the command.loader = false.\n */\n private determineConsoleWritingDuringCommand() {\n if (this.command.loader && !this.flags.json && !this.flags['get-yargs-completions']) {\n loader.on();\n loader.start(`running command \"${this.commandName}\"...`);\n logger.shouldWriteToConsole = true;\n } else {\n loader.off();\n logger.shouldWriteToConsole = false;\n }\n if (this.flags.log) {\n const logValue = typeof this.flags.log === 'string' ? this.flags.log : undefined;\n logger.switchToConsoleLogger(logValue as LoggerLevel);\n }\n }\n\n private async writeAndExit(data: string, exitCode: number) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n return process.stdout.write(data, async () => logger.exitAfterFlush(exitCode, this.commandName, data));\n }\n\n private async runMigrateIfNeeded(): Promise<any> {\n // @ts-ignore LegacyCommandAdapter has .migration\n if (this.command.migration) {\n logger.debug('Checking if a migration is needed');\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n return migrate(null, false);\n }\n return null;\n }\n}\n\nfunction toRenderResult(obj: RenderResult | React.ReactElement) {\n return isRenderResult(obj) ? obj : { data: obj, code: 0 };\n}\n\nfunction isRenderResult(obj: RenderResult | any): obj is RenderResult {\n // eslint-disable-next-line no-prototype-builtins\n return typeof obj === 'object' && typeof obj.code === 'number' && obj.hasOwnProperty('data');\n}\n"]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/cli",
3
- "version": "0.0.411",
3
+ "version": "0.0.419",
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.411"
9
+ "version": "0.0.419"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "2.4.2",
@@ -32,7 +32,7 @@
32
32
  "@types/node": "12.20.4"
33
33
  },
34
34
  "peerDependencies": {
35
- "@teambit/legacy": "1.0.198",
35
+ "@teambit/legacy": "1.0.202",
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.198",
63
+ "@teambit/legacy": "1.0.202",
64
64
  "react-dom": "^16.8.0 || ^17.0.0",
65
65
  "react": "^16.8.0 || ^17.0.0"
66
66
  }
Binary file