@expo/build-tools 1.0.31 → 1.0.34
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/customBuildContext.d.ts +1 -0
- package/dist/customBuildContext.js +1 -0
- package/dist/customBuildContext.js.map +1 -1
- package/dist/steps/easFunctions.js +14 -2
- package/dist/steps/easFunctions.js.map +1 -1
- package/dist/steps/functions/eas/buildReactNativeApp.js +0 -6
- package/dist/steps/functions/eas/buildReactNativeApp.js.map +1 -1
- package/dist/steps/functions/eas/{configureExpoUpdatesIfInstalled.js → configureEASUpdateIfInstalled.js} +1 -1
- package/dist/steps/functions/eas/configureEASUpdateIfInstalled.js.map +1 -0
- package/dist/steps/functions/eas/findAndUploadBuildArtifacts.js +1 -5
- package/dist/steps/functions/eas/findAndUploadBuildArtifacts.js.map +1 -1
- package/dist/steps/functions/utils/configureIosCredentials.d.ts +2 -0
- package/dist/steps/functions/utils/configureIosCredentials.js +54 -0
- package/dist/steps/functions/utils/configureIosCredentials.js.map +1 -0
- package/dist/steps/functions/utils/configureIosVersion.d.ts +2 -0
- package/dist/steps/functions/utils/configureIosVersion.js +77 -0
- package/dist/steps/functions/utils/configureIosVersion.js.map +1 -0
- package/dist/steps/functions/utils/generateGymfileFromTemplate.d.ts +2 -0
- package/dist/steps/functions/utils/generateGymfileFromTemplate.js +209 -0
- package/dist/steps/functions/utils/generateGymfileFromTemplate.js.map +1 -0
- package/dist/steps/functions/utils/resolveAppleTeamIdFromCredentials.d.ts +2 -0
- package/dist/steps/functions/utils/resolveAppleTeamIdFromCredentials.js +47 -0
- package/dist/steps/functions/utils/resolveAppleTeamIdFromCredentials.js.map +1 -0
- package/dist/steps/functions/utils/runFastlane.d.ts +2 -0
- package/dist/steps/functions/utils/runFastlane.js +26 -0
- package/dist/steps/functions/utils/runFastlane.js.map +1 -0
- package/dist/steps/functions/utils/runGradle.d.ts +2 -0
- package/dist/steps/functions/utils/runGradle.js +36 -0
- package/dist/steps/functions/utils/runGradle.js.map +1 -0
- package/dist/steps/utils/android/gradle.d.ts +11 -0
- package/dist/steps/utils/android/gradle.js +110 -0
- package/dist/steps/utils/android/gradle.js.map +1 -0
- package/dist/steps/utils/ios/configure.d.ts +15 -0
- package/dist/steps/utils/ios/configure.js +78 -0
- package/dist/steps/utils/ios/configure.js.map +1 -0
- package/dist/steps/utils/ios/credentials/credentials.d.ts +4 -0
- package/dist/steps/utils/ios/credentials/credentials.js +16 -0
- package/dist/steps/utils/ios/credentials/credentials.js.map +1 -0
- package/dist/steps/utils/ios/credentials/distributionCertificate.d.ts +3 -0
- package/dist/steps/utils/ios/credentials/distributionCertificate.js +52 -0
- package/dist/steps/utils/ios/credentials/distributionCertificate.js.map +1 -0
- package/dist/steps/utils/ios/credentials/keychain.d.ts +19 -0
- package/dist/steps/utils/ios/credentials/keychain.js +93 -0
- package/dist/steps/utils/ios/credentials/keychain.js.map +1 -0
- package/dist/steps/utils/ios/credentials/manager.d.ts +23 -0
- package/dist/steps/utils/ios/credentials/manager.js +115 -0
- package/dist/steps/utils/ios/credentials/manager.js.map +1 -0
- package/dist/steps/utils/ios/credentials/provisioningProfile.d.ts +35 -0
- package/dist/steps/utils/ios/credentials/provisioningProfile.js +114 -0
- package/dist/steps/utils/ios/credentials/provisioningProfile.js.map +1 -0
- package/dist/steps/utils/ios/fastlane.d.ts +7 -3
- package/dist/steps/utils/ios/fastlane.js +21 -34
- package/dist/steps/utils/ios/fastlane.js.map +1 -1
- package/dist/steps/utils/ios/resolve.d.ts +2 -4
- package/dist/steps/utils/ios/resolve.js +9 -3
- package/dist/steps/utils/ios/resolve.js.map +1 -1
- package/dist/steps/utils/ios/xcpretty.d.ts +16 -0
- package/dist/steps/utils/ios/xcpretty.js +88 -0
- package/dist/steps/utils/ios/xcpretty.js.map +1 -0
- package/package.json +3 -3
- package/dist/steps/functions/eas/configureExpoUpdatesIfInstalled.js.map +0 -1
- /package/dist/steps/functions/eas/{configureExpoUpdatesIfInstalled.d.ts → configureEASUpdateIfInstalled.d.ts} +0 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.XcodeBuildLogger = void 0;
|
|
7
|
+
const assert_1 = __importDefault(require("assert"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
|
+
const xcpretty_1 = require("@expo/xcpretty");
|
|
11
|
+
const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
|
|
12
|
+
const fast_glob_1 = __importDefault(require("fast-glob"));
|
|
13
|
+
const CHECK_FILE_INTERVAL_MS = 1000;
|
|
14
|
+
class XcodeBuildLogger {
|
|
15
|
+
constructor(logger, projectRoot) {
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
this.projectRoot = projectRoot;
|
|
18
|
+
this.flushing = false;
|
|
19
|
+
}
|
|
20
|
+
async watchLogFiles(logsDirectory) {
|
|
21
|
+
while (!this.flushing) {
|
|
22
|
+
const logsFilename = await this.getBuildLogFilename(logsDirectory);
|
|
23
|
+
if (logsFilename) {
|
|
24
|
+
this.logsPath = path_1.default.join(logsDirectory, logsFilename);
|
|
25
|
+
void this.startBuildLogger(this.logsPath);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
await new Promise((res) => setTimeout(res, CHECK_FILE_INTERVAL_MS));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
async flush() {
|
|
32
|
+
this.flushing = true;
|
|
33
|
+
if (this.loggerError) {
|
|
34
|
+
throw this.loggerError;
|
|
35
|
+
}
|
|
36
|
+
if (this.logReaderPromise) {
|
|
37
|
+
this.logReaderPromise.child.kill('SIGINT');
|
|
38
|
+
try {
|
|
39
|
+
await this.logReaderPromise;
|
|
40
|
+
}
|
|
41
|
+
catch { }
|
|
42
|
+
}
|
|
43
|
+
if (this.logsPath) {
|
|
44
|
+
await this.findBundlerErrors(this.logsPath);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
async getBuildLogFilename(logsDirectory) {
|
|
48
|
+
const paths = await (0, fast_glob_1.default)('*.log', { cwd: logsDirectory });
|
|
49
|
+
return paths.length >= 1 ? paths[0] : undefined;
|
|
50
|
+
}
|
|
51
|
+
async startBuildLogger(logsPath) {
|
|
52
|
+
try {
|
|
53
|
+
const formatter = xcpretty_1.ExpoRunFormatter.create(this.projectRoot, {
|
|
54
|
+
// TODO: Can provide xcode project name for better parsing
|
|
55
|
+
isDebug: false,
|
|
56
|
+
});
|
|
57
|
+
this.logReaderPromise = (0, spawn_async_1.default)('tail', ['-n', '+0', '-f', logsPath], { stdio: 'pipe' });
|
|
58
|
+
(0, assert_1.default)(this.logReaderPromise.child.stdout, 'stdout is not available');
|
|
59
|
+
this.logReaderPromise.child.stdout.on('data', (data) => {
|
|
60
|
+
const lines = formatter.pipe(data.toString());
|
|
61
|
+
for (const line of lines) {
|
|
62
|
+
this.logger.info(line);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
await this.logReaderPromise;
|
|
66
|
+
this.logger.info(formatter.getBuildSummary());
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
if (!this.flushing) {
|
|
70
|
+
this.loggerError = err;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async findBundlerErrors(logsPath) {
|
|
75
|
+
try {
|
|
76
|
+
const logFile = await fs_extra_1.default.readFile(logsPath, 'utf-8');
|
|
77
|
+
const match = logFile.match(/Welcome to Metro!\s* Fast - Scalable - Integrated\s*([\s\S]*)Run CLI with --verbose flag for more details.\nCommand PhaseScriptExecution failed with a nonzero exit code/);
|
|
78
|
+
if (match) {
|
|
79
|
+
this.logger.info(match[1]);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
this.logger.error({ err }, 'Failed to read Xcode logs');
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
exports.XcodeBuildLogger = XcodeBuildLogger;
|
|
88
|
+
//# sourceMappingURL=xcpretty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xcpretty.js","sourceRoot":"","sources":["../../../../src/steps/utils/ios/xcpretty.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\nimport path from 'path';\n\nimport fs from 'fs-extra';\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 private logsPath?: string;\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 this.logsPath = path.join(logsDirectory, logsFilename);\n void this.startBuildLogger(this.logsPath);\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 if (this.logsPath) {\n await this.findBundlerErrors(this.logsPath);\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 // TODO: Can provide xcode project name for better parsing\n isDebug: false,\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 private async findBundlerErrors(logsPath: string): Promise<void> {\n try {\n const logFile = await fs.readFile(logsPath, 'utf-8');\n const match = logFile.match(\n /Welcome to Metro!\\s* Fast - Scalable - Integrated\\s*([\\s\\S]*)Run CLI with --verbose flag for more details.\\nCommand PhaseScriptExecution failed with a nonzero exit code/\n );\n if (match) {\n this.logger.info(match[1]);\n }\n } catch (err) {\n this.logger.error({ err }, 'Failed to read Xcode logs');\n }\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@expo/build-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.34",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@expo/logger": "1.0.30",
|
|
29
29
|
"@expo/package-manager": "^1.0.2",
|
|
30
30
|
"@expo/plist": "^0.0.20",
|
|
31
|
-
"@expo/steps": "1.0.
|
|
31
|
+
"@expo/steps": "1.0.34",
|
|
32
32
|
"@expo/template-file": "1.0.30",
|
|
33
33
|
"@expo/turtle-spawn": "1.0.30",
|
|
34
34
|
"@expo/xcpretty": "^4.2.2",
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
"node": "18.13.0",
|
|
66
66
|
"yarn": "1.22.19"
|
|
67
67
|
},
|
|
68
|
-
"gitHead": "
|
|
68
|
+
"gitHead": "ad4d0b971474e48a2ed99308857534b8b54b3f09"
|
|
69
69
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"configureExpoUpdatesIfInstalled.js","sourceRoot":"","sources":["../../../../src/steps/functions/eas/configureExpoUpdatesIfInstalled.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,uCAAyF;AAEzF,oDAA4B;AAE5B,wDAAyD;AACzD,yDAA6E;AAE7E,SAAgB,qCAAqC;IACnD,OAAO,IAAI,qBAAa,CAAC;QACvB,SAAS,EAAE,KAAK;QAChB,EAAE,EAAE,mCAAmC;QACvC,IAAI,EAAE,mCAAmC;QACzC,cAAc,EAAE;YACd,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,iBAAiB;gBACrB,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;YACF,sBAAc,CAAC,cAAc,CAAC;gBAC5B,EAAE,EAAE,SAAS;gBACb,QAAQ,EAAE,KAAK;gBACf,oBAAoB,EAAE,mCAA2B,CAAC,MAAM;aACzD,CAAC;SACH;QACD,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;YACrC,IAAA,gBAAM,EAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YAC/D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAU,CAAC;YAEpD,MAAM,SAAS,GAAG,IAAA,yBAAa,EAC7B,OAAO,CAAC,gBAAgB,EACxB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;;gBACnC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAA,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;gBAC1B,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAA4B,CAAC,EAChC,OAAO,CAAC,MAAM,CACf,CAAC,GAAG,CAAC;YAEN,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,KAA2B,CAAC;YACvE,MAAM,mBAAmB,GAAG,MAAM,CAAC,eAAe,CAAC,KAA2B,CAAC;YAC/E,IAAI,mBAAmB,IAAI,CAAC,gBAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE;gBAC7D,MAAM,IAAI,KAAK,CACb,0FAA0F,mBAAmB,EAAE,CAChH,CAAC;aACH;YAED,MAAM,IAAA,gDAAkC,EAAC;gBACvC,GAAG;gBACH,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;gBAC1C,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS;gBACT,MAAM,EAAE;oBACN,cAAc,EAAE,mBAAmB;oBACnC,OAAO,EAAE,mBAAmB;iBAC7B;aACF,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAlDD,sFAkDC","sourcesContent":["import assert from 'assert';\n\nimport { BuildFunction, BuildStepInput, BuildStepInputValueTypeName } from '@expo/steps';\nimport { Job } from '@expo/eas-build-job';\nimport semver from 'semver';\n\nimport { readAppConfig } from '../../../utils/appConfig';\nimport { configureEASUpdateIfInstalledAsync } from '../../utils/expoUpdates';\n\nexport function configureEASUpdateIfInstalledFunction(): BuildFunction {\n return new BuildFunction({\n namespace: 'eas',\n id: 'configure_eas_update_if_installed',\n name: 'Configure EAS Update if installed',\n inputProviders: [\n BuildStepInput.createProvider({\n id: 'runtime_version',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n BuildStepInput.createProvider({\n id: 'channel',\n required: false,\n allowedValueTypeName: BuildStepInputValueTypeName.STRING,\n }),\n ],\n fn: async (stepCtx, { env, inputs }) => {\n assert(stepCtx.global.staticContext.job, 'Job is not defined');\n const job = stepCtx.global.staticContext.job as Job;\n\n const appConfig = readAppConfig(\n stepCtx.workingDirectory,\n Object.keys(env).reduce((acc, key) => {\n acc[key] = env[key] ?? '';\n return acc;\n }, {} as Record<string, string>),\n stepCtx.logger\n ).exp;\n\n const releaseChannelInput = inputs.channel.value as string | undefined;\n const runtimeVersionInput = inputs.runtime_version.value as string | undefined;\n if (runtimeVersionInput && !semver.valid(runtimeVersionInput)) {\n throw new Error(\n `Runtime version provided by the \"runtime_version\" input is not a valid semver version: ${releaseChannelInput}`\n );\n }\n\n await configureEASUpdateIfInstalledAsync({\n job,\n workingDirectory: stepCtx.workingDirectory,\n logger: stepCtx.logger,\n appConfig,\n inputs: {\n runtimeVersion: runtimeVersionInput,\n channel: releaseChannelInput,\n },\n });\n },\n });\n}\n"]}
|
|
File without changes
|