UNPKG

10.4 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/index.ts"],"names":["pkgJson","require","program","CommanderCommand","usage","version","option","handleError","err","logger","enable","opts","verbose","error","message","replace","stack","log","info","chalk","dim","reset","process","exit","printExamples","examples","output","length","formattedUsage","map","example","desc","cyan","cmd","join","concat","bold","isDetachedCommand","command","detached","attachCommand","rest","name","action","handleAction","args","passedOptions","argv","Array","from","slice","func","description","addHelpText","opt","options","parse","val","default","run","setupAndRun","e","includes","disable","setVerbose","platform","scriptName","absolutePath","path","__dirname","childProcess","execFileSync","stdio","warn","red","detachedCommands","config","projectCommands","commands","debug","CLIError","bin","resolve"],"mappings":"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","sourcesContent":["import chalk from 'chalk';\nimport childProcess from 'child_process';\nimport {Command as CommanderCommand} from 'commander';\nimport path from 'path';\nimport {Command, Config} from '@react-native-community/cli-types';\nimport {logger, CLIError} from '@react-native-community/cli-tools';\nimport {detachedCommands, projectCommands} from './commands';\nimport loadConfig from '@react-native-community/cli-config';\nconst pkgJson = require('../package.json');\n\nconst program = new CommanderCommand()\n .usage('[command] [options]')\n .version(pkgJson.version, '-v', 'Output the current version')\n .option('--verbose', 'Increase logging verbosity');\n\nconst handleError = (err: Error) => {\n logger.enable();\n if (program.opts().verbose) {\n logger.error(err.message);\n } else {\n // Some error messages (esp. custom ones) might have `.` at the end already.\n const message = err.message.replace(/\\.$/, '');\n logger.error(`${message}.`);\n }\n if (err.stack) {\n logger.log(err.stack);\n }\n if (!program.opts().verbose) {\n logger.info(\n chalk.dim(\n `Run CLI with ${chalk.reset('--verbose')} ${chalk.dim(\n 'flag for more details.',\n )}`,\n ),\n );\n }\n process.exit(1);\n};\n\nfunction printExamples(examples: Command['examples']) {\n let output: string[] = [];\n\n if (examples && examples.length > 0) {\n const formattedUsage = examples\n .map((example) => ` ${example.desc}: \\n ${chalk.cyan(example.cmd)}`)\n .join('\\n\\n');\n\n output = output.concat([chalk.bold('\\nExample usage:'), formattedUsage]);\n }\n\n return output.join('\\n').concat('\\n');\n}\n\n/**\n * Custom type assertion needed for the `makeCommand` conditional\n * types to be properly resolved.\n */\nconst isDetachedCommand = (\n command: Command<boolean>,\n): command is Command<true> => {\n return command.detached === true;\n};\n\n/**\n * Attaches a new command onto global `commander` instance.\n *\n * Note that this function takes additional argument of `Config` type in case\n * passed `command` needs it for its execution.\n */\nfunction attachCommand<IsDetached extends boolean>(\n command: Command<IsDetached>,\n ...rest: IsDetached extends false ? [Config] : []\n): void {\n const cmd = program\n .command(command.name)\n .action(async function handleAction(\n this: CommanderCommand,\n ...args: string[]\n ) {\n const passedOptions = this.opts();\n const argv = Array.from(args).slice(0, -1);\n\n try {\n if (isDetachedCommand(command)) {\n await command.func(argv, passedOptions);\n } else {\n await command.func(argv, rest[0] as Config, passedOptions);\n }\n } catch (error) {\n handleError(error);\n }\n });\n\n if (command.description) {\n cmd.description(command.description);\n }\n\n cmd.addHelpText('after', printExamples(command.examples));\n\n for (const opt of command.options || []) {\n cmd.option(\n opt.name,\n opt.description ?? '',\n opt.parse || ((val: any) => val),\n typeof opt.default === 'function'\n ? opt.default(rest[0] as Config)\n : opt.default,\n );\n }\n}\n\nasync function run() {\n try {\n await setupAndRun();\n } catch (e) {\n handleError(e);\n }\n}\n\nasync function setupAndRun() {\n // Commander is not available yet\n\n // when we run `config`, we don't want to output anything to the console. We\n // expect it to return valid JSON\n if (process.argv.includes('config')) {\n logger.disable();\n }\n\n logger.setVerbose(process.argv.includes('--verbose'));\n\n // We only have a setup script for UNIX envs currently\n if (process.platform !== 'win32') {\n const scriptName = 'setup_env.sh';\n const absolutePath = path.join(__dirname, '..', scriptName);\n\n try {\n childProcess.execFileSync(absolutePath, {stdio: 'pipe'});\n } catch (error) {\n logger.warn(\n `Failed to run environment setup script \"${scriptName}\"\\n\\n${chalk.red(\n error,\n )}`,\n );\n logger.info(\n `React Native CLI will continue to run if your local environment matches what React Native expects. If it does fail, check out \"${absolutePath}\" and adjust your environment to match it.`,\n );\n }\n }\n\n for (const command of detachedCommands) {\n attachCommand(command);\n }\n\n try {\n const config = loadConfig();\n\n logger.enable();\n\n for (const command of [...projectCommands, ...config.commands]) {\n attachCommand(command, config);\n }\n } catch (error) {\n /**\n * When there is no `package.json` found, the CLI will enter `detached` mode and a subset\n * of commands will be available. That's why we don't throw on such kind of error.\n */\n if (error.message.includes(\"We couldn't find a package.json\")) {\n logger.debug(error.message);\n logger.debug(\n 'Failed to load configuration of your project. Only a subset of commands will be available.',\n );\n } else {\n throw new CLIError(\n 'Failed to load configuration of your project.',\n error,\n );\n }\n }\n\n program.parse(process.argv);\n}\n\nconst bin = require.resolve('./bin');\n\nexport {run, bin, loadConfig};\n"]}
\No newline at end of file