-
Notifications
You must be signed in to change notification settings - Fork 907
/
Copy pathcreateBuild.ts
71 lines (61 loc) · 1.87 KB
/
createBuild.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import {CLIError} from '@react-native-community/cli-tools';
import {Config, IOSProjectConfig} from '@react-native-community/cli-types';
import getArchitecture from '../../tools/getArchitecture';
import {BuildFlags} from './buildOptions';
import {buildProject} from './buildProject';
import {getConfiguration} from './getConfiguration';
import {getXcodeProjectAndDir} from './getXcodeProjectAndDir';
import {BuilderCommand} from '../../types';
import {
supportedPlatforms,
resolvePods,
} from '@react-native-community/cli-config-apple';
const createBuild =
({platformName}: BuilderCommand) =>
async (_: Array<string>, ctx: Config, args: BuildFlags) => {
const platformConfig = ctx.project[platformName] as IOSProjectConfig;
if (
platformConfig === undefined ||
supportedPlatforms[platformName] === undefined
) {
throw new CLIError(`Unable to find ${platformName} platform config`);
}
let installedPods = false;
if (platformConfig.automaticPodsInstallation || args.forcePods) {
const isAppRunningNewArchitecture = platformConfig.sourceDir
? await getArchitecture(platformConfig.sourceDir)
: undefined;
await resolvePods(
ctx.root,
platformConfig.sourceDir,
ctx.dependencies,
platformName,
{
forceInstall: args.forcePods,
newArchEnabled: isAppRunningNewArchitecture,
},
);
installedPods = true;
}
let {xcodeProject, sourceDir} = getXcodeProjectAndDir(
platformConfig,
platformName,
installedPods,
);
process.chdir(sourceDir);
const {scheme, mode} = await getConfiguration(
xcodeProject,
sourceDir,
args,
platformName,
);
return buildProject(
xcodeProject,
platformName,
undefined,
mode,
scheme,
args,
);
};
export default createBuild;