1*82ade864SWill Schurmanimport { ExpoConfig } from '@expo/config'; 28d307f52SEvan Baconimport { compileModsAsync, ModPlatform } from '@expo/config-plugins'; 38d307f52SEvan Baconimport { getPrebuildConfigAsync } from '@expo/prebuild-config'; 48d307f52SEvan Bacon 58d307f52SEvan Baconimport { logConfig } from '../config/configAsync'; 68d307f52SEvan Baconimport * as Log from '../log'; 7814b6fafSEvan Baconimport { env } from '../utils/env'; 88d307f52SEvan Baconimport { 98d307f52SEvan Bacon getOrPromptForBundleIdentifier, 108d307f52SEvan Bacon getOrPromptForPackage, 118d307f52SEvan Bacon} from '../utils/getOrPromptApplicationId'; 128d307f52SEvan Bacon 138d307f52SEvan Baconexport async function configureProjectAsync( 148d307f52SEvan Bacon projectRoot: string, 158d307f52SEvan Bacon { 168d307f52SEvan Bacon platforms, 178d307f52SEvan Bacon }: { 188d307f52SEvan Bacon platforms: ModPlatform[]; 198d307f52SEvan Bacon } 208d307f52SEvan Bacon): Promise<ExpoConfig> { 218d307f52SEvan Bacon let bundleIdentifier: string | undefined; 228d307f52SEvan Bacon if (platforms.includes('ios')) { 238d307f52SEvan Bacon // Check bundle ID before reading the config because it may mutate the config if the user is prompted to define it. 248d307f52SEvan Bacon bundleIdentifier = await getOrPromptForBundleIdentifier(projectRoot); 258d307f52SEvan Bacon } 268d307f52SEvan Bacon let packageName: string | undefined; 278d307f52SEvan Bacon if (platforms.includes('android')) { 288d307f52SEvan Bacon // Check package before reading the config because it may mutate the config if the user is prompted to define it. 298d307f52SEvan Bacon packageName = await getOrPromptForPackage(projectRoot); 308d307f52SEvan Bacon } 318d307f52SEvan Bacon 328d307f52SEvan Bacon let { exp: config } = await getPrebuildConfigAsync(projectRoot, { 338d307f52SEvan Bacon platforms, 348d307f52SEvan Bacon packageName, 358d307f52SEvan Bacon bundleIdentifier, 368d307f52SEvan Bacon }); 378d307f52SEvan Bacon 388d307f52SEvan Bacon // compile all plugins and mods 398d307f52SEvan Bacon config = await compileModsAsync(config, { 408d307f52SEvan Bacon projectRoot, 418d307f52SEvan Bacon platforms, 428d307f52SEvan Bacon assertMissingModProviders: false, 438d307f52SEvan Bacon }); 448d307f52SEvan Bacon 45814b6fafSEvan Bacon if (env.EXPO_DEBUG) { 468d307f52SEvan Bacon Log.log(); 478d307f52SEvan Bacon Log.log('Evaluated config:'); 488d307f52SEvan Bacon logConfig(config); 498d307f52SEvan Bacon Log.log(); 508d307f52SEvan Bacon } 518d307f52SEvan Bacon 528d307f52SEvan Bacon return config; 538d307f52SEvan Bacon} 54