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