1import { Command } from '@expo/commander'; 2import path from 'path'; 3 4import { generateDynamicMacrosAsync } from '../dynamic-macros/generateDynamicMacros'; 5import { Directories } from '../expotools'; 6 7const EXPO_DIR = Directories.getExpoRepositoryRootDir(); 8const ANDROID_DIR = Directories.getAndroidDir(); 9const GENERATED_DIR = path.join(ANDROID_DIR, 'expoview/src/main/java/host/exp/exponent/generated'); 10const TEMPLATE_FILES_DIR = path.join(EXPO_DIR, 'template-files'); 11 12async function generateAction(options): Promise<void> { 13 const buildConstantsPath = 14 options.buildConstantsPath || path.join(GENERATED_DIR, 'ExponentBuildConstants.java'); 15 const configuration = options.configuration || process.env.CONFIGURATION || 'release'; 16 17 await generateDynamicMacrosAsync({ 18 buildConstantsPath, 19 platform: 'android', 20 expoKitPath: EXPO_DIR, 21 templateFilesPath: TEMPLATE_FILES_DIR, 22 configuration, 23 }); 24} 25 26export default (program: Command) => { 27 program 28 .command('android-generate-dynamic-macros') 29 .option( 30 '--buildConstantsPath [string]', 31 'Path to ExponentBuildConstants.java relative to `android` folder. Optional.' 32 ) 33 .option( 34 '--configuration [string]', 35 'Build configuration. Defaults to `process.env.CONFIGURATION` or "debug".' 36 ) 37 .description('Generates dynamic macros for Android client.') 38 .asyncAction(generateAction); 39}; 40