@expo/build-tools 1.0.0 → 1.0.1
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.
|
@@ -10,6 +10,7 @@ const logger_1 = require("@expo/logger");
|
|
|
10
10
|
const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
|
|
11
11
|
const joi_1 = __importDefault(require("joi"));
|
|
12
12
|
const nullthrows_1 = __importDefault(require("nullthrows"));
|
|
13
|
+
const packageManager_1 = require("../utils/packageManager");
|
|
13
14
|
const EAS_CLI_STAGING_NPM_TAG = 'latest-eas-build-staging';
|
|
14
15
|
const EAS_CLI_PRODUCTION_NPM_TAG = 'latest-eas-build';
|
|
15
16
|
const EasBuildInternalResultSchema = joi_1.default.object({
|
|
@@ -17,7 +18,7 @@ const EasBuildInternalResultSchema = joi_1.default.object({
|
|
|
17
18
|
metadata: joi_1.default.object().unknown(),
|
|
18
19
|
});
|
|
19
20
|
async function runEasBuildInternalAsync(ctx) {
|
|
20
|
-
const { cmd, args, extraEnv } =
|
|
21
|
+
const { cmd, args, extraEnv } = await resolveEasCommandPrefixAndEnvAsync();
|
|
21
22
|
const { buildProfile } = ctx.job;
|
|
22
23
|
(0, assert_1.default)(buildProfile, 'build profile is missing in a build from git-based integration.');
|
|
23
24
|
const result = await (0, turtle_spawn_1.default)(cmd, [...args, 'build:internal', '--platform', ctx.job.platform, '--profile', buildProfile], {
|
|
@@ -39,7 +40,7 @@ async function runEasBuildInternalAsync(ctx) {
|
|
|
39
40
|
exports.runEasBuildInternalAsync = runEasBuildInternalAsync;
|
|
40
41
|
async function configureEnvFromBuildProfileAsync(ctx) {
|
|
41
42
|
var _a;
|
|
42
|
-
const { cmd, args, extraEnv } =
|
|
43
|
+
const { cmd, args, extraEnv } = await resolveEasCommandPrefixAndEnvAsync();
|
|
43
44
|
const { buildProfile } = ctx.job;
|
|
44
45
|
(0, assert_1.default)(buildProfile, 'build profile is missing in a build from git-based integration.');
|
|
45
46
|
let spawnResult;
|
|
@@ -66,12 +67,13 @@ async function configureEnvFromBuildProfileAsync(ctx) {
|
|
|
66
67
|
}
|
|
67
68
|
const stdout = spawnResult.stdout.toString();
|
|
68
69
|
const parsed = JSON.parse(stdout);
|
|
69
|
-
const env = validateEnvs(parsed);
|
|
70
|
+
const env = validateEnvs(parsed.buildProfile);
|
|
70
71
|
ctx.updateEnv(env);
|
|
71
72
|
}
|
|
72
73
|
exports.configureEnvFromBuildProfileAsync = configureEnvFromBuildProfileAsync;
|
|
73
|
-
function
|
|
74
|
+
async function resolveEasCommandPrefixAndEnvAsync() {
|
|
74
75
|
var _a;
|
|
76
|
+
const npxArgsPrefix = (await (0, packageManager_1.isAtLeastNpm7Async)()) ? ['-y'] : [];
|
|
75
77
|
if (process.env.ENVIRONMENT === 'development') {
|
|
76
78
|
return {
|
|
77
79
|
cmd: (_a = process.env.EAS_BUILD_INTERNAL_EXECUTABLE) !== null && _a !== void 0 ? _a : `eas`,
|
|
@@ -82,12 +84,16 @@ function resolveEasCommandPrefixAndEnv() {
|
|
|
82
84
|
else if (process.env.ENVIRONMENT === 'staging') {
|
|
83
85
|
return {
|
|
84
86
|
cmd: 'npx',
|
|
85
|
-
args: [
|
|
87
|
+
args: [...npxArgsPrefix, `eas-cli@${EAS_CLI_STAGING_NPM_TAG}`],
|
|
86
88
|
extraEnv: { EXPO_STAGING: '1' },
|
|
87
89
|
};
|
|
88
90
|
}
|
|
89
91
|
else {
|
|
90
|
-
return {
|
|
92
|
+
return {
|
|
93
|
+
cmd: 'npx',
|
|
94
|
+
args: [...npxArgsPrefix, `eas-cli@${EAS_CLI_PRODUCTION_NPM_TAG}`],
|
|
95
|
+
extraEnv: {},
|
|
96
|
+
};
|
|
91
97
|
}
|
|
92
98
|
}
|
|
93
99
|
function validateEasBuildInternalResult(ctx, result) {
|
|
@@ -107,7 +113,7 @@ function validateEasBuildInternalResult(ctx, result) {
|
|
|
107
113
|
function validateEnvs(result) {
|
|
108
114
|
const { value, error } = joi_1.default.object({
|
|
109
115
|
env: joi_1.default.object().pattern(joi_1.default.string(), joi_1.default.string()),
|
|
110
|
-
}).validate(result
|
|
116
|
+
}).validate(result, {
|
|
111
117
|
stripUnknown: true,
|
|
112
118
|
convert: true,
|
|
113
119
|
abortEarly: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"easBuildInternal.js","sourceRoot":"","sources":["../../src/common/easBuildInternal.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,uDAAwF;AACxF,yCAAwC;AACxC,sEAAuC;AACvC,8CAAsB;AACtB,4DAAoC;
|
|
1
|
+
{"version":3,"file":"easBuildInternal.js","sourceRoot":"","sources":["../../src/common/easBuildInternal.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'assert';\n\nimport { Env, Job, Metadata, sanitizeJob, sanitizeMetadata } from '@expo/eas-build-job';\nimport { PipeMode } from '@expo/logger';\nimport spawn from '@expo/turtle-spawn';\nimport Joi from 'joi';\nimport nullthrows from 'nullthrows';\n\nimport { BuildContext } from '../context';\nimport { isAtLeastNpm7Async } from '../utils/packageManager';\n\nconst EAS_CLI_STAGING_NPM_TAG = 'latest-eas-build-staging';\nconst EAS_CLI_PRODUCTION_NPM_TAG = 'latest-eas-build';\n\nconst EasBuildInternalResultSchema = Joi.object<{ job: object; metadata: object }>({\n job: Joi.object().unknown(),\n metadata: Joi.object().unknown(),\n});\n\nexport async function runEasBuildInternalAsync<TJob extends Job>(\n ctx: BuildContext<TJob>\n): Promise<void> {\n const { cmd, args, extraEnv } = await resolveEasCommandPrefixAndEnvAsync();\n const { buildProfile } = ctx.job;\n assert(buildProfile, 'build profile is missing in a build from git-based integration.');\n const result = await spawn(\n cmd,\n [...args, 'build:internal', '--platform', ctx.job.platform, '--profile', buildProfile],\n {\n cwd: ctx.reactNativeProjectDirectory,\n env: {\n ...ctx.env,\n EXPO_TOKEN: nullthrows(ctx.job.secrets, 'Secrets must be defined for non-custom builds')\n .robotAccessToken,\n ...extraEnv,\n },\n logger: ctx.logger,\n mode: PipeMode.STDERR_ONLY_AS_STDOUT,\n }\n );\n const stdout = result.stdout.toString();\n const parsed = JSON.parse(stdout);\n const { job, metadata } = validateEasBuildInternalResult(ctx, parsed);\n ctx.updateJobInformation(job, metadata);\n}\n\nexport async function configureEnvFromBuildProfileAsync<TJob extends Job>(\n ctx: BuildContext<TJob>\n): Promise<void> {\n const { cmd, args, extraEnv } = await resolveEasCommandPrefixAndEnvAsync();\n const { buildProfile } = ctx.job;\n assert(buildProfile, 'build profile is missing in a build from git-based integration.');\n let spawnResult;\n try {\n spawnResult = await spawn(\n cmd,\n [\n ...args,\n 'config',\n '--platform',\n ctx.job.platform,\n '--profile',\n buildProfile,\n '--non-interactive',\n '--json',\n '--eas-json-only',\n ],\n {\n cwd: ctx.reactNativeProjectDirectory,\n env: { ...ctx.env, ...extraEnv },\n }\n );\n } catch (err: any) {\n ctx.logger.error(`Failed to the read build profile ${buildProfile} from eas.json.`);\n ctx.logger.error(err.stderr?.toString());\n throw Error(`Failed to read the build profile ${buildProfile} from eas.json.`);\n }\n const stdout = spawnResult.stdout.toString();\n const parsed = JSON.parse(stdout);\n const env = validateEnvs(parsed.buildProfile);\n ctx.updateEnv(env);\n}\n\nasync function resolveEasCommandPrefixAndEnvAsync(): Promise<{\n cmd: string;\n args: string[];\n extraEnv: Env;\n}> {\n const npxArgsPrefix = (await isAtLeastNpm7Async()) ? ['-y'] : [];\n if (process.env.ENVIRONMENT === 'development') {\n return {\n cmd: process.env.EAS_BUILD_INTERNAL_EXECUTABLE ?? `eas`,\n args: [],\n extraEnv: { EXPO_LOCAL: '1' },\n };\n } else if (process.env.ENVIRONMENT === 'staging') {\n return {\n cmd: 'npx',\n args: [...npxArgsPrefix, `eas-cli@${EAS_CLI_STAGING_NPM_TAG}`],\n extraEnv: { EXPO_STAGING: '1' },\n };\n } else {\n return {\n cmd: 'npx',\n args: [...npxArgsPrefix, `eas-cli@${EAS_CLI_PRODUCTION_NPM_TAG}`],\n extraEnv: {},\n };\n }\n}\n\nfunction validateEasBuildInternalResult<TJob extends Job>(\n ctx: BuildContext<TJob>,\n result: any\n): { job: TJob; metadata: Metadata } {\n const { value, error } = EasBuildInternalResultSchema.validate(result, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n const job = sanitizeJob(value.job) as TJob;\n assert(job.platform === ctx.job.platform, 'eas-cli returned a job for a wrong platform');\n const metadata = sanitizeMetadata(value.metadata);\n return { job, metadata };\n}\n\nfunction validateEnvs(result: any): Env {\n const { value, error } = Joi.object({\n env: Joi.object().pattern(Joi.string(), Joi.string()),\n }).validate(result, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n return value?.env;\n}\n"]}
|
package/dist/common/setup.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.setupAsync = void 0;
|
|
7
|
+
const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
|
|
4
8
|
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
5
9
|
const common_1 = require("@expo/eas-build-job/dist/common");
|
|
6
10
|
const xcodeEnv_1 = require("../ios/xcodeEnv");
|
|
@@ -80,14 +84,13 @@ async function runExpoDoctor(ctx) {
|
|
|
80
84
|
ctx.logger.info('Running "expo doctor"');
|
|
81
85
|
let timeout;
|
|
82
86
|
let timedOut = false;
|
|
87
|
+
const argsPrefix = (await (0, packageManager_1.isAtLeastNpm7Async)()) ? ['-y'] : [];
|
|
83
88
|
try {
|
|
84
|
-
const promise = (0,
|
|
89
|
+
const promise = (0, turtle_spawn_1.default)('npx', [...argsPrefix, 'expo-doctor'], {
|
|
85
90
|
cwd: ctx.reactNativeProjectDirectory,
|
|
86
91
|
logger: ctx.logger,
|
|
87
92
|
env: ctx.env,
|
|
88
|
-
}
|
|
89
|
-
// local Expo CLI does not have "doctor" for now
|
|
90
|
-
{ forceUseGlobalExpoCli: true, npmVersionAtLeast7: await (0, packageManager_1.isAtLeastNpm7Async)() });
|
|
93
|
+
});
|
|
91
94
|
timeout = setTimeout(() => {
|
|
92
95
|
var _a;
|
|
93
96
|
timedOut = true;
|
package/dist/common/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/common/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/common/setup.ts"],"names":[],"mappings":"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","sourcesContent":["import spawn, { SpawnResult } from '@expo/turtle-spawn';\nimport { BuildPhase, Ios, Job, Platform } from '@expo/eas-build-job';\nimport { BuildTrigger } from '@expo/eas-build-job/dist/common';\n\nimport { BuildContext } from '../context';\nimport { deleteXcodeEnvLocalIfExistsAsync } from '../ios/xcodeEnv';\nimport { Hook, runHookIfPresent } from '../utils/hooks';\nimport { createNpmrcIfNotExistsAsync, logIfNpmrcExistsAsync } from '../utils/npmrc';\nimport { isAtLeastNpm7Async } from '../utils/packageManager';\nimport { readPackageJson } from '../utils/project';\n\nimport { prepareProjectSourcesAsync } from './projectSources';\nimport { installDependenciesAsync } from './installDependencies';\nimport { configureEnvFromBuildProfileAsync, runEasBuildInternalAsync } from './easBuildInternal';\n\nconst MAX_EXPO_DOCTOR_TIMEOUT_MS = 20 * 1000;\n\nclass DoctorTimeoutError extends Error {}\n\nexport async function setupAsync<TJob extends Job>(ctx: BuildContext<TJob>): Promise<void> {\n const packageJson = await ctx.runBuildPhase(BuildPhase.PREPARE_PROJECT, async () => {\n await prepareProjectSourcesAsync(ctx);\n if (ctx.env.NPM_TOKEN) {\n await createNpmrcIfNotExistsAsync(ctx);\n } else {\n await logIfNpmrcExistsAsync(ctx);\n }\n if (ctx.job.platform === Platform.IOS && ctx.env.EAS_BUILD_RUNNER === 'eas-build') {\n await deleteXcodeEnvLocalIfExistsAsync(ctx as BuildContext<Ios.Job>);\n }\n if (ctx.job.triggeredBy === BuildTrigger.GIT_BASED_INTEGRATION) {\n // We need to setup envs from eas.json before\n // eas-build-pre-install hook is called.\n await configureEnvFromBuildProfileAsync(ctx);\n }\n // try to read package.json to see if it exists and is valid\n return readPackageJson(ctx.reactNativeProjectDirectory);\n });\n\n await ctx.runBuildPhase(BuildPhase.PRE_INSTALL_HOOK, async () => {\n await runHookIfPresent(ctx, Hook.PRE_INSTALL);\n });\n\n await ctx.runBuildPhase(BuildPhase.READ_PACKAGE_JSON, async () => {\n ctx.logger.info('Using package.json:');\n ctx.logger.info(JSON.stringify(packageJson, null, 2));\n });\n\n await ctx.runBuildPhase(BuildPhase.INSTALL_DEPENDENCIES, async () => {\n await installDependenciesAsync(ctx);\n });\n\n if (ctx.job.triggeredBy === BuildTrigger.GIT_BASED_INTEGRATION) {\n await ctx.runBuildPhase(BuildPhase.EAS_BUILD_INTERNAL, async () => {\n await runEasBuildInternalAsync(ctx);\n });\n }\n\n await ctx.runBuildPhase(BuildPhase.READ_APP_CONFIG, async () => {\n ctx.logger.info('Using app configuration:');\n ctx.logger.info(JSON.stringify(ctx.appConfig, null, 2));\n });\n\n const hasExpoPackage = !!packageJson.dependencies?.expo;\n if (hasExpoPackage) {\n await ctx.runBuildPhase(BuildPhase.RUN_EXPO_DOCTOR, async () => {\n try {\n const { stdout } = await runExpoDoctor(ctx);\n if (!stdout.match(/Didn't find any issues with the project/)) {\n ctx.markBuildPhaseHasWarnings();\n }\n } catch (err) {\n if (err instanceof DoctorTimeoutError) {\n ctx.logger.error(err.message);\n } else {\n ctx.logger.error({ err }, 'Command \"expo doctor\" failed.');\n }\n ctx.markBuildPhaseHasWarnings();\n }\n });\n }\n}\n\nasync function runExpoDoctor<TJob extends Job>(ctx: BuildContext<TJob>): Promise<SpawnResult> {\n ctx.logger.info('Running \"expo doctor\"');\n let timeout: NodeJS.Timeout | undefined;\n let timedOut = false;\n const argsPrefix = (await isAtLeastNpm7Async()) ? ['-y'] : [];\n try {\n const promise = spawn('npx', [...argsPrefix, 'expo-doctor'], {\n cwd: ctx.reactNativeProjectDirectory,\n logger: ctx.logger,\n env: ctx.env,\n });\n timeout = setTimeout(() => {\n timedOut = true;\n promise.child.kill();\n ctx.reportError?.(`\"expo doctor\" timed out`, undefined, {\n extras: { buildId: ctx.env.EAS_BUILD_ID },\n });\n }, MAX_EXPO_DOCTOR_TIMEOUT_MS);\n return await promise;\n } catch (err: any) {\n if (timedOut) {\n throw new DoctorTimeoutError('\"expo doctor\" timed out, skipping...');\n }\n throw err;\n } finally {\n if (timeout) {\n clearTimeout(timeout);\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.1",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -61,5 +61,5 @@
|
|
|
61
61
|
"node": "18.13.0",
|
|
62
62
|
"yarn": "1.22.19"
|
|
63
63
|
},
|
|
64
|
-
"gitHead": "
|
|
64
|
+
"gitHead": "8e5f104131f68b26e22916e332ec6a6b8f15086e"
|
|
65
65
|
}
|