Skip to content

Commit d4e260a

Browse files
artus9033thymikee
authored andcommitted
feat: Rock escape hatch in plugin-brownfield-ios
1 parent 5bc8c24 commit d4e260a

2 files changed

Lines changed: 27 additions & 2 deletions

File tree

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

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
getBuildPaths,
1010
getValidProjectConfig,
1111
mergeFrameworks,
12+
type ProjectConfig as AppleProjectConfig,
1213
} from '@rock-js/platform-apple-helpers';
1314
import {
1415
colorLink,
@@ -19,6 +20,7 @@ import {
1920
RockError,
2021
} from '@rock-js/tools';
2122
import { copyHermesXcframework } from './copyHermesXcframework.js';
23+
import type { RequireAllOrNone } from './types.js';
2224

2325
const buildOptions = getBuildOptions({ platformName: 'ios' });
2426

@@ -36,13 +38,35 @@ export const packageIosAction = async (
3638
usePrebuiltRNCore: number | undefined;
3739
},
3840
pluginConfig?: IOSProjectConfig,
41+
/**
42+
* Rock-dependent logic escape hatch.
43+
* If this is not provided, the logic will depend on the presence of a Rock config file.
44+
*/
45+
{
46+
iosConfigOverride,
47+
derivedDataDirOverride,
48+
}: RequireAllOrNone<{
49+
/**
50+
* Override for iOS project config.
51+
*/
52+
iosConfigOverride: AppleProjectConfig;
53+
54+
/**
55+
* Override for derivedDataDir path.
56+
*/
57+
derivedDataDirOverride: string;
58+
}> = {},
3959
) => {
4060
intro('Packaging iOS project');
4161

4262
// 1) Build the project
43-
const iosConfig = getValidProjectConfig('ios', projectRoot, pluginConfig);
44-
const { derivedDataDir } = getBuildPaths('ios');
63+
const iosConfig =
64+
iosConfigOverride ??
65+
getValidProjectConfig('ios', projectRoot, pluginConfig);
4566

67+
const { derivedDataDir } = derivedDataDirOverride
68+
? { derivedDataDir: derivedDataDirOverride }
69+
: getBuildPaths('ios');
4670
const destination = args.destination ?? [
4771
genericDestinations.ios.device,
4872
genericDestinations.ios.simulator,
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export type RequireAllOrNone<T> = T | { [K in keyof T]?: never };

0 commit comments

Comments
 (0)