Skip to content

Commit 99646d7

Browse files
authored
refactor: extract duplicated code to getXcodeProjectAndDir (#2220)
1 parent 49426fd commit 99646d7

File tree

3 files changed

+21
-24
lines changed

3 files changed

+21
-24
lines changed

packages/cli-platform-apple/src/commands/buildCommand/createBuild.ts

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import fs from 'fs';
21
import {CLIError} from '@react-native-community/cli-tools';
32
import {Config, IOSProjectConfig} from '@react-native-community/cli-types';
43
import getArchitecture from '../../tools/getArchitecture';
@@ -8,7 +7,6 @@ import {buildProject} from './buildProject';
87
import {getConfiguration} from './getConfiguration';
98
import {getXcodeProjectAndDir} from './getXcodeProjectAndDir';
109
import {BuilderCommand} from '../../types';
11-
import findXcodeProject from '../../config/findXcodeProject';
1210

1311
const createBuild =
1412
({platformName}: BuilderCommand) =>
@@ -18,8 +16,6 @@ const createBuild =
1816
throw new CLIError(`Unable to find ${platform} platform config`);
1917
}
2018

21-
let {xcodeProject, sourceDir} = getXcodeProjectAndDir(platform);
22-
2319
let installedPods = false;
2420
if (platform?.automaticPodsInstallation || args.forcePods) {
2521
const isAppRunningNewArchitecture = platform?.sourceDir
@@ -34,14 +30,10 @@ const createBuild =
3430
installedPods = true;
3531
}
3632

37-
// if project is freshly created, revisit Xcode project to verify Pods are installed correctly.
38-
// This is needed because ctx project is created before Pods are installed, so it might have outdated information.
39-
if (installedPods) {
40-
const recheckXcodeProject = findXcodeProject(fs.readdirSync(sourceDir));
41-
if (recheckXcodeProject) {
42-
xcodeProject = recheckXcodeProject;
43-
}
44-
}
33+
let {xcodeProject, sourceDir} = getXcodeProjectAndDir(
34+
platform,
35+
installedPods,
36+
);
4537

4638
process.chdir(sourceDir);
4739

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,34 @@
1+
import fs from 'fs';
12
import {IOSProjectConfig} from '@react-native-community/cli-types';
23
import {CLIError} from '@react-native-community/cli-tools';
4+
import findXcodeProject from '../../config/findXcodeProject';
35

46
export function getXcodeProjectAndDir(
57
iosProjectConfig: IOSProjectConfig | undefined,
8+
installedPods?: boolean,
69
) {
710
if (!iosProjectConfig) {
811
throw new CLIError(
912
'iOS project folder not found. Are you sure this is a React Native project?',
1013
);
1114
}
1215

13-
const {xcodeProject, sourceDir} = iosProjectConfig;
16+
let {xcodeProject, sourceDir} = iosProjectConfig;
1417

1518
if (!xcodeProject) {
1619
throw new CLIError(
1720
`Could not find Xcode project files in "${sourceDir}" folder`,
1821
);
1922
}
2023

24+
// if project is freshly created, revisit Xcode project to verify Pods are installed correctly.
25+
// This is needed because ctx project is created before Pods are installed, so it might have outdated information.
26+
if (installedPods) {
27+
const recheckXcodeProject = findXcodeProject(fs.readdirSync(sourceDir));
28+
if (recheckXcodeProject) {
29+
xcodeProject = recheckXcodeProject;
30+
}
31+
}
32+
2133
return {xcodeProject, sourceDir};
2234
}

packages/cli-platform-apple/src/commands/runCommand/createRun.ts

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import {
1818
findDevServerPort,
1919
cacheManager,
2020
} from '@react-native-community/cli-tools';
21-
import findXcodeProject from '../../config/findXcodeProject';
2221
import getArchitecture from '../../tools/getArchitecture';
2322
import getSimulators from '../../tools/getSimulators';
2423
import listDevices from '../../tools/listDevices';
@@ -97,16 +96,10 @@ const createRun =
9796
link.setVersion(ctx.reactNativeVersion);
9897
}
9998

100-
let {xcodeProject, sourceDir} = getXcodeProjectAndDir(platform);
101-
102-
// if project is freshly created, revisit Xcode project to verify Pods are installed correctly.
103-
// This is needed because ctx project is created before Pods are installed, so it might have outdated information.
104-
if (installedPods) {
105-
const recheckXcodeProject = findXcodeProject(fs.readdirSync(sourceDir));
106-
if (recheckXcodeProject) {
107-
xcodeProject = recheckXcodeProject;
108-
}
109-
}
99+
let {xcodeProject, sourceDir} = getXcodeProjectAndDir(
100+
platform,
101+
installedPods,
102+
);
110103

111104
process.chdir(sourceDir);
112105

0 commit comments

Comments
 (0)