Skip to content

Commit 07d7668

Browse files
authored
fix: lazy load autolinking platform config (#323)
* fix: lazy load autolinking platform config * changeset
1 parent 5944f07 commit 07d7668

File tree

7 files changed

+67
-21
lines changed

7 files changed

+67
-21
lines changed

.changeset/late-students-allow.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@rnef/plugin-brownfield-ios': patch
3+
'@rnef/platform-android': patch
4+
'@rnef/platform-ios': patch
5+
---
6+
7+
fix: lazy load autolinking platform config

packages/platform-android/src/lib/commands/buildAndroid/command.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
import type { AndroidProjectConfig } from '@react-native-community/cli-types';
22
import type { PluginApi } from '@rnef/config';
3+
import { getValidProjectConfig } from '../getValidProjectConfig.js';
34
import type { BuildFlags } from './buildAndroid.js';
45
import { buildAndroid, options } from './buildAndroid.js';
56

67
export function registerBuildCommand(
78
api: PluginApi,
8-
androidConfig: AndroidProjectConfig
9+
pluginConfig: AndroidProjectConfig | undefined
910
) {
1011
api.registerCommand({
1112
name: 'build:android',
1213
description: 'Builds your app for Android platform.',
1314
action: async (args) => {
15+
const androidConfig = getValidProjectConfig(
16+
api.getProjectRoot(),
17+
pluginConfig
18+
);
1419
await buildAndroid(androidConfig, args as BuildFlags);
1520
},
1621
options: options,

packages/platform-android/src/lib/commands/generateKeystore.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,20 @@ import {
1212
RnefError,
1313
spawn,
1414
} from '@rnef/tools';
15+
import { getValidProjectConfig } from './getValidProjectConfig.js';
1516

1617
export function registerCreateKeystoreCommand(
1718
api: PluginApi,
18-
androidConfig: AndroidProjectConfig
19+
pluginConfig: AndroidProjectConfig | undefined
1920
) {
2021
api.registerCommand({
2122
name: 'create-keystore:android',
2223
description: 'Creates a keystore file for signing Android release builds.',
2324
action: async (args) => {
25+
const androidConfig = getValidProjectConfig(
26+
api.getProjectRoot(),
27+
pluginConfig
28+
);
2429
await generateKeystore(androidConfig, args);
2530
},
2631
options: generateKeystoreOptions,

packages/platform-android/src/lib/commands/runAndroid/command.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,20 @@
11
import type { AndroidProjectConfig } from '@react-native-community/cli-types';
22
import type { PluginApi } from '@rnef/config';
3+
import { getValidProjectConfig } from '../getValidProjectConfig.js';
34
import type { Flags } from './runAndroid.js';
45
import { runAndroid, runOptions } from './runAndroid.js';
56

67
export function registerRunCommand(
78
api: PluginApi,
8-
androidConfig: AndroidProjectConfig
9+
pluginConfig: AndroidProjectConfig | undefined
910
) {
1011
api.registerCommand({
1112
name: 'run:android',
1213
description:
1314
'Builds your app and starts it on a connected Android emulator or a device.',
1415
action: async (args) => {
1516
const projectRoot = api.getProjectRoot();
17+
const androidConfig = getValidProjectConfig(projectRoot, pluginConfig);
1618
await runAndroid(
1719
androidConfig,
1820
args as Flags,

packages/platform-android/src/lib/platformAndroid.ts

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,23 @@ type PluginConfig = AndroidProjectConfig;
1111
export const platformAndroid =
1212
(pluginConfig?: PluginConfig) =>
1313
(api: PluginApi): PlatformOutput => {
14-
const androidConfig = getValidProjectConfig(
15-
api.getProjectRoot(),
16-
pluginConfig
17-
);
18-
registerBuildCommand(api, androidConfig);
19-
registerRunCommand(api, androidConfig);
20-
registerCreateKeystoreCommand(api, androidConfig);
14+
registerBuildCommand(api, pluginConfig);
15+
registerRunCommand(api, pluginConfig);
16+
registerCreateKeystoreCommand(api, pluginConfig);
2117
registerSignCommand(api);
2218

2319
return {
2420
name: '@rnef/platform-android',
2521
description: 'RNEF plugin for everything Android.',
26-
autolinkingConfig: { project: { ...androidConfig } },
22+
autolinkingConfig: {
23+
get project() {
24+
const androidConfig = getValidProjectConfig(
25+
api.getProjectRoot(),
26+
pluginConfig
27+
);
28+
return { ...androidConfig };
29+
},
30+
},
2731
};
2832
};
2933

packages/platform-ios/src/lib/platformIOS.ts

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,17 @@ const runOptions = getRunOptions({ platformName: 'ios' });
1717
export const platformIOS =
1818
(pluginConfig?: IOSProjectConfig) =>
1919
(api: PluginApi): PlatformOutput => {
20-
const projectRoot = api.getProjectRoot();
21-
const iosConfig = getValidProjectConfig('ios', projectRoot, pluginConfig);
2220
api.registerCommand({
2321
name: 'build:ios',
2422
description: 'Build iOS app.',
2523
action: async (args) => {
2624
intro('Building iOS app');
25+
const projectRoot = api.getProjectRoot();
26+
const iosConfig = getValidProjectConfig(
27+
'ios',
28+
projectRoot,
29+
pluginConfig
30+
);
2731
await createBuild({
2832
platformName: 'ios',
2933
projectConfig: iosConfig,
@@ -41,6 +45,12 @@ export const platformIOS =
4145
description: 'Run iOS app.',
4246
action: async (args) => {
4347
intro('Running iOS app');
48+
const projectRoot = api.getProjectRoot();
49+
const iosConfig = getValidProjectConfig(
50+
'ios',
51+
projectRoot,
52+
pluginConfig
53+
);
4454
await createRun({
4555
platformName: 'ios',
4656
projectConfig: iosConfig,
@@ -61,7 +71,16 @@ export const platformIOS =
6171
return {
6272
name: '@rnef/platform-ios',
6373
description: 'RNEF plugin for everything iOS.',
64-
autolinkingConfig: { project: { ...iosConfig } },
74+
autolinkingConfig: {
75+
get project() {
76+
const iosConfig = getValidProjectConfig(
77+
'ios',
78+
api.getProjectRoot(),
79+
pluginConfig
80+
);
81+
return { ...iosConfig };
82+
},
83+
},
6584
};
6685
};
6786

packages/plugin-brownfield-ios/src/lib/pluginBrownfieldIos.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,11 @@ export const pluginBrownfieldIos =
2121
intro('Packaging iOS project');
2222

2323
const projectRoot = api.getProjectRoot();
24-
const iosConfig = getValidProjectConfig('ios', projectRoot, pluginConfig);
24+
const iosConfig = getValidProjectConfig(
25+
'ios',
26+
projectRoot,
27+
pluginConfig
28+
);
2529
const { derivedDataDir } = getBuildPaths('ios');
2630

2731
const destinations = args.destinations ?? [
@@ -32,6 +36,12 @@ export const pluginBrownfieldIos =
3236
const buildFolder = args.buildFolder ?? derivedDataDir;
3337
const configuration = args.configuration ?? 'Debug';
3438

39+
if (!args.scheme) {
40+
throw new RnefError(
41+
'Scheme is required. Please provide "--scheme" flag.'
42+
);
43+
}
44+
3545
await createBuild({
3646
platformName: 'ios',
3747
projectConfig: iosConfig,
@@ -40,12 +50,6 @@ export const pluginBrownfieldIos =
4050
reactNativePath: api.getReactNativePath(),
4151
});
4252

43-
if (!args.scheme) {
44-
throw new RnefError(
45-
'Scheme is required. Please provide "--scheme" flag.'
46-
);
47-
}
48-
4953
await mergeFrameworks({
5054
scheme: args.scheme,
5155
configuration,

0 commit comments

Comments
 (0)