{"version":3,"names":["buildProject","xcodeProject","udid","mode","scheme","args","Promise","resolve","reject","xcodebuildArgs","isWorkspace","name","xcconfig","buildFolder","destination","extraParams","push","loader","getLoader","logger","info","chalk","dim","join","xcodebuildOutputFormatter","verbose","xcbeautifyAvailable","child_process","spawn","stdio","process","stdout","stderr","xcprettyAvailable","buildProcess","getProcessOptions","buildOutput","errorOutput","on","data","stringData","toString","stdin","write","isVerbose","debug","start","repeat","length","code","end","stop","printRunDoctorTip","CLIError","undefined","success","execSync","error","packager","terminal","port","String","env","RCT_TERMINAL","RCT_METRO_PORT"],"sources":["../../../src/commands/buildIOS/buildProject.ts"],"sourcesContent":["import child_process, {\n ChildProcess,\n SpawnOptionsWithoutStdio,\n} from 'child_process';\nimport chalk from 'chalk';\nimport {IOSProjectInfo} from '@react-native-community/cli-types';\nimport {\n logger,\n CLIError,\n printRunDoctorTip,\n getLoader,\n} from '@react-native-community/cli-tools';\nimport type {BuildFlags} from './buildOptions';\n\nexport function buildProject(\n xcodeProject: IOSProjectInfo,\n udid: string | undefined,\n mode: string,\n scheme: string,\n args: BuildFlags,\n): Promise {\n return new Promise((resolve, reject) => {\n const xcodebuildArgs = [\n xcodeProject.isWorkspace ? '-workspace' : '-project',\n xcodeProject.name,\n ...(args.xcconfig ? ['-xcconfig', args.xcconfig] : []),\n ...(args.buildFolder ? ['-derivedDataPath', args.buildFolder] : []),\n '-configuration',\n mode,\n '-scheme',\n scheme,\n '-destination',\n (udid\n ? `id=${udid}`\n : mode === 'Debug'\n ? 'generic/platform=iOS Simulator'\n : 'generic/platform=iOS') +\n (args.destination ? ',' + args.destination : ''),\n ];\n\n if (args.extraParams) {\n xcodebuildArgs.push(...args.extraParams);\n }\n\n const loader = getLoader();\n logger.info(\n `Building ${chalk.dim(\n `(using \"xcodebuild ${xcodebuildArgs.join(' ')}\")`,\n )}`,\n );\n let xcodebuildOutputFormatter: ChildProcess | any;\n if (!args.verbose) {\n if (xcbeautifyAvailable()) {\n xcodebuildOutputFormatter = child_process.spawn('xcbeautify', [], {\n stdio: ['pipe', process.stdout, process.stderr],\n });\n } else if (xcprettyAvailable()) {\n xcodebuildOutputFormatter = child_process.spawn('xcpretty', [], {\n stdio: ['pipe', process.stdout, process.stderr],\n });\n }\n }\n\n const buildProcess = child_process.spawn(\n 'xcodebuild',\n xcodebuildArgs,\n getProcessOptions(args),\n );\n let buildOutput = '';\n let errorOutput = '';\n buildProcess.stdout.on('data', (data: Buffer) => {\n const stringData = data.toString();\n buildOutput += stringData;\n if (xcodebuildOutputFormatter) {\n xcodebuildOutputFormatter.stdin.write(data);\n } else {\n if (logger.isVerbose()) {\n logger.debug(stringData);\n } else {\n loader.start(\n `Building the app${'.'.repeat(buildOutput.length % 10)}`,\n );\n }\n }\n });\n\n buildProcess.stderr.on('data', (data: Buffer) => {\n errorOutput += data;\n });\n buildProcess.on('close', (code: number) => {\n if (xcodebuildOutputFormatter) {\n xcodebuildOutputFormatter.stdin.end();\n } else {\n loader.stop();\n }\n if (code !== 0) {\n printRunDoctorTip();\n reject(\n new CLIError(\n `\n Failed to build iOS project.\n\n \"xcodebuild\" exited with error code '${code}'. To debug build\n logs further, consider building your app with Xcode.app, by opening\n '${xcodeProject.name}'.\n `,\n xcodebuildOutputFormatter\n ? undefined\n : buildOutput + '\\n' + errorOutput,\n ),\n );\n return;\n }\n logger.success('Successfully built the app');\n resolve(buildOutput);\n });\n });\n}\n\nfunction xcbeautifyAvailable() {\n try {\n child_process.execSync('xcbeautify --version', {\n stdio: [0, 'pipe', 'ignore'],\n });\n } catch (error) {\n return false;\n }\n return true;\n}\n\nfunction xcprettyAvailable() {\n try {\n child_process.execSync('xcpretty --version', {\n stdio: [0, 'pipe', 'ignore'],\n });\n } catch (error) {\n return false;\n }\n return true;\n}\n\nfunction getProcessOptions(\n args: T,\n): SpawnOptionsWithoutStdio {\n if (\n 'packager' in args &&\n typeof args.packager === 'boolean' &&\n args.packager\n ) {\n const terminal =\n 'terminal' in args && typeof args.terminal === 'string'\n ? args.terminal\n : '';\n\n const port =\n 'port' in args && typeof args.port === 'number' ? String(args.port) : '';\n\n return {\n env: {\n ...process.env,\n RCT_TERMINAL: terminal,\n RCT_METRO_PORT: port,\n },\n };\n }\n\n return {\n env: process.env,\n };\n}\n"],"mappings":"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"}