/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * * @flow strict-local * @format */ import {run} from './scripts/utils'; import {apple} from '@react-native/core-cli-utils'; import {Option, program} from 'commander'; import {readFileSync} from 'fs'; program.version(JSON.parse(readFileSync('./package.json', 'utf8')).version); const bootstrap = program.command('bootstrap'); type BootstrapOptions = { arch: 'old' | 'new', jsvm: 'hermes' | 'jsc', frameworks?: 'static' | 'dynamic', }; bootstrap .command('ios') .description('Bootstrap iOS') .addOption( new Option('--arch ', "Choose React Native's architecture") .choices(['new', 'old']) .default('new'), ) .addOption( new Option( '--frameworks ', 'Use frameworks instead of static libraries', ) .choices(['static', 'dynamic']) .default(undefined), ) .addOption( new Option('--jsvm ', 'Choose VM used on device') .choices(['jsc', 'hermes']) .default('hermes'), ) .action(async ({jsvm, arch, frameworks}: BootstrapOptions) => { await run( apple.bootstrap({ cwd: __dirname, frameworks, hermes: jsvm === 'hermes', newArchitecture: arch === 'new', }), ); }); if (require.main === module) { program.parse(); } export default program;