99 getBuildPaths ,
1010 getValidProjectConfig ,
1111 mergeFrameworks ,
12+ type ProjectConfig as AppleProjectConfig ,
1213} from '@rock-js/platform-apple-helpers' ;
1314import {
1415 colorLink ,
@@ -19,6 +20,7 @@ import {
1920 RockError ,
2021} from '@rock-js/tools' ;
2122import { copyHermesXcframework } from './copyHermesXcframework.js' ;
23+ import type { RequireAllOrNone } from './types.js' ;
2224
2325const 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 ,
0 commit comments