@expo/build-tools 0.1.110 → 0.1.113
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.
- package/dist/android/credentials.js +1 -1
- package/dist/android/credentials.js.map +1 -1
- package/dist/android/expoUpdates.js +2 -2
- package/dist/android/expoUpdates.js.map +1 -1
- package/dist/android/gradle.js +1 -1
- package/dist/android/gradle.js.map +1 -1
- package/dist/builders/android.js +11 -10
- package/dist/builders/android.js.map +1 -1
- package/dist/builders/ios.js +11 -10
- package/dist/builders/ios.js.map +1 -1
- package/dist/context.d.ts +7 -5
- package/dist/context.js +7 -7
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/ios/credentials/distributionCertificate.js.map +1 -1
- package/dist/ios/credentials/keychain.js +7 -7
- package/dist/ios/credentials/keychain.js.map +1 -1
- package/dist/ios/credentials/manager.js +7 -3
- package/dist/ios/credentials/manager.js.map +1 -1
- package/dist/ios/credentials/provisioningProfile.js +2 -2
- package/dist/ios/credentials/provisioningProfile.js.map +1 -1
- package/dist/ios/expoUpdates.js +2 -2
- package/dist/ios/expoUpdates.js.map +1 -1
- package/dist/ios/fastlane.js +4 -4
- package/dist/ios/fastlane.js.map +1 -1
- package/dist/ios/gymfile.js +2 -3
- package/dist/ios/gymfile.js.map +1 -1
- package/dist/ios/pod.js +1 -1
- package/dist/ios/pod.js.map +1 -1
- package/dist/ios/xcpretty.js +3 -3
- package/dist/ios/xcpretty.js.map +1 -1
- package/dist/utils/appConfig.js +1 -1
- package/dist/utils/appConfig.js.map +1 -1
- package/dist/utils/buildArtifacts.js +1 -1
- package/dist/utils/buildArtifacts.js.map +1 -1
- package/dist/utils/expoUpdates.js +17 -17
- package/dist/utils/expoUpdates.js.map +1 -1
- package/dist/utils/hooks.js +3 -11
- package/dist/utils/hooks.js.map +1 -1
- package/dist/utils/packageManager.d.ts +1 -0
- package/dist/utils/packageManager.js +14 -3
- package/dist/utils/packageManager.js.map +1 -1
- package/dist/utils/prebuild.d.ts +6 -0
- package/dist/utils/prebuild.js +41 -0
- package/dist/utils/prebuild.js.map +1 -0
- package/dist/utils/project.js +37 -6
- package/dist/utils/project.js.map +1 -1
- package/package.json +14 -14
- package/dist/managed/EjectProvider.d.ts +0 -8
- package/dist/managed/EjectProvider.js +0 -3
- package/dist/managed/EjectProvider.js.map +0 -1
- package/dist/managed/NpxExpoCliEject.d.ts +0 -6
- package/dist/managed/NpxExpoCliEject.js +0 -21
- package/dist/managed/NpxExpoCliEject.js.map +0 -1
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -80,9 +84,9 @@ class IosCredentialsManager {
|
|
|
80
84
|
}
|
|
81
85
|
async prepareTargetCredentials(target, targetCredentials) {
|
|
82
86
|
try {
|
|
83
|
-
assert_1.default(this.keychain, 'Keychain should be initialized');
|
|
87
|
+
(0, assert_1.default)(this.keychain, 'Keychain should be initialized');
|
|
84
88
|
this.ctx.logger.info(`Preparing credentials for target '${target}'`);
|
|
85
|
-
const distCertPath = path_1.default.join(os_1.default.tmpdir(), `${uuid_1.v4()}.p12`);
|
|
89
|
+
const distCertPath = path_1.default.join(os_1.default.tmpdir(), `${(0, uuid_1.v4)()}.p12`);
|
|
86
90
|
this.ctx.logger.info('Getting distribution certificate fingerprint');
|
|
87
91
|
const certificateFingerprint = distributionCertificateUtils.getFingerprint(targetCredentials.distributionCertificate);
|
|
88
92
|
this.ctx.logger.info(`Writing distribution certificate to ${distCertPath}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/ios/credentials/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/ios/credentials/manager.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport os from 'os';\nimport path from 'path';\n\nimport { Ios } from '@expo/eas-build-job';\nimport fs from 'fs-extra';\nimport { v4 as uuid } from 'uuid';\n\nimport { BuildContext } from '../../context';\n\nimport * as distributionCertificateUtils from './distributionCertificate';\nimport Keychain from './keychain';\nimport ProvisioningProfile, {\n DistributionType,\n ProvisioningProfileData,\n} from './provisioningProfile';\n\nexport interface Credentials {\n keychainPath: string;\n targetProvisioningProfiles: TargetProvisioningProfiles;\n distributionType: DistributionType;\n teamId: string;\n}\n\ntype TargetProvisioningProfiles = Record<string, ProvisioningProfileData>;\n\nexport default class IosCredentialsManager<TJob extends Ios.Job> {\n private keychain?: Keychain<TJob>;\n private readonly provisioningProfiles: ProvisioningProfile<TJob>[] = [];\n private cleanedUp = false;\n\n constructor(private readonly ctx: BuildContext<TJob>) {}\n\n public async prepare(): Promise<Credentials | null> {\n if (this.ctx.job.simulator) {\n return null;\n }\n\n const { buildCredentials } = this.ctx.job.secrets;\n if (!buildCredentials) {\n throw new Error('credentials are required for an iOS build');\n }\n\n this.ctx.logger.info('Preparing credentials');\n\n this.ctx.logger.info('Creating keychain');\n this.keychain = new Keychain(this.ctx);\n await this.keychain.create();\n\n const targets = Object.keys(buildCredentials);\n const targetProvisioningProfiles: TargetProvisioningProfiles = {};\n for (const target of targets) {\n const provisioningProfile = await this.prepareTargetCredentials(\n target,\n buildCredentials[target]\n );\n this.provisioningProfiles.push(provisioningProfile);\n targetProvisioningProfiles[target] = provisioningProfile.data;\n }\n\n // TODO: ensure that all dist types and team ids in the array are the same\n const { distributionType, teamId } = this.provisioningProfiles[0].data;\n\n return {\n keychainPath: this.keychain.data.path,\n targetProvisioningProfiles,\n distributionType,\n teamId,\n };\n }\n\n public async cleanUp(): Promise<void> {\n if (this.cleanedUp || (!this.keychain && this.provisioningProfiles.length === 0)) {\n return;\n }\n\n if (this.keychain) {\n await this.keychain.destroy();\n }\n if (this.provisioningProfiles) {\n for (const provisioningProfile of this.provisioningProfiles) {\n await provisioningProfile.destroy();\n }\n }\n this.cleanedUp = true;\n }\n\n private async prepareTargetCredentials(\n target: string,\n targetCredentials: Ios.TargetCredentials\n ): Promise<ProvisioningProfile<TJob>> {\n try {\n assert(this.keychain, 'Keychain should be initialized');\n\n this.ctx.logger.info(`Preparing credentials for target '${target}'`);\n const distCertPath = path.join(os.tmpdir(), `${uuid()}.p12`);\n\n this.ctx.logger.info('Getting distribution certificate fingerprint');\n const certificateFingerprint = distributionCertificateUtils.getFingerprint(\n targetCredentials.distributionCertificate\n );\n\n this.ctx.logger.info(`Writing distribution certificate to ${distCertPath}`);\n await fs.writeFile(\n distCertPath,\n Buffer.from(targetCredentials.distributionCertificate.dataBase64, 'base64')\n );\n\n this.ctx.logger.info('Importing distribution certificate into the keychain');\n await this.keychain.importCertificate(\n distCertPath,\n targetCredentials.distributionCertificate.password\n );\n\n this.ctx.logger.info('Initializing provisioning profile');\n const provisioningProfile = new ProvisioningProfile(\n this.ctx,\n Buffer.from(targetCredentials.provisioningProfileBase64, 'base64'),\n this.keychain.data.path\n );\n await provisioningProfile.init();\n\n this.ctx.logger.info(\n 'Validating whether distribution certificate has been imported successfully'\n );\n await this.keychain.ensureCertificateImported(\n provisioningProfile.data.teamId,\n certificateFingerprint\n );\n\n this.ctx.logger.info(\n 'Verifying whether the distribution certificate and provisioning profile match'\n );\n provisioningProfile.verifyCertificate(certificateFingerprint);\n\n return provisioningProfile;\n } catch (err) {\n await this.cleanUp();\n throw err;\n }\n }\n}\n"]}
|
|
@@ -24,7 +24,7 @@ class ProvisioningProfile {
|
|
|
24
24
|
this.ctx = ctx;
|
|
25
25
|
this.profile = profile;
|
|
26
26
|
this.keychainPath = keychainPath;
|
|
27
|
-
this.profilePath = path_1.default.join(PROVISIONING_PROFILES_DIRECTORY, `${uuid_1.v4()}.mobileprovision`);
|
|
27
|
+
this.profilePath = path_1.default.join(PROVISIONING_PROFILES_DIRECTORY, `${(0, uuid_1.v4)()}.mobileprovision`);
|
|
28
28
|
}
|
|
29
29
|
get data() {
|
|
30
30
|
if (!this.profileData) {
|
|
@@ -60,7 +60,7 @@ Profile's certificate fingerprint = ${devCertFingerprint}, distribution certific
|
|
|
60
60
|
async load() {
|
|
61
61
|
let result;
|
|
62
62
|
try {
|
|
63
|
-
result = await turtle_spawn_1.default('security', ['cms', '-D', '-k', this.keychainPath, '-i', this.profilePath], {
|
|
63
|
+
result = await (0, turtle_spawn_1.default)('security', ['cms', '-D', '-k', this.keychainPath, '-i', this.profilePath], {
|
|
64
64
|
stdio: 'pipe',
|
|
65
65
|
});
|
|
66
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provisioningProfile.js","sourceRoot":"","sources":["../../../src/ios/credentials/provisioningProfile.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,4CAAoB;AACpB,gDAAwB;AAExB,uDAAkD;AAClD,sEAAuC;AACvC,wDAA0B;AAC1B,kDAA0B;AAC1B,+BAAkC;AAalC,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,2CAAuB,CAAA;IACvB,6CAAyB,CAAA;AAC3B,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B;AAED,MAAM,+BAA+B,GAAG,cAAI,CAAC,IAAI,CAC/C,YAAE,CAAC,OAAO,EAAE,EACZ,4CAA4C,CAC7C,CAAC;AAEF,MAAqB,mBAAmB;IAYtC,YACmB,GAAuB,EACvB,OAAe,EACf,YAAoB;QAFpB,QAAG,GAAH,GAAG,CAAoB;QACvB,YAAO,GAAP,OAAO,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAQ;QAErC,IAAI,CAAC,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE,GAAG,SAAI,
|
|
1
|
+
{"version":3,"file":"provisioningProfile.js","sourceRoot":"","sources":["../../../src/ios/credentials/provisioningProfile.ts"],"names":[],"mappings":"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","sourcesContent":["import crypto from 'crypto';\nimport os from 'os';\nimport path from 'path';\n\nimport { errors, Ios } from '@expo/eas-build-job';\nimport spawn from '@expo/turtle-spawn';\nimport fs from 'fs-extra';\nimport plist from 'plist';\nimport { v4 as uuid } from 'uuid';\n\nimport { BuildContext } from '../../context';\n\nexport interface ProvisioningProfileData {\n bundleIdentifier: string;\n teamId: string;\n uuid: string;\n name: string;\n developerCertificate: Buffer;\n distributionType: DistributionType;\n}\n\nexport enum DistributionType {\n AD_HOC = 'ad-hoc',\n APP_STORE = 'app-store',\n ENTERPRISE = 'enterprise',\n}\n\nconst PROVISIONING_PROFILES_DIRECTORY = path.join(\n os.homedir(),\n 'Library/MobileDevice/Provisioning Profiles'\n);\n\nexport default class ProvisioningProfile<TJob extends Ios.Job> {\n get data(): ProvisioningProfileData {\n if (!this.profileData) {\n throw new Error('You must init the profile first!');\n } else {\n return this.profileData;\n }\n }\n\n private readonly profilePath: string;\n private profileData?: ProvisioningProfileData;\n\n constructor(\n private readonly ctx: BuildContext<TJob>,\n private readonly profile: Buffer,\n private readonly keychainPath: string\n ) {\n this.profilePath = path.join(PROVISIONING_PROFILES_DIRECTORY, `${uuid()}.mobileprovision`);\n }\n\n public async init(): Promise<void> {\n this.ctx.logger.debug(`Making sure ${PROVISIONING_PROFILES_DIRECTORY} exits`);\n await fs.ensureDir(PROVISIONING_PROFILES_DIRECTORY);\n\n this.ctx.logger.debug(`Writing provisioning profile to ${this.profilePath}`);\n await fs.writeFile(this.profilePath, this.profile);\n\n this.ctx.logger.debug('Loading provisioning profile');\n await this.load();\n }\n\n public async destroy(): Promise<void> {\n if (!this.profilePath) {\n this.ctx.logger.warn(\n \"There is nothing to destroy, a provisioning profile hasn't been created yet.\"\n );\n return;\n }\n this.ctx.logger.info('Removing provisioning profile');\n await fs.remove(this.profilePath);\n }\n\n public verifyCertificate(fingerprint: string): void {\n const devCertFingerprint = this.genDerCertFingerprint();\n if (devCertFingerprint !== fingerprint) {\n throw new errors.CredentialsDistCertMismatchError(\n `Provisioning profile and distribution certificate don't match.\nProfile's certificate fingerprint = ${devCertFingerprint}, distribution certificate fingerprint = ${fingerprint}`\n );\n }\n }\n\n private async load(): Promise<void> {\n let result;\n try {\n result = await spawn(\n 'security',\n ['cms', '-D', '-k', this.keychainPath, '-i', this.profilePath],\n {\n stdio: 'pipe',\n }\n );\n } catch (err: any) {\n throw new Error(err.stderr.trim());\n }\n const { output } = result;\n\n const plistRaw = output.join('');\n let plistData;\n try {\n plistData = plist.parse(plistRaw) as plist.PlistObject;\n } catch (error: any) {\n throw new Error(`Error when parsing plist: ${error.message}`);\n }\n\n const applicationIdentifier = (plistData.Entitlements as plist.PlistObject)[\n 'application-identifier'\n ] as string;\n const bundleIdentifier = applicationIdentifier.replace(/^.+?\\./, '');\n\n this.profileData = {\n bundleIdentifier,\n teamId: (plistData.TeamIdentifier as string[])[0],\n uuid: plistData.UUID as string,\n name: plistData.Name as string,\n developerCertificate: Buffer.from((plistData.DeveloperCertificates as string[])[0], 'base64'),\n distributionType: this.resolveDistributionType(plistData),\n };\n }\n\n private resolveDistributionType(plistData: plist.PlistObject): DistributionType {\n if (plistData.ProvisionsAllDevices) {\n return DistributionType.ENTERPRISE;\n } else if (plistData.ProvisionedDevices) {\n return DistributionType.AD_HOC;\n } else {\n return DistributionType.APP_STORE;\n }\n }\n\n private genDerCertFingerprint(): string {\n return crypto\n .createHash('sha1')\n .update(this.data.developerCertificate)\n .digest('hex')\n .toUpperCase();\n }\n}\n"]}
|
package/dist/ios/expoUpdates.js
CHANGED
|
@@ -16,7 +16,7 @@ var IosMetadataName;
|
|
|
16
16
|
})(IosMetadataName = exports.IosMetadataName || (exports.IosMetadataName = {}));
|
|
17
17
|
async function iosSetChannelNativelyAsync(ctx) {
|
|
18
18
|
var _a, _b;
|
|
19
|
-
assert_1.default((_a = ctx.job.updates) === null || _a === void 0 ? void 0 : _a.channel, 'updates.channel must be defined');
|
|
19
|
+
(0, assert_1.default)((_a = ctx.job.updates) === null || _a === void 0 ? void 0 : _a.channel, 'updates.channel must be defined');
|
|
20
20
|
const expoPlistPath = config_plugins_1.IOSConfig.Paths.getExpoPlistPath(ctx.reactNativeProjectDirectory);
|
|
21
21
|
if (!(await fs_extra_1.default.pathExists(expoPlistPath))) {
|
|
22
22
|
throw new Error(`${expoPlistPath} does no exist`);
|
|
@@ -29,7 +29,7 @@ async function iosSetChannelNativelyAsync(ctx) {
|
|
|
29
29
|
}
|
|
30
30
|
exports.iosSetChannelNativelyAsync = iosSetChannelNativelyAsync;
|
|
31
31
|
async function iosSetClassicReleaseChannelNativelyAsync(ctx) {
|
|
32
|
-
assert_1.default(ctx.job.releaseChannel, 'releaseChannel must be defined');
|
|
32
|
+
(0, assert_1.default)(ctx.job.releaseChannel, 'releaseChannel must be defined');
|
|
33
33
|
const expoPlistPath = config_plugins_1.IOSConfig.Paths.getExpoPlistPath(ctx.reactNativeProjectDirectory);
|
|
34
34
|
if (!(await fs_extra_1.default.pathExists(expoPlistPath))) {
|
|
35
35
|
throw new Error(`${expoPlistPath} does not exist`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expoUpdates.js","sourceRoot":"","sources":["../../src/ios/expoUpdates.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,yDAAiD;AACjD,wDAA0B;AAC1B,wDAAgC;AAKhC,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,wFAAqE,CAAA;IACrE,8DAA2C,CAAA;IAC3C,8DAA2C,CAAA;AAC7C,CAAC,EAJW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAI1B;AAEM,KAAK,UAAU,0BAA0B,CAAC,GAAsB;;IACrE,gBAAM,
|
|
1
|
+
{"version":3,"file":"expoUpdates.js","sourceRoot":"","sources":["../../src/ios/expoUpdates.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { IOSConfig } from '@expo/config-plugins';\nimport fs from 'fs-extra';\nimport plist from '@expo/plist';\nimport { Job } from '@expo/eas-build-job';\n\nimport { BuildContext } from '../context';\n\nexport enum IosMetadataName {\n UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY = 'EXUpdatesRequestHeaders',\n RELEASE_CHANNEL = 'EXUpdatesReleaseChannel',\n RUNTIME_VERSION = 'EXUpdatesRuntimeVersion',\n}\n\nexport async function iosSetChannelNativelyAsync(ctx: BuildContext<Job>): Promise<void> {\n assert(ctx.job.updates?.channel, 'updates.channel must be defined');\n\n const expoPlistPath = IOSConfig.Paths.getExpoPlistPath(ctx.reactNativeProjectDirectory);\n\n if (!(await fs.pathExists(expoPlistPath))) {\n throw new Error(`${expoPlistPath} does no exist`);\n }\n\n const expoPlistContent = await fs.readFile(expoPlistPath, 'utf8');\n const items: Record<string, string | Record<string, string>> = plist.parse(expoPlistContent);\n items[IosMetadataName.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] = {\n ...((items[IosMetadataName.UPDATES_CONFIGURATION_REQUEST_HEADERS_KEY] as Record<\n string,\n string\n >) ?? {}),\n 'expo-channel-name': ctx.job.updates.channel,\n };\n const expoPlist = plist.build(items);\n\n await fs.writeFile(expoPlistPath, expoPlist);\n}\n\nexport async function iosSetClassicReleaseChannelNativelyAsync(\n ctx: BuildContext<Job>\n): Promise<void> {\n assert(ctx.job.releaseChannel, 'releaseChannel must be defined');\n\n const expoPlistPath = IOSConfig.Paths.getExpoPlistPath(ctx.reactNativeProjectDirectory);\n\n if (!(await fs.pathExists(expoPlistPath))) {\n throw new Error(`${expoPlistPath} does not exist`);\n }\n\n const expoPlistContent = await fs.readFile(expoPlistPath, 'utf8');\n const items: Record<string, string | Record<string, string>> = plist.parse(expoPlistContent);\n items[IosMetadataName.RELEASE_CHANNEL] = ctx.job.releaseChannel;\n const expoPlist = plist.build(items);\n\n await fs.writeFile(expoPlistPath, expoPlist);\n}\n\nexport async function iosGetNativelyDefinedClassicReleaseChannelAsync(\n ctx: BuildContext<Job>\n): Promise<string | null> {\n const expoPlistPath = IOSConfig.Paths.getExpoPlistPath(ctx.reactNativeProjectDirectory);\n if (!(await fs.pathExists(expoPlistPath))) {\n return null;\n }\n const expoPlistContent = await fs.readFile(expoPlistPath, 'utf8');\n const parsedPlist = plist.parse(expoPlistContent);\n if (!parsedPlist) {\n return null;\n }\n return parsedPlist[IosMetadataName.RELEASE_CHANNEL] ?? null;\n}\n\nexport async function iosGetNativelyDefinedRuntimeVersionAsync(\n ctx: BuildContext<Job>\n): Promise<string | null> {\n const expoPlistPath = IOSConfig.Paths.getExpoPlistPath(ctx.reactNativeProjectDirectory);\n if (!(await fs.pathExists(expoPlistPath))) {\n return null;\n }\n const expoPlistContent = await fs.readFile(expoPlistPath, 'utf8');\n const parsedPlist = plist.parse(expoPlistContent);\n if (!parsedPlist) {\n return null;\n }\n return parsedPlist[IosMetadataName.RUNTIME_VERSION] ?? null;\n}\n"]}
|
package/dist/ios/fastlane.js
CHANGED
|
@@ -26,7 +26,7 @@ async function runFastlaneGym(ctx, { scheme, buildConfiguration, credentials, en
|
|
|
26
26
|
const buildLogger = new xcpretty_1.XcodeBuildLogger(ctx.logger, ctx.reactNativeProjectDirectory);
|
|
27
27
|
void buildLogger.watchLogFiles(logsDirectory);
|
|
28
28
|
try {
|
|
29
|
-
await fastlane_1.default(['gym'], {
|
|
29
|
+
await (0, fastlane_1.default)(['gym'], {
|
|
30
30
|
cwd: path_1.default.join(ctx.reactNativeProjectDirectory, 'ios'),
|
|
31
31
|
logger: ctx.logger,
|
|
32
32
|
envs: ctx.env,
|
|
@@ -45,7 +45,7 @@ async function ensureGymfileExists(ctx, { scheme, buildConfiguration, credential
|
|
|
45
45
|
}
|
|
46
46
|
ctx.logger.info('Creating Gymfile');
|
|
47
47
|
if (ctx.job.simulator) {
|
|
48
|
-
await gymfile_1.createGymfileForSimulatorBuild({
|
|
48
|
+
await (0, gymfile_1.createGymfileForSimulatorBuild)({
|
|
49
49
|
outputFile: gymfilePath,
|
|
50
50
|
scheme,
|
|
51
51
|
buildConfiguration: buildConfiguration !== null && buildConfiguration !== void 0 ? buildConfiguration : 'release',
|
|
@@ -55,9 +55,9 @@ async function ensureGymfileExists(ctx, { scheme, buildConfiguration, credential
|
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
else {
|
|
58
|
-
await gymfile_1.createGymfileForArchiveBuild({
|
|
58
|
+
await (0, gymfile_1.createGymfileForArchiveBuild)({
|
|
59
59
|
outputFile: gymfilePath,
|
|
60
|
-
credentials: nullthrows_1.default(credentials, 'credentials must exist for non-simulator builds'),
|
|
60
|
+
credentials: (0, nullthrows_1.default)(credentials, 'credentials must exist for non-simulator builds'),
|
|
61
61
|
scheme,
|
|
62
62
|
buildConfiguration,
|
|
63
63
|
outputDirectory: './build',
|
package/dist/ios/fastlane.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastlane.js","sourceRoot":"","sources":["../../src/ios/fastlane.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAGxB,8DAAsC;AACtC,wDAA0B;AAC1B,4DAAoC;AAEpC,wCAAgE;AAEhE,uCAAyF;AAEzF,yCAA8C;AAEvC,KAAK,UAAU,cAAc,CAClC,GAAuB,EACvB,EACE,MAAM,EACN,kBAAkB,EAClB,WAAW,EACX,YAAY,GAMb;IAED,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,mBAAmB,CAAC,GAAG,EAAE;QAC7B,MAAM;QACN,kBAAkB;QAClB,WAAW;QACX,aAAa;QACb,YAAY;KACb,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,eAAe,EAAE;QACvB,MAAM,IAAI,8BAAoB,CAAC,yBAAyB,CAAC,CAAC;KAC3D;IACD,MAAM,WAAW,GAAG,IAAI,2BAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACtF,KAAK,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI;QACF,MAAM,kBAAQ,
|
|
1
|
+
{"version":3,"file":"fastlane.js","sourceRoot":"","sources":["../../src/ios/fastlane.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAGxB,8DAAsC;AACtC,wDAA0B;AAC1B,4DAAoC;AAEpC,wCAAgE;AAEhE,uCAAyF;AAEzF,yCAA8C;AAEvC,KAAK,UAAU,cAAc,CAClC,GAAuB,EACvB,EACE,MAAM,EACN,kBAAkB,EAClB,WAAW,EACX,YAAY,GAMb;IAED,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,mBAAmB,CAAC,GAAG,EAAE;QAC7B,MAAM;QACN,kBAAkB;QAClB,WAAW;QACX,aAAa;QACb,YAAY;KACb,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,eAAe,EAAE;QACvB,MAAM,IAAI,8BAAoB,CAAC,yBAAyB,CAAC,CAAC;KAC3D;IACD,MAAM,WAAW,GAAG,IAAI,2BAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACtF,KAAK,WAAW,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI;QACF,MAAM,IAAA,kBAAQ,EAAC,CAAC,KAAK,CAAC,EAAE;YACtB,GAAG,EAAE,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,KAAK,CAAC;YACtD,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,GAAG;SACd,CAAC,CAAC;KACJ;YAAS;QACR,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC;KAC3B;AACH,CAAC;AApCD,wCAoCC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAAuB,EACvB,EACE,MAAM,EACN,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,YAAY,GAOb;IAED,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC;IAE9E,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QACpC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAC1C,OAAO;KACR;IAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACpC,IAAI,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE;QACrB,MAAM,IAAA,wCAA8B,EAAC;YACnC,UAAU,EAAE,WAAW;YACvB,MAAM;YACN,kBAAkB,EAAE,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,SAAS;YACnD,eAAe,EAAE,SAAS;YAC1B,KAAK,EAAE,KAAK;YACZ,aAAa;SACd,CAAC,CAAC;KACJ;SAAM;QACL,MAAM,IAAA,sCAA4B,EAAC;YACjC,UAAU,EAAE,WAAW;YACvB,WAAW,EAAE,IAAA,oBAAU,EAAC,WAAW,EAAE,iDAAiD,CAAC;YACvF,MAAM;YACN,kBAAkB;YAClB,eAAe,EAAE,SAAS;YAC1B,KAAK,EAAE,KAAK;YACZ,aAAa;YACb,YAAY,EAAE,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,SAAS;SACxC,CAAC,CAAC;KACJ;IACD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrC,CAAC","sourcesContent":["import path from 'path';\n\nimport { Ios } from '@expo/eas-build-job';\nimport fastlane from '@expo/fastlane';\nimport fs from 'fs-extra';\nimport nullthrows from 'nullthrows';\n\nimport { BuildContext, SkipNativeBuildError } from '../context';\n\nimport { createGymfileForArchiveBuild, createGymfileForSimulatorBuild } from './gymfile';\nimport { Credentials } from './credentials/manager';\nimport { XcodeBuildLogger } from './xcpretty';\n\nexport async function runFastlaneGym<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n {\n scheme,\n buildConfiguration,\n credentials,\n entitlements,\n }: {\n scheme: string;\n buildConfiguration?: string;\n credentials: Credentials | null;\n entitlements: object | null;\n }\n): Promise<void> {\n const logsDirectory = path.join(ctx.workingdir, 'logs');\n await ensureGymfileExists(ctx, {\n scheme,\n buildConfiguration,\n credentials,\n logsDirectory,\n entitlements,\n });\n if (ctx.skipNativeBuild) {\n throw new SkipNativeBuildError('Skipping fastlane build');\n }\n const buildLogger = new XcodeBuildLogger(ctx.logger, ctx.reactNativeProjectDirectory);\n void buildLogger.watchLogFiles(logsDirectory);\n try {\n await fastlane(['gym'], {\n cwd: path.join(ctx.reactNativeProjectDirectory, 'ios'),\n logger: ctx.logger,\n envs: ctx.env,\n });\n } finally {\n await buildLogger.flush();\n }\n}\n\nasync function ensureGymfileExists<TJob extends Ios.Job>(\n ctx: BuildContext<TJob>,\n {\n scheme,\n buildConfiguration,\n credentials,\n logsDirectory,\n entitlements,\n }: {\n scheme: string;\n buildConfiguration?: string;\n credentials: Credentials | null;\n logsDirectory: string;\n entitlements: object | null;\n }\n): Promise<void> {\n const gymfilePath = path.join(ctx.reactNativeProjectDirectory, 'ios/Gymfile');\n\n if (await fs.pathExists(gymfilePath)) {\n ctx.logger.info('Gymfile already exists');\n return;\n }\n\n ctx.logger.info('Creating Gymfile');\n if (ctx.job.simulator) {\n await createGymfileForSimulatorBuild({\n outputFile: gymfilePath,\n scheme,\n buildConfiguration: buildConfiguration ?? 'release',\n derivedDataPath: './build',\n clean: false,\n logsDirectory,\n });\n } else {\n await createGymfileForArchiveBuild({\n outputFile: gymfilePath,\n credentials: nullthrows(credentials, 'credentials must exist for non-simulator builds'),\n scheme,\n buildConfiguration,\n outputDirectory: './build',\n clean: false,\n logsDirectory,\n entitlements: entitlements ?? undefined,\n });\n }\n ctx.logger.info('Gymfile created');\n}\n"]}
|
package/dist/ios/gymfile.js
CHANGED
|
@@ -10,7 +10,6 @@ const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
|
10
10
|
const ARCHIVE_TEMPLATE_FILE_PATH = path_1.default.join(__dirname, '../../templates/Gymfile.archive.template');
|
|
11
11
|
const SIMULATOR_TEMPLATE_FILE_PATH = path_1.default.join(__dirname, '../../templates/Gymfile.simulator.template');
|
|
12
12
|
async function createGymfileForArchiveBuild({ outputFile, clean, credentials, scheme, buildConfiguration, entitlements, outputDirectory, logsDirectory, }) {
|
|
13
|
-
var _a;
|
|
14
13
|
const PROFILES = [];
|
|
15
14
|
const targets = Object.keys(credentials.targetProvisioningProfiles);
|
|
16
15
|
for (const target of targets) {
|
|
@@ -20,7 +19,7 @@ async function createGymfileForArchiveBuild({ outputFile, clean, credentials, sc
|
|
|
20
19
|
UUID: profile.uuid,
|
|
21
20
|
});
|
|
22
21
|
}
|
|
23
|
-
const ICLOUD_CONTAINER_ENVIRONMENT =
|
|
22
|
+
const ICLOUD_CONTAINER_ENVIRONMENT = entitlements === null || entitlements === void 0 ? void 0 : entitlements['com.apple.developer.icloud-container-environment'];
|
|
24
23
|
await fs_extra_1.default.mkdirp(logsDirectory);
|
|
25
24
|
await createGymfile({
|
|
26
25
|
template: ARCHIVE_TEMPLATE_FILE_PATH,
|
|
@@ -55,6 +54,6 @@ async function createGymfileForSimulatorBuild({ outputFile, clean, scheme, build
|
|
|
55
54
|
}
|
|
56
55
|
exports.createGymfileForSimulatorBuild = createGymfileForSimulatorBuild;
|
|
57
56
|
async function createGymfile({ template, outputFile, vars, }) {
|
|
58
|
-
await template_file_1.default(template, vars, outputFile, { mustache: false });
|
|
57
|
+
await (0, template_file_1.default)(template, vars, outputFile, { mustache: false });
|
|
59
58
|
}
|
|
60
59
|
//# sourceMappingURL=gymfile.js.map
|
package/dist/ios/gymfile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gymfile.js","sourceRoot":"","sources":["../../src/ios/gymfile.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,wEAA+C;AAC/C,wDAA0B;AAI1B,MAAM,0BAA0B,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0CAA0C,CAAC,CAAC;AACpG,MAAM,4BAA4B,GAAG,cAAI,CAAC,IAAI,CAC5C,SAAS,EACT,4CAA4C,CAC7C,CAAC;AAsBK,KAAK,UAAU,4BAA4B,CAAC,EACjD,UAAU,EACV,KAAK,EACL,WAAW,EACX,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,aAAa,GACO
|
|
1
|
+
{"version":3,"file":"gymfile.js","sourceRoot":"","sources":["../../src/ios/gymfile.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,wEAA+C;AAC/C,wDAA0B;AAI1B,MAAM,0BAA0B,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,0CAA0C,CAAC,CAAC;AACpG,MAAM,4BAA4B,GAAG,cAAI,CAAC,IAAI,CAC5C,SAAS,EACT,4CAA4C,CAC7C,CAAC;AAsBK,KAAK,UAAU,4BAA4B,CAAC,EACjD,UAAU,EACV,KAAK,EACL,WAAW,EACX,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,aAAa,GACO;IACpB,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,CAAC;IACpE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,OAAO,GAAG,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAC/D,QAAQ,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,OAAO,CAAC,gBAAgB;YACnC,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;KACJ;IAED,MAAM,4BAA4B,GAAI,YAGpC,aAHoC,YAAY,uBAAZ,YAAY,CAG7C,kDAAkD,CAAuB,CAAC;IAE/E,MAAM,kBAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/B,MAAM,aAAa,CAAC;QAClB,QAAQ,EAAE,0BAA0B;QACpC,UAAU;QACV,IAAI,EAAE;YACJ,aAAa,EAAE,WAAW,CAAC,YAAY;YACvC,MAAM,EAAE,MAAM;YACd,0BAA0B,EAAE,kBAAkB;YAC9C,gBAAgB,EAAE,eAAe;YACjC,aAAa,EAAE,WAAW,CAAC,gBAAgB;YAC3C,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,cAAc,EAAE,aAAa;YAC7B,QAAQ;YACR,4BAA4B;SAC7B;KACF,CAAC,CAAC;AACL,CAAC;AAzCD,oEAyCC;AAEM,KAAK,UAAU,8BAA8B,CAAC,EACnD,UAAU,EACV,KAAK,EACL,MAAM,EACN,kBAAkB,EAClB,eAAe,EACf,aAAa,GACS;IACtB,MAAM,kBAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IAC/B,MAAM,aAAa,CAAC;QAClB,QAAQ,EAAE,4BAA4B;QACtC,UAAU;QACV,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM;YACd,0BAA0B,EAAE,kBAAkB;YAC9C,iBAAiB,EAAE,eAAe;YAClC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,cAAc,EAAE,aAAa;SAC9B;KACF,CAAC,CAAC;AACL,CAAC;AApBD,wEAoBC;AAED,KAAK,UAAU,aAAa,CAAC,EAC3B,QAAQ,EACR,UAAU,EACV,IAAI,GAKL;IACC,MAAM,IAAA,uBAAY,EAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,CAAC","sourcesContent":["import path from 'path';\n\nimport templateFile from '@expo/template-file';\nimport fs from 'fs-extra';\n\nimport { Credentials } from './credentials/manager';\n\nconst ARCHIVE_TEMPLATE_FILE_PATH = path.join(__dirname, '../../templates/Gymfile.archive.template');\nconst SIMULATOR_TEMPLATE_FILE_PATH = path.join(\n __dirname,\n '../../templates/Gymfile.simulator.template'\n);\n\ninterface ArchiveBuildOptions {\n outputFile: string;\n credentials: Credentials;\n scheme: string;\n buildConfiguration?: string;\n outputDirectory: string;\n clean: boolean;\n logsDirectory: string;\n entitlements?: object;\n}\n\ninterface SimulatorBuildOptions {\n outputFile: string;\n scheme: string;\n buildConfiguration?: string;\n derivedDataPath: string;\n clean: boolean;\n logsDirectory: string;\n}\n\nexport async function createGymfileForArchiveBuild({\n outputFile,\n clean,\n credentials,\n scheme,\n buildConfiguration,\n entitlements,\n outputDirectory,\n logsDirectory,\n}: ArchiveBuildOptions): Promise<void> {\n const PROFILES = [];\n const targets = Object.keys(credentials.targetProvisioningProfiles);\n for (const target of targets) {\n const profile = credentials.targetProvisioningProfiles[target];\n PROFILES.push({\n BUNDLE_ID: profile.bundleIdentifier,\n UUID: profile.uuid,\n });\n }\n\n const ICLOUD_CONTAINER_ENVIRONMENT = (entitlements as Record<\n string,\n string | Record<string, string>\n >)?.['com.apple.developer.icloud-container-environment'] as string | undefined;\n\n await fs.mkdirp(logsDirectory);\n await createGymfile({\n template: ARCHIVE_TEMPLATE_FILE_PATH,\n outputFile,\n vars: {\n KEYCHAIN_PATH: credentials.keychainPath,\n SCHEME: scheme,\n SCHEME_BUILD_CONFIGURATION: buildConfiguration,\n OUTPUT_DIRECTORY: outputDirectory,\n EXPORT_METHOD: credentials.distributionType,\n CLEAN: String(clean),\n LOGS_DIRECTORY: logsDirectory,\n PROFILES,\n ICLOUD_CONTAINER_ENVIRONMENT,\n },\n });\n}\n\nexport async function createGymfileForSimulatorBuild({\n outputFile,\n clean,\n scheme,\n buildConfiguration,\n derivedDataPath,\n logsDirectory,\n}: SimulatorBuildOptions): Promise<void> {\n await fs.mkdirp(logsDirectory);\n await createGymfile({\n template: SIMULATOR_TEMPLATE_FILE_PATH,\n outputFile,\n vars: {\n SCHEME: scheme,\n SCHEME_BUILD_CONFIGURATION: buildConfiguration,\n DERIVED_DATA_PATH: derivedDataPath,\n CLEAN: String(clean),\n LOGS_DIRECTORY: logsDirectory,\n },\n });\n}\n\nasync function createGymfile({\n template,\n outputFile,\n vars,\n}: {\n template: string;\n outputFile: string;\n vars: Record<string, string | number | any>;\n}): Promise<void> {\n await templateFile(template, vars, outputFile, { mustache: false });\n}\n"]}
|
package/dist/ios/pod.js
CHANGED
|
@@ -9,7 +9,7 @@ const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
|
|
|
9
9
|
async function installPods(ctx) {
|
|
10
10
|
const iosDir = path_1.default.join(ctx.reactNativeProjectDirectory, 'ios');
|
|
11
11
|
ctx.logger.info('Installing pods');
|
|
12
|
-
await turtle_spawn_1.default('pod', ['install'], {
|
|
12
|
+
await (0, turtle_spawn_1.default)('pod', ['install'], {
|
|
13
13
|
cwd: iosDir,
|
|
14
14
|
logger: ctx.logger,
|
|
15
15
|
env: Object.assign(Object.assign({}, ctx.env), { LANG: 'en_US.UTF-8' }),
|
package/dist/ios/pod.js.map
CHANGED
|
@@ -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,sBAAK,
|
|
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"]}
|
package/dist/ios/xcpretty.js
CHANGED
|
@@ -40,7 +40,7 @@ class XcodeBuildLogger {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
async getBuildLogFilename(logsDirectory) {
|
|
43
|
-
const paths = await fast_glob_1.default('*.log', { cwd: logsDirectory });
|
|
43
|
+
const paths = await (0, fast_glob_1.default)('*.log', { cwd: logsDirectory });
|
|
44
44
|
return paths.length >= 1 ? paths[0] : undefined;
|
|
45
45
|
}
|
|
46
46
|
async startBuildLogger(logsPath) {
|
|
@@ -49,8 +49,8 @@ class XcodeBuildLogger {
|
|
|
49
49
|
isDebug: false,
|
|
50
50
|
// TODO: Can provide xcode project name for better parsing
|
|
51
51
|
});
|
|
52
|
-
this.logReaderPromise = spawn_async_1.default('tail', ['-n', '+0', '-f', logsPath], { stdio: 'pipe' });
|
|
53
|
-
assert_1.default(this.logReaderPromise.child.stdout, 'stdout is not available');
|
|
52
|
+
this.logReaderPromise = (0, spawn_async_1.default)('tail', ['-n', '+0', '-f', logsPath], { stdio: 'pipe' });
|
|
53
|
+
(0, assert_1.default)(this.logReaderPromise.child.stdout, 'stdout is not available');
|
|
54
54
|
this.logReaderPromise.child.stdout.on('data', (data) => {
|
|
55
55
|
const lines = formatter.pipe(data.toString());
|
|
56
56
|
for (const line of lines) {
|
package/dist/ios/xcpretty.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xcpretty.js","sourceRoot":"","sources":["../../src/ios/xcpretty.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,gDAAwB;AAGxB,6CAAkD;AAClD,oEAA0E;AAC1E,0DAA2B;AAE3B,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAa,gBAAgB;IAK3B,YAA6B,MAAc,EAAmB,WAAmB;QAApD,WAAM,GAAN,MAAM,CAAQ;QAAmB,gBAAW,GAAX,WAAW,CAAQ;QAHzE,aAAQ,GAAY,KAAK,CAAC;IAGkD,CAAC;IAE9E,KAAK,CAAC,aAAa,CAAC,aAAqB;QAC9C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;YACrB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;YACnE,IAAI,YAAY,EAAE;gBAChB,KAAK,IAAI,CAAC,gBAAgB,CAAC,cAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;gBACnE,OAAO;aACR;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC;SACrE;IACH,CAAC;IAEM,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,MAAM,IAAI,CAAC,WAAW,CAAC;SACxB;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI;gBACF,MAAM,IAAI,CAAC,gBAAgB,CAAC;aAC7B;YAAC,WAAM,GAAE;SACX;IACH,CAAC;IACO,KAAK,CAAC,mBAAmB,CAAC,aAAqB;QACrD,MAAM,KAAK,GAAG,MAAM,mBAAE,
|
|
1
|
+
{"version":3,"file":"xcpretty.js","sourceRoot":"","sources":["../../src/ios/xcpretty.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport path from 'path';\n\nimport { bunyan } from '@expo/logger';\nimport { ExpoRunFormatter } from '@expo/xcpretty';\nimport spawnAsync, { SpawnPromise, SpawnResult } from '@expo/spawn-async';\nimport fg from 'fast-glob';\n\nconst CHECK_FILE_INTERVAL_MS = 1000;\n\nexport class XcodeBuildLogger {\n private loggerError?: Error;\n private flushing: boolean = false;\n private logReaderPromise?: SpawnPromise<SpawnResult>;\n\n constructor(private readonly logger: bunyan, private readonly projectRoot: string) {}\n\n public async watchLogFiles(logsDirectory: string): Promise<void> {\n while (!this.flushing) {\n const logsFilename = await this.getBuildLogFilename(logsDirectory);\n if (logsFilename) {\n void this.startBuildLogger(path.join(logsDirectory, logsFilename));\n return;\n }\n await new Promise((res) => setTimeout(res, CHECK_FILE_INTERVAL_MS));\n }\n }\n\n public async flush(): Promise<void> {\n this.flushing = true;\n if (this.loggerError) {\n throw this.loggerError;\n }\n if (this.logReaderPromise) {\n this.logReaderPromise.child.kill('SIGINT');\n try {\n await this.logReaderPromise;\n } catch {}\n }\n }\n private async getBuildLogFilename(logsDirectory: string): Promise<string | undefined> {\n const paths = await fg('*.log', { cwd: logsDirectory });\n return paths.length >= 1 ? paths[0] : undefined;\n }\n\n private async startBuildLogger(logsPath: string): Promise<void> {\n try {\n const formatter = ExpoRunFormatter.create(this.projectRoot, {\n isDebug: false,\n // TODO: Can provide xcode project name for better parsing\n });\n this.logReaderPromise = spawnAsync('tail', ['-n', '+0', '-f', logsPath], { stdio: 'pipe' });\n assert(this.logReaderPromise.child.stdout, 'stdout is not available');\n this.logReaderPromise.child.stdout.on('data', (data: string) => {\n const lines = formatter.pipe(data.toString());\n for (const line of lines) {\n this.logger.info(line);\n }\n });\n await this.logReaderPromise;\n\n this.logger.info(formatter.getBuildSummary());\n } catch (err: any) {\n if (!this.flushing) {\n this.loggerError = err;\n }\n }\n }\n}\n"]}
|
package/dist/utils/appConfig.js
CHANGED
|
@@ -24,7 +24,7 @@ function readAppConfig(projectDir, env, logger) {
|
|
|
24
24
|
stdoutStore.push({ text: String(args[0]), level: logger_1.LoggerLevel.ERROR });
|
|
25
25
|
return originalStderrWrite.apply(process.stderr, args);
|
|
26
26
|
};
|
|
27
|
-
return config_1.getConfig(projectDir, {
|
|
27
|
+
return (0, config_1.getConfig)(projectDir, {
|
|
28
28
|
skipSDKVersionRequirement: true,
|
|
29
29
|
isPublicConfig: true,
|
|
30
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appConfig.js","sourceRoot":"","sources":["../../src/utils/appConfig.ts"],"names":[],"mappings":";;;AAAA,yCAAwD;AAExD,yCAAmD;AAEnD,SAAgB,aAAa,CAAC,UAAkB,EAAE,GAAQ,EAAE,MAAc;IACxE,MAAM,kBAAkB,GAAsB,OAAO,CAAC,GAAG,CAAC;IAC1D,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IACzC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACjD,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAEjD,MAAM,WAAW,GAA2C,EAAE,CAAC;IAC/D,IAAI;QACF,OAAO,CAAC,GAAG,qBAAQ,GAAG,CAAE,CAAC;QACzB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC,CAAC;QACF,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,GAAG,IAAS;YAC3C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,oBAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,OAAO,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,GAAG,IAAS;YAC3C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,oBAAW,CAAC,KAAK,EAAE,CAAC,CAAC;YACtE,OAAO,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,OAAO,kBAAS,
|
|
1
|
+
{"version":3,"file":"appConfig.js","sourceRoot":"","sources":["../../src/utils/appConfig.ts"],"names":[],"mappings":";;;AAAA,yCAAwD;AAExD,yCAAmD;AAEnD,SAAgB,aAAa,CAAC,UAAkB,EAAE,GAAQ,EAAE,MAAc;IACxE,MAAM,kBAAkB,GAAsB,OAAO,CAAC,GAAG,CAAC;IAC1D,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IACzC,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACjD,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IAEjD,MAAM,WAAW,GAA2C,EAAE,CAAC;IAC/D,IAAI;QACF,OAAO,CAAC,GAAG,qBAAQ,GAAG,CAAE,CAAC;QACzB,OAAO,CAAC,IAAI,GAAG,GAAG,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC,CAAC;QACF,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,GAAG,IAAS;YAC3C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,oBAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,OAAO,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,GAAG,IAAS;YAC3C,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,oBAAW,CAAC,KAAK,EAAE,CAAC,CAAC;YACtE,OAAO,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC;QACF,OAAO,IAAA,kBAAS,EAAC,UAAU,EAAE;YAC3B,yBAAyB,EAAE,IAAI;YAC/B,cAAc,EAAE,IAAI;SACrB,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;QAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;QAC3C,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;YACtC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,MAAM,GAAG,CAAC;KACX;YAAS;QACR,OAAO,CAAC,GAAG,GAAG,kBAAkB,CAAC;QACjC,OAAO,CAAC,IAAI,GAAG,mBAAmB,CAAC;QACnC,OAAO,CAAC,GAAG,GAAG,kBAAkB,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;QAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;KAC5C;AACH,CAAC;AAxCD,sCAwCC","sourcesContent":["import { getConfig, ProjectConfig } from '@expo/config';\nimport { Env } from '@expo/eas-build-job';\nimport { bunyan, LoggerLevel } from '@expo/logger';\n\nexport function readAppConfig(projectDir: string, env: Env, logger: bunyan): ProjectConfig {\n const originalProcessEnv: NodeJS.ProcessEnv = process.env;\n const originalProcessExit = process.exit;\n const originalProcessCwd = process.cwd;\n const originalStdoutWrite = process.stdout.write;\n const originalStderrWrite = process.stderr.write;\n\n const stdoutStore: { text: string; level: LoggerLevel }[] = [];\n try {\n process.env = { ...env };\n process.exit = () => {\n throw new Error('Failed to evaluate app config file');\n };\n process.cwd = () => projectDir;\n process.stdout.write = function (...args: any) {\n stdoutStore.push({ text: String(args[0]), level: LoggerLevel.INFO });\n return originalStdoutWrite.apply(process.stdout, args);\n };\n process.stderr.write = function (...args: any) {\n stdoutStore.push({ text: String(args[0]), level: LoggerLevel.ERROR });\n return originalStderrWrite.apply(process.stderr, args);\n };\n return getConfig(projectDir, {\n skipSDKVersionRequirement: true,\n isPublicConfig: true,\n });\n } catch (err) {\n process.stdout.write = originalStdoutWrite;\n process.stderr.write = originalStderrWrite;\n stdoutStore.forEach(({ text, level }) => {\n logger[level](text.trim());\n });\n throw err;\n } finally {\n process.env = originalProcessEnv;\n process.exit = originalProcessExit;\n process.cwd = originalProcessCwd;\n process.stdout.write = originalStdoutWrite;\n process.stderr.write = originalStderrWrite;\n }\n}\n"]}
|
|
@@ -8,7 +8,7 @@ const path_1 = __importDefault(require("path"));
|
|
|
8
8
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
9
9
|
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
10
10
|
async function findBuildArtifacts(rootDir, patternOrPath, buildLogger) {
|
|
11
|
-
const files = await fast_glob_1.default(patternOrPath, { cwd: rootDir, onlyFiles: false });
|
|
11
|
+
const files = await (0, fast_glob_1.default)(patternOrPath, { cwd: rootDir, onlyFiles: false });
|
|
12
12
|
if (files.length === 0) {
|
|
13
13
|
if (fast_glob_1.default.isDynamicPattern(patternOrPath)) {
|
|
14
14
|
throw new Error(`There are no files matching pattern: ${patternOrPath}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildArtifacts.js","sourceRoot":"","sources":["../../src/utils/buildArtifacts.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,wDAA0B;AAC1B,0DAA2B;AAGpB,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,aAAqB,EACrB,WAAmB;IAEnB,MAAM,KAAK,GAAG,MAAM,mBAAE,
|
|
1
|
+
{"version":3,"file":"buildArtifacts.js","sourceRoot":"","sources":["../../src/utils/buildArtifacts.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,wDAA0B;AAC1B,0DAA2B;AAGpB,KAAK,UAAU,kBAAkB,CACtC,OAAe,EACf,aAAqB,EACrB,WAAmB;IAEnB,MAAM,KAAK,GAAG,MAAM,IAAA,mBAAE,EAAC,aAAa,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,IAAI,mBAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,wCAAwC,aAAa,EAAE,CAAC,CAAC;SAC1E;aAAM;YACL,MAAM,mBAAmB,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,WAAW,CAAC,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,6BAA6B,aAAa,EAAE,CAAC,CAAC;SAC/D;KACF;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;AACvE,CAAC;AAfD,gDAeC;AAED,KAAK,UAAU,mBAAmB,CAAC,YAAoB,EAAE,WAAmB;IAC1E,IAAI,WAAW,GAAG,YAAY,CAAC;IAC/B,OAAO,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE;QAC1C,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;KAC/C;IACD,IAAI,WAAW,KAAK,cAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE;QACnD,WAAW,CAAC,KAAK,CAAC,uCAAuC,YAAY,IAAI,CAAC,CAAC;QAC3E,OAAO;KACR;IACD,MAAM,UAAU,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,WAAW,CAAC,KAAK,CACf,uCAAuC,YAAY,iBAAiB,WAAW,aAAa,CAC7F,CAAC;KACH;SAAM;QACL,WAAW,CAAC,KAAK,CACf,uCAAuC,YAAY,iBAAiB,WAAW,eAAe,UAAU,CAAC,IAAI,CAC3G,IAAI,CACL,IAAI,CACN,CAAC;KACH;AACH,CAAC","sourcesContent":["import path from 'path';\n\nimport fs from 'fs-extra';\nimport fg from 'fast-glob';\nimport { bunyan } from '@expo/logger';\n\nexport async function findBuildArtifacts(\n rootDir: string,\n patternOrPath: string,\n buildLogger: bunyan\n): Promise<string[]> {\n const files = await fg(patternOrPath, { cwd: rootDir, onlyFiles: false });\n if (files.length === 0) {\n if (fg.isDynamicPattern(patternOrPath)) {\n throw new Error(`There are no files matching pattern: ${patternOrPath}`);\n } else {\n await logMissingFileError(path.join(rootDir, patternOrPath), buildLogger);\n throw new Error(`No such file or directory ${patternOrPath}`);\n }\n }\n return files.map((relativePath) => path.join(rootDir, relativePath));\n}\n\nasync function logMissingFileError(artifactPath: string, buildLogger: bunyan): Promise<void> {\n let currentPath = artifactPath;\n while (!(await fs.pathExists(currentPath))) {\n currentPath = path.resolve(currentPath, '..');\n }\n if (currentPath === path.resolve(currentPath, '..')) {\n buildLogger.error(`There is no such file or directory \"${artifactPath}\".`);\n return;\n }\n const dirContent = await fs.readdir(currentPath);\n if (dirContent.length === 0) {\n buildLogger.error(\n `There is no such file or directory \"${artifactPath}\". Directory \"${currentPath}\" is empty.`\n );\n } else {\n buildLogger.error(\n `There is no such file or directory \"${artifactPath}\". Directory \"${currentPath}\" contains [${dirContent.join(\n ', '\n )}].`\n );\n }\n}\n"]}
|
|
@@ -17,7 +17,7 @@ const isExpoUpdatesInstalled_1 = __importDefault(require("./isExpoUpdatesInstall
|
|
|
17
17
|
*/
|
|
18
18
|
const setChannelNativelyAsync = async (ctx) => {
|
|
19
19
|
var _a;
|
|
20
|
-
assert_1.default((_a = ctx.job.updates) === null || _a === void 0 ? void 0 : _a.channel, 'updates.channel must be defined');
|
|
20
|
+
(0, assert_1.default)((_a = ctx.job.updates) === null || _a === void 0 ? void 0 : _a.channel, 'updates.channel must be defined');
|
|
21
21
|
const newUpdateRequestHeaders = {
|
|
22
22
|
'expo-channel-name': ctx.job.updates.channel,
|
|
23
23
|
};
|
|
@@ -25,11 +25,11 @@ const setChannelNativelyAsync = async (ctx) => {
|
|
|
25
25
|
ctx.logger.info(`Setting the update response headers in '${configFile}' to '${JSON.stringify(newUpdateRequestHeaders)}'`);
|
|
26
26
|
switch (ctx.job.platform) {
|
|
27
27
|
case eas_build_job_1.Platform.ANDROID: {
|
|
28
|
-
await expoUpdates_1.androidSetChannelNativelyAsync(ctx);
|
|
28
|
+
await (0, expoUpdates_1.androidSetChannelNativelyAsync)(ctx);
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
31
31
|
case eas_build_job_1.Platform.IOS: {
|
|
32
|
-
await expoUpdates_2.iosSetChannelNativelyAsync(ctx);
|
|
32
|
+
await (0, expoUpdates_2.iosSetChannelNativelyAsync)(ctx);
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
35
|
default:
|
|
@@ -43,16 +43,16 @@ exports.setChannelNativelyAsync = setChannelNativelyAsync;
|
|
|
43
43
|
* @param platform
|
|
44
44
|
*/
|
|
45
45
|
const setClassicReleaseChannelNativelyAsync = async (ctx) => {
|
|
46
|
-
assert_1.default(ctx.job.releaseChannel, 'releaseChannel must be defined');
|
|
46
|
+
(0, assert_1.default)(ctx.job.releaseChannel, 'releaseChannel must be defined');
|
|
47
47
|
const configFile = ctx.job.platform === eas_build_job_1.Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';
|
|
48
48
|
ctx.logger.info(`Setting the release channel in '${configFile}' to '${ctx.job.releaseChannel}'`);
|
|
49
49
|
switch (ctx.job.platform) {
|
|
50
50
|
case eas_build_job_1.Platform.ANDROID: {
|
|
51
|
-
await expoUpdates_1.androidSetClassicReleaseChannelNativelyAsync(ctx);
|
|
51
|
+
await (0, expoUpdates_1.androidSetClassicReleaseChannelNativelyAsync)(ctx);
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
54
|
case eas_build_job_1.Platform.IOS: {
|
|
55
|
-
await expoUpdates_2.iosSetClassicReleaseChannelNativelyAsync(ctx);
|
|
55
|
+
await (0, expoUpdates_2.iosSetClassicReleaseChannelNativelyAsync)(ctx);
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
58
|
default:
|
|
@@ -68,10 +68,10 @@ exports.setClassicReleaseChannelNativelyAsync = setClassicReleaseChannelNatively
|
|
|
68
68
|
const getNativelyDefinedClassicReleaseChannelAsync = async (ctx) => {
|
|
69
69
|
switch (ctx.job.platform) {
|
|
70
70
|
case eas_build_job_1.Platform.ANDROID: {
|
|
71
|
-
return expoUpdates_1.androidGetNativelyDefinedClassicReleaseChannelAsync(ctx);
|
|
71
|
+
return (0, expoUpdates_1.androidGetNativelyDefinedClassicReleaseChannelAsync)(ctx);
|
|
72
72
|
}
|
|
73
73
|
case eas_build_job_1.Platform.IOS: {
|
|
74
|
-
return expoUpdates_2.iosGetNativelyDefinedClassicReleaseChannelAsync(ctx);
|
|
74
|
+
return (0, expoUpdates_2.iosGetNativelyDefinedClassicReleaseChannelAsync)(ctx);
|
|
75
75
|
}
|
|
76
76
|
default:
|
|
77
77
|
throw new Error(`Platform is not supported.`);
|
|
@@ -80,7 +80,7 @@ const getNativelyDefinedClassicReleaseChannelAsync = async (ctx) => {
|
|
|
80
80
|
exports.getNativelyDefinedClassicReleaseChannelAsync = getNativelyDefinedClassicReleaseChannelAsync;
|
|
81
81
|
const configureClassicExpoUpdatesAsync = async (ctx) => {
|
|
82
82
|
if (ctx.job.releaseChannel) {
|
|
83
|
-
await exports.setClassicReleaseChannelNativelyAsync(ctx);
|
|
83
|
+
await (0, exports.setClassicReleaseChannelNativelyAsync)(ctx);
|
|
84
84
|
}
|
|
85
85
|
else {
|
|
86
86
|
/**
|
|
@@ -88,7 +88,7 @@ const configureClassicExpoUpdatesAsync = async (ctx) => {
|
|
|
88
88
|
* 1. Try to infer it from the native value.
|
|
89
89
|
* 2. If it is not set, fallback to 'default'.
|
|
90
90
|
*/
|
|
91
|
-
const releaseChannel = await exports.getNativelyDefinedClassicReleaseChannelAsync(ctx);
|
|
91
|
+
const releaseChannel = await (0, exports.getNativelyDefinedClassicReleaseChannelAsync)(ctx);
|
|
92
92
|
if (releaseChannel) {
|
|
93
93
|
ctx.logger.info(`Using the release channel pre-configured in native project (${releaseChannel})`);
|
|
94
94
|
ctx.logger.warn('Please add the "releaseChannel" field to your build profile (eas.json)');
|
|
@@ -100,34 +100,34 @@ const configureClassicExpoUpdatesAsync = async (ctx) => {
|
|
|
100
100
|
};
|
|
101
101
|
exports.configureClassicExpoUpdatesAsync = configureClassicExpoUpdatesAsync;
|
|
102
102
|
const configureEASExpoUpdatesAsync = async (ctx) => {
|
|
103
|
-
await exports.setChannelNativelyAsync(ctx);
|
|
103
|
+
await (0, exports.setChannelNativelyAsync)(ctx);
|
|
104
104
|
};
|
|
105
105
|
exports.configureEASExpoUpdatesAsync = configureEASExpoUpdatesAsync;
|
|
106
106
|
const configureExpoUpdatesIfInstalledAsync = async (ctx) => {
|
|
107
107
|
var _a, _b, _c;
|
|
108
|
-
if (!(await isExpoUpdatesInstalled_1.default(ctx.reactNativeProjectDirectory))) {
|
|
108
|
+
if (!(await (0, isExpoUpdatesInstalled_1.default)(ctx.reactNativeProjectDirectory))) {
|
|
109
109
|
return;
|
|
110
110
|
}
|
|
111
|
-
const appConfigRuntimeVersion = Updates_1.getRuntimeVersionNullable(ctx.appConfig, ctx.job.platform);
|
|
111
|
+
const appConfigRuntimeVersion = (0, Updates_1.getRuntimeVersionNullable)(ctx.appConfig, ctx.job.platform);
|
|
112
112
|
if (((_a = ctx.metadata) === null || _a === void 0 ? void 0 : _a.runtimeVersion) && ((_b = ctx.metadata) === null || _b === void 0 ? void 0 : _b.runtimeVersion) !== appConfigRuntimeVersion) {
|
|
113
113
|
ctx.logger.warn(`Runtime version from the app config evaluated on your local machine (${ctx.metadata.runtimeVersion}) does not match the one resolved here (${appConfigRuntimeVersion}).`);
|
|
114
114
|
ctx.logger.warn("If you're using conditional app configs, e.g. depending on an environment variable, make sure to set the variable in eas.json or configure it with EAS Secret.");
|
|
115
115
|
}
|
|
116
116
|
if ((_c = ctx.job.updates) === null || _c === void 0 ? void 0 : _c.channel) {
|
|
117
|
-
await exports.configureEASExpoUpdatesAsync(ctx);
|
|
117
|
+
await (0, exports.configureEASExpoUpdatesAsync)(ctx);
|
|
118
118
|
}
|
|
119
119
|
else {
|
|
120
|
-
await exports.configureClassicExpoUpdatesAsync(ctx);
|
|
120
|
+
await (0, exports.configureClassicExpoUpdatesAsync)(ctx);
|
|
121
121
|
}
|
|
122
122
|
};
|
|
123
123
|
exports.configureExpoUpdatesIfInstalledAsync = configureExpoUpdatesIfInstalledAsync;
|
|
124
124
|
const getRuntimeVersionAsync = async (ctx) => {
|
|
125
125
|
switch (ctx.job.platform) {
|
|
126
126
|
case eas_build_job_1.Platform.ANDROID: {
|
|
127
|
-
return await expoUpdates_1.androidGetNativelyDefinedRuntimeVersionAsync(ctx);
|
|
127
|
+
return await (0, expoUpdates_1.androidGetNativelyDefinedRuntimeVersionAsync)(ctx);
|
|
128
128
|
}
|
|
129
129
|
case eas_build_job_1.Platform.IOS: {
|
|
130
|
-
return await expoUpdates_2.iosGetNativelyDefinedRuntimeVersionAsync(ctx);
|
|
130
|
+
return await (0, expoUpdates_2.iosGetNativelyDefinedRuntimeVersionAsync)(ctx);
|
|
131
131
|
}
|
|
132
132
|
default:
|
|
133
133
|
throw new Error(`Platform is not supported.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expoUpdates.js","sourceRoot":"","sources":["../../src/utils/expoUpdates.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,uDAAoD;AACpD,sEAAqF;AAErF,wDAKgC;AAChC,oDAK4B;AAG5B,sFAAmE;AAEnE;;;;GAIG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAAE,GAAsB,EAAiB,EAAE;;IACrF,gBAAM,
|
|
1
|
+
{"version":3,"file":"expoUpdates.js","sourceRoot":"","sources":["../../src/utils/expoUpdates.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { Platform, Job } from '@expo/eas-build-job';\nimport { getRuntimeVersionNullable } from '@expo/config-plugins/build/utils/Updates';\n\nimport {\n androidSetChannelNativelyAsync,\n androidSetClassicReleaseChannelNativelyAsync,\n androidGetNativelyDefinedClassicReleaseChannelAsync,\n androidGetNativelyDefinedRuntimeVersionAsync,\n} from '../android/expoUpdates';\nimport {\n iosSetChannelNativelyAsync,\n iosSetClassicReleaseChannelNativelyAsync,\n iosGetNativelyDefinedClassicReleaseChannelAsync,\n iosGetNativelyDefinedRuntimeVersionAsync,\n} from '../ios/expoUpdates';\nimport { BuildContext } from '../context';\n\nimport isExpoUpdatesInstalledAsync from './isExpoUpdatesInstalled';\n\n/**\n * Used for when Expo Updates is pointed at an EAS server.\n * @param ctx\n * @param platform\n */\nexport const setChannelNativelyAsync = async (ctx: BuildContext<Job>): Promise<void> => {\n assert(ctx.job.updates?.channel, 'updates.channel must be defined');\n const newUpdateRequestHeaders: Record<string, string> = {\n 'expo-channel-name': ctx.job.updates.channel,\n };\n\n const configFile = ctx.job.platform === Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';\n ctx.logger.info(\n `Setting the update response headers in '${configFile}' to '${JSON.stringify(\n newUpdateRequestHeaders\n )}'`\n );\n\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n await androidSetChannelNativelyAsync(ctx);\n return;\n }\n case Platform.IOS: {\n await iosSetChannelNativelyAsync(ctx);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n};\n\n/**\n * Used for classic Expo Updates\n * @param ctx\n * @param platform\n */\nexport const setClassicReleaseChannelNativelyAsync = async (\n ctx: BuildContext<Job>\n): Promise<void> => {\n assert(ctx.job.releaseChannel, 'releaseChannel must be defined');\n\n const configFile = ctx.job.platform === Platform.ANDROID ? 'AndroidManifest.xml' : 'Expo.plist';\n ctx.logger.info(`Setting the release channel in '${configFile}' to '${ctx.job.releaseChannel}'`);\n\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n await androidSetClassicReleaseChannelNativelyAsync(ctx);\n return;\n }\n case Platform.IOS: {\n await iosSetClassicReleaseChannelNativelyAsync(ctx);\n return;\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n};\n\n/**\n * Used for classic Expo Updates\n * @param ctx\n * @param platform\n */\nexport const getNativelyDefinedClassicReleaseChannelAsync = async (\n ctx: BuildContext<Job>\n): Promise<string | null> => {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n return androidGetNativelyDefinedClassicReleaseChannelAsync(ctx);\n }\n case Platform.IOS: {\n return iosGetNativelyDefinedClassicReleaseChannelAsync(ctx);\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n};\n\nexport const configureClassicExpoUpdatesAsync = async (ctx: BuildContext<Job>): Promise<void> => {\n if (ctx.job.releaseChannel) {\n await setClassicReleaseChannelNativelyAsync(ctx);\n } else {\n /**\n * If releaseChannel is not defined:\n * 1. Try to infer it from the native value.\n * 2. If it is not set, fallback to 'default'.\n */\n const releaseChannel = await getNativelyDefinedClassicReleaseChannelAsync(ctx);\n if (releaseChannel) {\n ctx.logger.info(\n `Using the release channel pre-configured in native project (${releaseChannel})`\n );\n ctx.logger.warn('Please add the \"releaseChannel\" field to your build profile (eas.json)');\n } else {\n ctx.logger.info(`Using default release channel for 'expo-updates' (default)`);\n }\n }\n};\n\nexport const configureEASExpoUpdatesAsync = async (ctx: BuildContext<Job>): Promise<void> => {\n await setChannelNativelyAsync(ctx);\n};\n\nexport const configureExpoUpdatesIfInstalledAsync = async (\n ctx: BuildContext<Job>\n): Promise<void> => {\n if (!(await isExpoUpdatesInstalledAsync(ctx.reactNativeProjectDirectory))) {\n return;\n }\n\n const appConfigRuntimeVersion = getRuntimeVersionNullable(ctx.appConfig, ctx.job.platform);\n if (ctx.metadata?.runtimeVersion && ctx.metadata?.runtimeVersion !== appConfigRuntimeVersion) {\n ctx.logger.warn(\n `Runtime version from the app config evaluated on your local machine (${ctx.metadata.runtimeVersion}) does not match the one resolved here (${appConfigRuntimeVersion}).`\n );\n ctx.logger.warn(\n \"If you're using conditional app configs, e.g. depending on an environment variable, make sure to set the variable in eas.json or configure it with EAS Secret.\"\n );\n }\n\n if (ctx.job.updates?.channel) {\n await configureEASExpoUpdatesAsync(ctx);\n } else {\n await configureClassicExpoUpdatesAsync(ctx);\n }\n};\n\nexport const getRuntimeVersionAsync = async (ctx: BuildContext<Job>): Promise<string | null> => {\n switch (ctx.job.platform) {\n case Platform.ANDROID: {\n return await androidGetNativelyDefinedRuntimeVersionAsync(ctx);\n }\n case Platform.IOS: {\n return await iosGetNativelyDefinedRuntimeVersionAsync(ctx);\n }\n default:\n throw new Error(`Platform is not supported.`);\n }\n};\n"]}
|