@expo/build-tools 0.1.148 → 0.1.149

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -49,6 +49,16 @@ async function buildAsync(ctx) {
49
49
  });
50
50
  await ctx.runBuildPhase(eas_build_job_1.BuildPhase.INSTALL_PODS, async () => {
51
51
  await (0, pod_1.installPods)(ctx);
52
+ }, {
53
+ onError: (err, logLines) => {
54
+ var _a;
55
+ if (ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL &&
56
+ logLines.some((line) => line.includes(ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL))) {
57
+ (_a = ctx.reportError) === null || _a === void 0 ? void 0 : _a.call(ctx, 'Cocoapods cache error', err, {
58
+ extras: { buildId: ctx.env.EAS_BUILD_ID, logs: logLines.join('\n') },
59
+ });
60
+ }
61
+ },
52
62
  });
53
63
  await ctx.runBuildPhase(eas_build_job_1.BuildPhase.POST_INSTALL_HOOK, async () => {
54
64
  await (0, hooks_1.runHookIfPresent)(ctx, hooks_1.Hook.POST_INSTALL);
@@ -1 +1 @@
1
- {"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/builders/ios.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAChC,yDAAiD;AACjD,uDAAgE;AAChE,wDAA0B;AAE1B,wCAAmE;AACnE,4DAAgE;AAChE,sDAA4E;AAC5E,8CAAyC;AACzC,kDAAmD;AACnD,0CAAwD;AACxD,gDAAyD;AACzD,yEAA4D;AAC5D,8CAAiD;AACjD,oCAAyC;AACzC,gDAAkD;AAClD,4CAA+F;AAE/F,qCAAoD;AAErC,KAAK,UAAU,UAAU,CAAC,GAA0B;IACjE,OAAO,MAAM,IAAA,iCAAwB,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACzD,CAAC;AAFD,6BAEC;AAED,KAAK,UAAU,UAAU,CAAC,GAA0B;IAClD,MAAM,IAAA,eAAK,EAAC,GAAG,CAAC,CAAC;IACjB,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,wBAAQ,CAAC,OAAO,CAAC;IAExD,MAAM,kBAAkB,GAAG,IAAI,iBAAkB,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;YACrF,OAAO,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,aAAa,CACrB,0BAAU,CAAC,QAAQ,EACnB,KAAK,IAAI,EAAE;YACT,IAAI,aAAa,EAAE;gBACjB,GAAG,CAAC,qBAAqB,EAAE,CAAC;gBAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,mKAAmK,CACpK,CAAC;gBACF,OAAO;aACR;YACD,MAAM,SAAS,GAA2B,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM;gBAC3D,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE;gBACvC,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,IAAA,wBAAa,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1C,CAAC,EACD,EAAE,OAAO,EAAE,IAAA,sCAAqB,EAAC,GAAG,CAAC,EAAE,CACxC,CAAC;QAEF,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;;YAC3D,MAAM,CAAA,MAAA,GAAG,CAAC,YAAY,0CAAE,YAAY,CAAC,GAAG,CAAC,CAAA,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,IAAA,iBAAW,EAAC,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,YAAI,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAA,mCAAyB,EAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,WAAW,EAAE;YACf,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;gBACrE,MAAM,IAAA,iCAAqB,EAAC,GAAG,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;SACJ;QAED,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,IAAA,kDAAoC,EAAC,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;YAClC,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACtF,MAAM,IAAA,yBAAc,EAAC,GAAG,EAAE;gBACxB,WAAW;gBACX,MAAM;gBACN,kBAAkB;gBAClB,YAAY;aACb,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;YAAS;QACR,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,YAAI,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;;QACxD,MAAM,CAAA,MAAA,GAAG,CAAC,YAAY,0CAAE,SAAS,CAAC,GAAG,CAAC,CAAA,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,mBAAmB,GAAG,MAAM,IAAA,yBAAa,EAC7C,GAAG,CAAC,2BAA2B,EAC/B,IAAA,6BAAmB,EAAC,GAAG,CAAC,EACxB,GAAG,CAAC,MAAM,CACX,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,MAAM,GAAG,CAAC,eAAe,CAAC,sBAAY,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAA0B,EAC1B,EAAE,MAAM,EAAE,kBAAkB,EAAkD;IAE9E,IAAI;QACF,MAAM,qBAAqB,GAAG,MAAM,0BAAS,CAAC,WAAW,CAAC,sCAAsC,CAC9F,GAAG,CAAC,2BAA2B,EAC/B,MAAM,CACP,CAAC;QACF,MAAM,gBAAgB,GAAG,0BAAS,CAAC,YAAY,CAAC,mBAAmB,CACjE,GAAG,CAAC,2BAA2B,EAC/B;YACE,kBAAkB;YAClB,UAAU,EAAE,qBAAqB;SAClC,CACF,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QACD,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,eAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;KACrC;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACxD,GAAG,CAAC,yBAAyB,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;KACb;AACH,CAAC","sourcesContent":["import plist from '@expo/plist';\nimport { IOSConfig } from '@expo/config-plugins';\nimport { BuildPhase, Ios, Workflow } from '@expo/eas-build-job';\nimport fs from 'fs-extra';\n\nimport { Artifacts, ArtifactType, BuildContext } from '../context';\nimport { createNpmErrorHandler } from '../utils/handleNpmError';\nimport { configureExpoUpdatesIfInstalledAsync } from '../utils/expoUpdates';\nimport { setup } from '../utils/project';\nimport { findArtifacts } from '../utils/artifacts';\nimport { Hook, runHookIfPresent } from '../utils/hooks';\nimport { configureXcodeProject } from '../ios/configure';\nimport CredentialsManager from '../ios/credentials/manager';\nimport { runFastlaneGym } from '../ios/fastlane';\nimport { installPods } from '../ios/pod';\nimport { prebuildAsync } from '../utils/prebuild';\nimport { resolveArtifactPath, resolveBuildConfiguration, resolveScheme } from '../ios/resolve';\n\nimport { runBuilderWithHooksAsync } from './common';\n\nexport default async function iosBuilder(ctx: BuildContext<Ios.Job>): Promise<Artifacts> {\n return await runBuilderWithHooksAsync(ctx, buildAsync);\n}\n\nasync function buildAsync(ctx: BuildContext<Ios.Job>): Promise<void> {\n await setup(ctx);\n const hasNativeCode = ctx.job.type === Workflow.GENERIC;\n\n const credentialsManager = new CredentialsManager(ctx);\n try {\n const credentials = await ctx.runBuildPhase(BuildPhase.PREPARE_CREDENTIALS, async () => {\n return await credentialsManager.prepare();\n });\n\n await ctx.runBuildPhase(\n BuildPhase.PREBUILD,\n async () => {\n if (hasNativeCode) {\n ctx.markBuildPhaseSkipped();\n ctx.logger.info(\n 'Skipped running \"expo prebuild\" because the \"ios\" directory already exists. Learn more about the build process: https://docs.expo.dev/build-reference/ios-builds/'\n );\n return;\n }\n const extraEnvs: Record<string, string> = credentials?.teamId\n ? { APPLE_TEAM_ID: credentials.teamId }\n : {};\n await prebuildAsync(ctx, { extraEnvs });\n },\n { onError: createNpmErrorHandler(ctx) }\n );\n\n await ctx.runBuildPhase(BuildPhase.RESTORE_CACHE, async () => {\n await ctx.cacheManager?.restoreCache(ctx);\n });\n\n await ctx.runBuildPhase(BuildPhase.INSTALL_PODS, async () => {\n await installPods(ctx);\n });\n\n await ctx.runBuildPhase(BuildPhase.POST_INSTALL_HOOK, async () => {\n await runHookIfPresent(ctx, Hook.POST_INSTALL);\n });\n\n const buildConfiguration = resolveBuildConfiguration(ctx);\n if (credentials) {\n await ctx.runBuildPhase(BuildPhase.CONFIGURE_XCODE_PROJECT, async () => {\n await configureXcodeProject(ctx, { credentials, buildConfiguration });\n });\n }\n\n await ctx.runBuildPhase(BuildPhase.CONFIGURE_EXPO_UPDATES, async () => {\n await configureExpoUpdatesIfInstalledAsync(ctx);\n });\n\n await ctx.runBuildPhase(BuildPhase.RUN_FASTLANE, async () => {\n const scheme = resolveScheme(ctx);\n const entitlements = await readEntitlementsAsync(ctx, { scheme, buildConfiguration });\n await runFastlaneGym(ctx, {\n credentials,\n scheme,\n buildConfiguration,\n entitlements,\n });\n });\n } finally {\n await ctx.runBuildPhase(BuildPhase.CLEAN_UP_CREDENTIALS, async () => {\n await credentialsManager.cleanUp();\n });\n }\n\n await ctx.runBuildPhase(BuildPhase.PRE_UPLOAD_ARTIFACTS_HOOK, async () => {\n await runHookIfPresent(ctx, Hook.PRE_UPLOAD_ARTIFACTS);\n });\n\n await ctx.runBuildPhase(BuildPhase.SAVE_CACHE, async () => {\n await ctx.cacheManager?.saveCache(ctx);\n });\n\n await ctx.runBuildPhase(BuildPhase.UPLOAD_APPLICATION_ARCHIVE, async () => {\n const applicationArchives = await findArtifacts(\n ctx.reactNativeProjectDirectory,\n resolveArtifactPath(ctx),\n ctx.logger\n );\n ctx.logger.info(`Application archives: ${applicationArchives.join(', ')}`);\n await ctx.uploadArtifacts(ArtifactType.APPLICATION_ARCHIVE, applicationArchives, ctx.logger);\n });\n}\n\nasync function readEntitlementsAsync(\n ctx: BuildContext<Ios.Job>,\n { scheme, buildConfiguration }: { scheme: string; buildConfiguration: string }\n): Promise<object | null> {\n try {\n const applicationTargetName = await IOSConfig.BuildScheme.getApplicationTargetNameForSchemeAsync(\n ctx.reactNativeProjectDirectory,\n scheme\n );\n const entitlementsPath = IOSConfig.Entitlements.getEntitlementsPath(\n ctx.reactNativeProjectDirectory,\n {\n buildConfiguration,\n targetName: applicationTargetName,\n }\n );\n if (!entitlementsPath) {\n return null;\n }\n const entitlementsRaw = await fs.readFile(entitlementsPath, 'utf8');\n return plist.parse(entitlementsRaw);\n } catch (err) {\n ctx.logger.warn({ err }, 'Failed to read entitlements');\n ctx.markBuildPhaseHasWarnings();\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"ios.js","sourceRoot":"","sources":["../../src/builders/ios.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAChC,yDAAiD;AACjD,uDAAgE;AAChE,wDAA0B;AAE1B,wCAAmE;AACnE,4DAAgE;AAChE,sDAA4E;AAC5E,8CAAyC;AACzC,kDAAmD;AACnD,0CAAwD;AACxD,gDAAyD;AACzD,yEAA4D;AAC5D,8CAAiD;AACjD,oCAAyC;AACzC,gDAAkD;AAClD,4CAA+F;AAE/F,qCAAoD;AAErC,KAAK,UAAU,UAAU,CAAC,GAA0B;IACjE,OAAO,MAAM,IAAA,iCAAwB,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACzD,CAAC;AAFD,6BAEC;AAED,KAAK,UAAU,UAAU,CAAC,GAA0B;IAClD,MAAM,IAAA,eAAK,EAAC,GAAG,CAAC,CAAC;IACjB,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,wBAAQ,CAAC,OAAO,CAAC;IAExD,MAAM,kBAAkB,GAAG,IAAI,iBAAkB,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;YACrF,OAAO,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,aAAa,CACrB,0BAAU,CAAC,QAAQ,EACnB,KAAK,IAAI,EAAE;YACT,IAAI,aAAa,EAAE;gBACjB,GAAG,CAAC,qBAAqB,EAAE,CAAC;gBAC5B,GAAG,CAAC,MAAM,CAAC,IAAI,CACb,mKAAmK,CACpK,CAAC;gBACF,OAAO;aACR;YACD,MAAM,SAAS,GAA2B,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM;gBAC3D,CAAC,CAAC,EAAE,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE;gBACvC,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,IAAA,wBAAa,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAC1C,CAAC,EACD,EAAE,OAAO,EAAE,IAAA,sCAAqB,EAAC,GAAG,CAAC,EAAE,CACxC,CAAC;QAEF,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;;YAC3D,MAAM,CAAA,MAAA,GAAG,CAAC,YAAY,0CAAE,YAAY,CAAC,GAAG,CAAC,CAAA,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,aAAa,CACrB,0BAAU,CAAC,YAAY,EACvB,KAAK,IAAI,EAAE;YACT,MAAM,IAAA,iBAAW,EAAC,GAAG,CAAC,CAAC;QACzB,CAAC,EACD;YACE,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;;gBACzB,IACE,GAAG,CAAC,GAAG,CAAC,6BAA6B;oBACrC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,EAC7E;oBACA,MAAA,GAAG,CAAC,WAAW,oDAAG,uBAAuB,EAAE,GAAG,EAAE;wBAC9C,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACrE,CAAC,CAAC;iBACJ;YACH,CAAC;SACF,CACF,CAAC;QAEF,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,YAAI,CAAC,YAAY,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,MAAM,kBAAkB,GAAG,IAAA,mCAAyB,EAAC,GAAG,CAAC,CAAC;QAC1D,IAAI,WAAW,EAAE;YACf,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;gBACrE,MAAM,IAAA,iCAAqB,EAAC,GAAG,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;SACJ;QAED,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,IAAA,kDAAoC,EAAC,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,MAAM,GAAG,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;YAClC,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;YACtF,MAAM,IAAA,yBAAc,EAAC,GAAG,EAAE;gBACxB,WAAW;gBACX,MAAM;gBACN,kBAAkB;gBAClB,YAAY;aACb,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;YAAS;QACR,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,oBAAoB,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,kBAAkB,CAAC,OAAO,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,IAAA,wBAAgB,EAAC,GAAG,EAAE,YAAI,CAAC,oBAAoB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE;;QACxD,MAAM,CAAA,MAAA,GAAG,CAAC,YAAY,0CAAE,SAAS,CAAC,GAAG,CAAC,CAAA,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,mBAAmB,GAAG,MAAM,IAAA,yBAAa,EAC7C,GAAG,CAAC,2BAA2B,EAC/B,IAAA,6BAAmB,EAAC,GAAG,CAAC,EACxB,GAAG,CAAC,MAAM,CACX,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3E,MAAM,GAAG,CAAC,eAAe,CAAC,sBAAY,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,GAA0B,EAC1B,EAAE,MAAM,EAAE,kBAAkB,EAAkD;IAE9E,IAAI;QACF,MAAM,qBAAqB,GAAG,MAAM,0BAAS,CAAC,WAAW,CAAC,sCAAsC,CAC9F,GAAG,CAAC,2BAA2B,EAC/B,MAAM,CACP,CAAC;QACF,MAAM,gBAAgB,GAAG,0BAAS,CAAC,YAAY,CAAC,mBAAmB,CACjE,GAAG,CAAC,2BAA2B,EAC/B;YACE,kBAAkB;YAClB,UAAU,EAAE,qBAAqB;SAClC,CACF,CAAC;QACF,IAAI,CAAC,gBAAgB,EAAE;YACrB,OAAO,IAAI,CAAC;SACb;QACD,MAAM,eAAe,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACpE,OAAO,eAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;KACrC;IAAC,OAAO,GAAG,EAAE;QACZ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACxD,GAAG,CAAC,yBAAyB,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC;KACb;AACH,CAAC","sourcesContent":["import plist from '@expo/plist';\nimport { IOSConfig } from '@expo/config-plugins';\nimport { BuildPhase, Ios, Workflow } from '@expo/eas-build-job';\nimport fs from 'fs-extra';\n\nimport { Artifacts, ArtifactType, BuildContext } from '../context';\nimport { createNpmErrorHandler } from '../utils/handleNpmError';\nimport { configureExpoUpdatesIfInstalledAsync } from '../utils/expoUpdates';\nimport { setup } from '../utils/project';\nimport { findArtifacts } from '../utils/artifacts';\nimport { Hook, runHookIfPresent } from '../utils/hooks';\nimport { configureXcodeProject } from '../ios/configure';\nimport CredentialsManager from '../ios/credentials/manager';\nimport { runFastlaneGym } from '../ios/fastlane';\nimport { installPods } from '../ios/pod';\nimport { prebuildAsync } from '../utils/prebuild';\nimport { resolveArtifactPath, resolveBuildConfiguration, resolveScheme } from '../ios/resolve';\n\nimport { runBuilderWithHooksAsync } from './common';\n\nexport default async function iosBuilder(ctx: BuildContext<Ios.Job>): Promise<Artifacts> {\n return await runBuilderWithHooksAsync(ctx, buildAsync);\n}\n\nasync function buildAsync(ctx: BuildContext<Ios.Job>): Promise<void> {\n await setup(ctx);\n const hasNativeCode = ctx.job.type === Workflow.GENERIC;\n\n const credentialsManager = new CredentialsManager(ctx);\n try {\n const credentials = await ctx.runBuildPhase(BuildPhase.PREPARE_CREDENTIALS, async () => {\n return await credentialsManager.prepare();\n });\n\n await ctx.runBuildPhase(\n BuildPhase.PREBUILD,\n async () => {\n if (hasNativeCode) {\n ctx.markBuildPhaseSkipped();\n ctx.logger.info(\n 'Skipped running \"expo prebuild\" because the \"ios\" directory already exists. Learn more about the build process: https://docs.expo.dev/build-reference/ios-builds/'\n );\n return;\n }\n const extraEnvs: Record<string, string> = credentials?.teamId\n ? { APPLE_TEAM_ID: credentials.teamId }\n : {};\n await prebuildAsync(ctx, { extraEnvs });\n },\n { onError: createNpmErrorHandler(ctx) }\n );\n\n await ctx.runBuildPhase(BuildPhase.RESTORE_CACHE, async () => {\n await ctx.cacheManager?.restoreCache(ctx);\n });\n\n await ctx.runBuildPhase(\n BuildPhase.INSTALL_PODS,\n async () => {\n await installPods(ctx);\n },\n {\n onError: (err, logLines) => {\n if (\n ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL &&\n logLines.some((line) => line.includes(ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL))\n ) {\n ctx.reportError?.('Cocoapods cache error', err, {\n extras: { buildId: ctx.env.EAS_BUILD_ID, logs: logLines.join('\\n') },\n });\n }\n },\n }\n );\n\n await ctx.runBuildPhase(BuildPhase.POST_INSTALL_HOOK, async () => {\n await runHookIfPresent(ctx, Hook.POST_INSTALL);\n });\n\n const buildConfiguration = resolveBuildConfiguration(ctx);\n if (credentials) {\n await ctx.runBuildPhase(BuildPhase.CONFIGURE_XCODE_PROJECT, async () => {\n await configureXcodeProject(ctx, { credentials, buildConfiguration });\n });\n }\n\n await ctx.runBuildPhase(BuildPhase.CONFIGURE_EXPO_UPDATES, async () => {\n await configureExpoUpdatesIfInstalledAsync(ctx);\n });\n\n await ctx.runBuildPhase(BuildPhase.RUN_FASTLANE, async () => {\n const scheme = resolveScheme(ctx);\n const entitlements = await readEntitlementsAsync(ctx, { scheme, buildConfiguration });\n await runFastlaneGym(ctx, {\n credentials,\n scheme,\n buildConfiguration,\n entitlements,\n });\n });\n } finally {\n await ctx.runBuildPhase(BuildPhase.CLEAN_UP_CREDENTIALS, async () => {\n await credentialsManager.cleanUp();\n });\n }\n\n await ctx.runBuildPhase(BuildPhase.PRE_UPLOAD_ARTIFACTS_HOOK, async () => {\n await runHookIfPresent(ctx, Hook.PRE_UPLOAD_ARTIFACTS);\n });\n\n await ctx.runBuildPhase(BuildPhase.SAVE_CACHE, async () => {\n await ctx.cacheManager?.saveCache(ctx);\n });\n\n await ctx.runBuildPhase(BuildPhase.UPLOAD_APPLICATION_ARCHIVE, async () => {\n const applicationArchives = await findArtifacts(\n ctx.reactNativeProjectDirectory,\n resolveArtifactPath(ctx),\n ctx.logger\n );\n ctx.logger.info(`Application archives: ${applicationArchives.join(', ')}`);\n await ctx.uploadArtifacts(ArtifactType.APPLICATION_ARCHIVE, applicationArchives, ctx.logger);\n });\n}\n\nasync function readEntitlementsAsync(\n ctx: BuildContext<Ios.Job>,\n { scheme, buildConfiguration }: { scheme: string; buildConfiguration: string }\n): Promise<object | null> {\n try {\n const applicationTargetName = await IOSConfig.BuildScheme.getApplicationTargetNameForSchemeAsync(\n ctx.reactNativeProjectDirectory,\n scheme\n );\n const entitlementsPath = IOSConfig.Entitlements.getEntitlementsPath(\n ctx.reactNativeProjectDirectory,\n {\n buildConfiguration,\n targetName: applicationTargetName,\n }\n );\n if (!entitlementsPath) {\n return null;\n }\n const entitlementsRaw = await fs.readFile(entitlementsPath, 'utf8');\n return plist.parse(entitlementsRaw);\n } catch (err) {\n ctx.logger.warn({ err }, 'Failed to read entitlements');\n ctx.markBuildPhaseHasWarnings();\n return null;\n }\n}\n"]}
package/dist/ios/pod.js CHANGED
@@ -5,14 +5,34 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.installPods = void 0;
7
7
  const path_1 = __importDefault(require("path"));
8
+ const fs_extra_1 = __importDefault(require("fs-extra"));
8
9
  const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
9
10
  async function installPods(ctx) {
10
11
  const iosDir = path_1.default.join(ctx.reactNativeProjectDirectory, 'ios');
11
- ctx.logger.info('Installing pods');
12
+ if (ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL) {
13
+ const podfilePath = path_1.default.join(iosDir, 'Podfile');
14
+ const originalPodfileContents = await fs_extra_1.default.readFile(podfilePath, 'utf-8');
15
+ const cocoaPodsCdnSourceRegex = /\bsource\s*\(?['"]https:\/\/cdn\.cocoapods\.org\/?['"]\)?/g;
16
+ if (originalPodfileContents.search(cocoaPodsCdnSourceRegex) !== -1) {
17
+ await fs_extra_1.default.writeFile(podfilePath, originalPodfileContents.replace(cocoaPodsCdnSourceRegex, `source "${ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL}"`));
18
+ }
19
+ else {
20
+ await fs_extra_1.default.writeFile(podfilePath, `source "${ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL}"\n${originalPodfileContents}`);
21
+ }
22
+ }
12
23
  await (0, turtle_spawn_1.default)('pod', ['install'], {
13
24
  cwd: iosDir,
14
25
  logger: ctx.logger,
15
26
  env: Object.assign(Object.assign({}, ctx.env), { LANG: 'en_US.UTF-8' }),
27
+ lineTransformer: (line) => {
28
+ if (!line ||
29
+ /\[!\] '[\w-]+' uses the unencrypted 'http' protocol to transfer the Pod\./.exec(line)) {
30
+ return null;
31
+ }
32
+ else {
33
+ return line;
34
+ }
35
+ },
16
36
  });
17
37
  }
18
38
  exports.installPods = installPods;
@@ -1 +1 @@
1
- {"version":3,"file":"pod.js","sourceRoot":"","sources":["../../src/ios/pod.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAGxB,sEAAuC;AAIhC,KAAK,UAAU,WAAW,CAAuB,GAAuB;IAC7E,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IACjE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACnC,MAAM,IAAA,sBAAK,EAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;QAC9B,GAAG,EAAE,MAAM;QACX,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,kCAAO,GAAG,CAAC,GAAG,KAAE,IAAI,EAAE,aAAa,GAAE;KACzC,CAAC,CAAC;AACL,CAAC;AARD,kCAQC","sourcesContent":["import path from 'path';\n\nimport { Ios } from '@expo/eas-build-job';\nimport spawn from '@expo/turtle-spawn';\n\nimport { BuildContext } from '../context';\n\nexport async function installPods<TJob extends Ios.Job>(ctx: BuildContext<TJob>): Promise<void> {\n const iosDir = path.join(ctx.reactNativeProjectDirectory, 'ios');\n ctx.logger.info('Installing pods');\n await spawn('pod', ['install'], {\n cwd: iosDir,\n logger: ctx.logger,\n env: { ...ctx.env, LANG: 'en_US.UTF-8' },\n });\n}\n"]}
1
+ {"version":3,"file":"pod.js","sourceRoot":"","sources":["../../src/ios/pod.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,wDAA0B;AAE1B,sEAAuC;AAIhC,KAAK,UAAU,WAAW,CAAuB,GAAuB;IAC7E,MAAM,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;IAEjE,IAAI,GAAG,CAAC,GAAG,CAAC,6BAA6B,EAAE;QACzC,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,uBAAuB,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAExE,MAAM,uBAAuB,GAAG,4DAA4D,CAAC;QAE7F,IAAI,uBAAuB,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,EAAE;YAClE,MAAM,kBAAE,CAAC,SAAS,CAChB,WAAW,EACX,uBAAuB,CAAC,OAAO,CAC7B,uBAAuB,EACvB,WAAW,GAAG,CAAC,GAAG,CAAC,6BAA6B,GAAG,CACpD,CACF,CAAC;SACH;aAAM;YACL,MAAM,kBAAE,CAAC,SAAS,CAChB,WAAW,EACX,WAAW,GAAG,CAAC,GAAG,CAAC,6BAA6B,MAAM,uBAAuB,EAAE,CAChF,CAAC;SACH;KACF;IAED,MAAM,IAAA,sBAAK,EAAC,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE;QAC9B,GAAG,EAAE,MAAM;QACX,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,kCAAO,GAAG,CAAC,GAAG,KAAE,IAAI,EAAE,aAAa,GAAE;QACxC,eAAe,EAAE,CAAC,IAAa,EAAE,EAAE;YACjC,IACE,CAAC,IAAI;gBACL,2EAA2E,CAAC,IAAI,CAAC,IAAI,CAAC,EACtF;gBACA,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAxCD,kCAwCC","sourcesContent":["import path from 'path';\n\nimport fs from 'fs-extra';\nimport { Ios } from '@expo/eas-build-job';\nimport spawn from '@expo/turtle-spawn';\n\nimport { BuildContext } from '../context';\n\nexport async function installPods<TJob extends Ios.Job>(ctx: BuildContext<TJob>): Promise<void> {\n const iosDir = path.join(ctx.reactNativeProjectDirectory, 'ios');\n\n if (ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL) {\n const podfilePath = path.join(iosDir, 'Podfile');\n const originalPodfileContents = await fs.readFile(podfilePath, 'utf-8');\n\n const cocoaPodsCdnSourceRegex = /\\bsource\\s*\\(?['\"]https:\\/\\/cdn\\.cocoapods\\.org\\/?['\"]\\)?/g;\n\n if (originalPodfileContents.search(cocoaPodsCdnSourceRegex) !== -1) {\n await fs.writeFile(\n podfilePath,\n originalPodfileContents.replace(\n cocoaPodsCdnSourceRegex,\n `source \"${ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL}\"`\n )\n );\n } else {\n await fs.writeFile(\n podfilePath,\n `source \"${ctx.env.EAS_BUILD_COCOAPODS_CACHE_URL}\"\\n${originalPodfileContents}`\n );\n }\n }\n\n await spawn('pod', ['install'], {\n cwd: iosDir,\n logger: ctx.logger,\n env: { ...ctx.env, LANG: 'en_US.UTF-8' },\n lineTransformer: (line?: string) => {\n if (\n !line ||\n /\\[!\\] '[\\w-]+' uses the unencrypted 'http' protocol to transfer the Pod\\./.exec(line)\n ) {\n return null;\n } else {\n return line;\n }\n },\n });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/build-tools",
3
- "version": "0.1.148",
3
+ "version": "0.1.149",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [