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 bareExpo: options.bare, 23 configuration, 24 }); 25} 26 27export default (program: Command) => { 28 program 29 .command('android-generate-dynamic-macros') 30 .option( 31 '--buildConstantsPath [string]', 32 'Path to ExponentBuildConstants.java relative to `android` folder. Optional.' 33 ) 34 .option( 35 '--configuration [string]', 36 'Build configuration. Defaults to `process.env.CONFIGURATION` or "debug".' 37 ) 38 .option('--bare', 'Generate macros only for the bare-expo project.') 39 .description('Generates dynamic macros for Android client.') 40 .asyncAction(generateAction); 41}; 42