eas-cli-local-build-plugin 0.0.55 → 0.0.59
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.js +2 -0
- package/dist/android.js.map +1 -1
- package/dist/build.js +11 -4
- package/dist/build.js.map +1 -1
- package/dist/buildArtifact.js +3 -6
- package/dist/buildArtifact.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/exit.js +17 -5
- package/dist/exit.js.map +1 -1
- package/dist/ios.js +2 -0
- package/dist/ios.js.map +1 -1
- package/dist/parseInput.js +2 -2
- package/dist/parseInput.js.map +1 -1
- package/package.json +3 -5
- package/src/android.ts +2 -0
- package/src/build.ts +11 -6
- package/src/buildArtifact.ts +2 -7
- package/src/config.ts +4 -0
- package/src/exit.ts +18 -7
- package/src/ios.ts +2 -0
- package/src/parseInput.ts +2 -2
package/dist/android.js
CHANGED
|
@@ -29,6 +29,7 @@ const omit_1 = __importDefault(require("lodash/omit"));
|
|
|
29
29
|
const eject_1 = require("./eject");
|
|
30
30
|
const logger_1 = __importStar(require("./logger"));
|
|
31
31
|
const buildArtifact_1 = require("./buildArtifact");
|
|
32
|
+
const config_1 = __importDefault(require("./config"));
|
|
32
33
|
async function buildAndroidAsync(job, { workingdir, env }) {
|
|
33
34
|
const ctx = new build_tools_1.BuildContext(job, {
|
|
34
35
|
workingdir,
|
|
@@ -36,6 +37,7 @@ async function buildAndroidAsync(job, { workingdir, env }) {
|
|
|
36
37
|
logBuffer: logger_1.logBuffer,
|
|
37
38
|
ejectProvider: new eject_1.LocalExpoCliEjectProvider(),
|
|
38
39
|
env,
|
|
40
|
+
skipNativeBuild: config_1.default.skipNativeBuild,
|
|
39
41
|
});
|
|
40
42
|
await ctx.runBuildPhase(eas_build_job_1.BuildPhase.START_BUILD, async () => {
|
|
41
43
|
ctx.logger.info({ job: omit_1.default(ctx.job, 'secrets') }, 'Starting build');
|
package/dist/android.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"android.js","sourceRoot":"","sources":["../src/android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAA0D;AAC1D,mDAA2D;AAC3D,uDAA+B;AAE/B,mCAAoD;AACpD,mDAA6C;AAE7C,mDAAuD;
|
|
1
|
+
{"version":3,"file":"android.js","sourceRoot":"","sources":["../src/android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAA0D;AAC1D,mDAA2D;AAC3D,uDAA+B;AAE/B,mCAAoD;AACpD,mDAA6C;AAE7C,mDAAuD;AACvD,sDAA8B;AAEvB,KAAK,UAAU,iBAAiB,CACrC,GAAgB,EAChB,EAAE,UAAU,EAAE,GAAG,EAAe;IAEhC,MAAM,GAAG,GAAG,IAAI,0BAAY,CAAc,GAAG,EAAE;QAC7C,UAAU;QACV,MAAM,EAAN,gBAAM;QACN,SAAS,EAAT,kBAAS;QACT,aAAa,EAAE,IAAI,iCAAyB,EAAE;QAC9C,GAAG;QACH,eAAe,EAAE,gBAAM,CAAC,eAAe;KACxC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QACzD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,cAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,sBAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAEzD,OAAO,MAAM,oCAAoB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AApBD,8CAoBC","sourcesContent":["import { Android, BuildPhase } from '@expo/eas-build-job';\nimport { Builders, BuildContext } from '@expo/build-tools';\nimport omit from 'lodash/omit';\n\nimport { LocalExpoCliEjectProvider } from './eject';\nimport logger, { logBuffer } from './logger';\nimport { BuildParams } from './types';\nimport { prepareBuildArtifact } from './buildArtifact';\nimport config from './config';\n\nexport async function buildAndroidAsync(\n job: Android.Job,\n { workingdir, env }: BuildParams\n): Promise<string | undefined> {\n const ctx = new BuildContext<Android.Job>(job, {\n workingdir,\n logger,\n logBuffer,\n ejectProvider: new LocalExpoCliEjectProvider(),\n env,\n skipNativeBuild: config.skipNativeBuild,\n });\n\n await ctx.runBuildPhase(BuildPhase.START_BUILD, async () => {\n ctx.logger.info({ job: omit(ctx.job, 'secrets') }, 'Starting build');\n });\n\n const artifactPaths = await Builders.androidBuilder(ctx);\n\n return await prepareBuildArtifact(ctx, artifactPaths);\n}\n"]}
|
package/dist/build.js
CHANGED
|
@@ -8,6 +8,7 @@ const eas_build_job_1 = require("@expo/eas-build-job");
|
|
|
8
8
|
const pickBy_1 = __importDefault(require("lodash/pickBy"));
|
|
9
9
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
10
|
const chalk_1 = __importDefault(require("chalk"));
|
|
11
|
+
const build_tools_1 = require("@expo/build-tools");
|
|
11
12
|
const android_1 = require("./android");
|
|
12
13
|
const config_1 = __importDefault(require("./config"));
|
|
13
14
|
const ios_1 = require("./ios");
|
|
@@ -28,11 +29,17 @@ async function buildAsync(job) {
|
|
|
28
29
|
break;
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
if (!config_1.default.skipNativeBuild) {
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(chalk_1.default.green('Build successful'));
|
|
35
|
+
console.log(chalk_1.default.green(`You can find the build artifacts in ${artifactPath}`));
|
|
36
|
+
}
|
|
34
37
|
}
|
|
35
38
|
catch (e) {
|
|
39
|
+
if (e instanceof build_tools_1.SkipNativeBuildError) {
|
|
40
|
+
console.log(e.message);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
36
43
|
console.error();
|
|
37
44
|
console.error(chalk_1.default.red(`Build failed`));
|
|
38
45
|
if (config_1.default.logger.level === 'debug') {
|
|
@@ -45,7 +52,7 @@ async function buildAsync(job) {
|
|
|
45
52
|
await fs_extra_1.default.remove(workingdir);
|
|
46
53
|
}
|
|
47
54
|
else {
|
|
48
|
-
console.error(chalk_1.default.yellow(
|
|
55
|
+
console.error(chalk_1.default.yellow(`Skipping cleanup, ${workingdir} won't be removed.`));
|
|
49
56
|
}
|
|
50
57
|
if (job.projectArchive.type === eas_build_job_1.ArchiveSourceType.PATH) {
|
|
51
58
|
await fs_extra_1.default.remove(job.projectArchive.path);
|
package/dist/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAuE;AACvE,2DAAmC;AACnC,wDAA0B;AAC1B,kDAA0B;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":";;;;;;AAAA,uDAAuE;AACvE,2DAAmC;AACnC,wDAA0B;AAC1B,kDAA0B;AAC1B,mDAAyD;AAEzD,uCAA8C;AAC9C,sDAA8B;AAC9B,+BAAsC;AACtC,6CAAsD;AAE/C,KAAK,UAAU,UAAU,CAAC,GAAQ;;IACvC,MAAM,UAAU,GAAG,MAAM,mCAAsB,EAAE,CAAC;IAElD,IAAI;QACF,MAAM,GAAG,iDACJ,gBAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAY,EAAiB,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAC3D,MAAA,GAAG,CAAC,kBAAkB,0CAAE,GAAG,KAC9B,SAAS,EAAE,GAAG,GACf,CAAC;QACF,IAAI,YAAgC,CAAC;QACrC,QAAQ,GAAG,CAAC,QAAQ,EAAE;YACpB,KAAK,wBAAQ,CAAC,OAAO,CAAC,CAAC;gBACrB,YAAY,GAAG,MAAM,2BAAiB,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;gBACjE,MAAM;aACP;YACD,KAAK,wBAAQ,CAAC,GAAG,CAAC,CAAC;gBACjB,YAAY,GAAG,MAAM,mBAAa,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC7D,MAAM;aACP;SACF;QACD,IAAI,CAAC,gBAAM,CAAC,eAAe,EAAE;YAC3B,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC,CAAC;SACjF;KACF;IAAC,OAAO,CAAC,EAAE;QACV,IAAI,CAAC,YAAY,kCAAoB,EAAE;YACrC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO;SACR;QACD,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACzC,IAAI,gBAAM,CAAC,MAAM,CAAC,KAAK,KAAK,OAAO,EAAE;YACnC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;SAC7B;QACD,MAAM,CAAC,CAAC;KACT;YAAS;QACR,IAAI,CAAC,gBAAM,CAAC,WAAW,EAAE;YACvB,MAAM,kBAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC7B;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,qBAAqB,UAAU,oBAAoB,CAAC,CAAC,CAAC;SAClF;QACD,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,iCAAiB,CAAC,IAAI,EAAE;YACtD,MAAM,kBAAE,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SAC1C;KACF;AACH,CAAC;AA9CD,gCA8CC","sourcesContent":["import { Job, Platform, ArchiveSourceType } from '@expo/eas-build-job';\nimport pickBy from 'lodash/pickBy';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport { SkipNativeBuildError } from '@expo/build-tools';\n\nimport { buildAndroidAsync } from './android';\nimport config from './config';\nimport { buildIosAsync } from './ios';\nimport { prepareWorkingdirAsync } from './workingdir';\n\nexport async function buildAsync(job: Job): Promise<void> {\n const workingdir = await prepareWorkingdirAsync();\n\n try {\n const env = {\n ...pickBy(process.env, (val?: string): val is string => !!val),\n ...job.builderEnvironment?.env,\n EAS_BUILD: '1',\n };\n let artifactPath: string | undefined;\n switch (job.platform) {\n case Platform.ANDROID: {\n artifactPath = await buildAndroidAsync(job, { env, workingdir });\n break;\n }\n case Platform.IOS: {\n artifactPath = await buildIosAsync(job, { env, workingdir });\n break;\n }\n }\n if (!config.skipNativeBuild) {\n console.log();\n console.log(chalk.green('Build successful'));\n console.log(chalk.green(`You can find the build artifacts in ${artifactPath}`));\n }\n } catch (e) {\n if (e instanceof SkipNativeBuildError) {\n console.log(e.message);\n return;\n }\n console.error();\n console.error(chalk.red(`Build failed`));\n if (config.logger.level === 'debug') {\n console.error(e.innerError);\n }\n throw e;\n } finally {\n if (!config.skipCleanup) {\n await fs.remove(workingdir);\n } else {\n console.error(chalk.yellow(`Skipping cleanup, ${workingdir} won't be removed.`));\n }\n if (job.projectArchive.type === ArchiveSourceType.PATH) {\n await fs.remove(job.projectArchive.path);\n }\n }\n}\n"]}
|
package/dist/buildArtifact.js
CHANGED
|
@@ -5,11 +5,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.prepareBuildArtifact = void 0;
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
|
-
const dateformat_1 = __importDefault(require("dateformat"));
|
|
9
8
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
9
|
const tar_1 = __importDefault(require("tar"));
|
|
11
10
|
const config_1 = __importDefault(require("./config"));
|
|
12
11
|
async function prepareBuildArtifact(ctx, artifactPaths) {
|
|
12
|
+
var _a;
|
|
13
13
|
ctx.logger.info({ phase: 'PREPARE_ARTIFACTS' }, 'Archiving artifacts');
|
|
14
14
|
let suffix;
|
|
15
15
|
let localPath;
|
|
@@ -29,8 +29,8 @@ async function prepareBuildArtifact(ctx, artifactPaths) {
|
|
|
29
29
|
suffix = '.tar.gz';
|
|
30
30
|
localPath = archivePath;
|
|
31
31
|
}
|
|
32
|
-
const artifactName = `build-${
|
|
33
|
-
const destPath = path_1.default.join(config_1.default.artifactsDir, artifactName);
|
|
32
|
+
const artifactName = `build-${Date.now()}${suffix}`;
|
|
33
|
+
const destPath = (_a = config_1.default.artifactPath) !== null && _a !== void 0 ? _a : path_1.default.join(config_1.default.artifactsDir, artifactName);
|
|
34
34
|
await fs_extra_1.default.copy(localPath, destPath);
|
|
35
35
|
ctx.logger.info({ phase: 'PREPARE_ARTIFACTS' }, `Writing artifacts to ${destPath}`);
|
|
36
36
|
return destPath;
|
|
@@ -48,7 +48,4 @@ function getCommonParentDir(path1, path2) {
|
|
|
48
48
|
}
|
|
49
49
|
return '/';
|
|
50
50
|
}
|
|
51
|
-
function formatDateForFilename(date) {
|
|
52
|
-
return dateformat_1.default(date, 'dd-mm-yyyy-HH:MM');
|
|
53
|
-
}
|
|
54
51
|
//# sourceMappingURL=buildArtifact.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildArtifact.js","sourceRoot":"","sources":["../src/buildArtifact.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAIxB,
|
|
1
|
+
{"version":3,"file":"buildArtifact.js","sourceRoot":"","sources":["../src/buildArtifact.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAIxB,wDAA0B;AAC1B,8CAAsB;AAEtB,sDAA8B;AAEvB,KAAK,UAAU,oBAAoB,CACxC,GAAsB,EACtB,aAAuB;;IAEvB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACvE,IAAI,MAAM,CAAC;IACX,IAAI,SAAS,CAAC;IACd,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;QACnF,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;QAC5B,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;KACzC;SAAM;QACL,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CACpC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,EAC5C,aAAa,CAAC,CAAC,CAAC,CACjB,CAAC;QACF,MAAM,sBAAsB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC5D,cAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CACnC,CAAC;QAEF,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,gBAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;QACrE,MAAM,aAAG,CAAC,CAAC,CACT;YACE,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,SAAS;SACf,EACD,sBAAsB,CACvB,CAAC;QACF,MAAM,GAAG,SAAS,CAAC;QACnB,SAAS,GAAG,WAAW,CAAC;KACzB;IACD,MAAM,YAAY,GAAG,SAAS,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAA,gBAAM,CAAC,YAAY,mCAAI,cAAI,CAAC,IAAI,CAAC,gBAAM,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IACrF,MAAM,kBAAE,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,wBAAwB,QAAQ,EAAE,CAAC,CAAC;IACpF,OAAO,QAAQ,CAAC;AAClB,CAAC;AApCD,oDAoCC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAAa;IACtD,MAAM,eAAe,GAAG,cAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,cAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAC5C,OAAO,OAAO,KAAK,GAAG,EAAE;QACtB,IAAI,eAAe,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;YACvC,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;KACjC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import path from 'path';\n\nimport { BuildContext } from '@expo/build-tools';\nimport { Job } from '@expo/eas-build-job';\nimport fs from 'fs-extra';\nimport tar from 'tar';\n\nimport config from './config';\n\nexport async function prepareBuildArtifact(\n ctx: BuildContext<Job>,\n artifactPaths: string[]\n): Promise<string | undefined> {\n ctx.logger.info({ phase: 'PREPARE_ARTIFACTS' }, 'Archiving artifacts');\n let suffix;\n let localPath;\n if (artifactPaths.length === 1 && !(await fs.lstat(artifactPaths[0])).isDirectory()) {\n [localPath] = artifactPaths;\n suffix = path.extname(artifactPaths[0]);\n } else {\n const parentDir = artifactPaths.reduce(\n (acc, item) => getCommonParentDir(acc, item),\n artifactPaths[0]\n );\n const relativePathsToArchive = artifactPaths.map((absolute) =>\n path.relative(parentDir, absolute)\n );\n\n const archivePath = path.join(config.workingdir, 'artifacts.tar.gz');\n await tar.c(\n {\n gzip: true,\n file: archivePath,\n cwd: parentDir,\n },\n relativePathsToArchive\n );\n suffix = '.tar.gz';\n localPath = archivePath;\n }\n const artifactName = `build-${Date.now()}${suffix}`;\n const destPath = config.artifactPath ?? path.join(config.artifactsDir, artifactName);\n await fs.copy(localPath, destPath);\n ctx.logger.info({ phase: 'PREPARE_ARTIFACTS' }, `Writing artifacts to ${destPath}`);\n return destPath;\n}\n\nfunction getCommonParentDir(path1: string, path2: string): string {\n const normalizedPath1 = path.normalize(path1);\n const normalizedPath2 = path.normalize(path2);\n let current = path.dirname(normalizedPath1);\n while (current !== '/') {\n if (normalizedPath2.startsWith(current)) {\n return current;\n }\n current = path.dirname(current);\n }\n return '/';\n}\n"]}
|
package/dist/config.d.ts
CHANGED
package/dist/config.js
CHANGED
|
@@ -10,14 +10,18 @@ const { temp } = env_paths_1.default('eas-build-local');
|
|
|
10
10
|
const envLoggerLevel = process.env.EAS_LOCAL_BUILD_LOGGER_LEVEL;
|
|
11
11
|
const envWorkingdir = process.env.EAS_LOCAL_BUILD_WORKINGDIR;
|
|
12
12
|
const envSkipCleanup = process.env.EAS_LOCAL_BUILD_SKIP_CLEANUP;
|
|
13
|
+
const envSkipNativeBuild = process.env.EAS_LOCAL_BUILD_SKIP_NATIVE_BUILD;
|
|
13
14
|
const envArtifactsDir = process.env.EAS_LOCAL_BUILD_ARTIFACTS_DIR;
|
|
15
|
+
const envArtifactPath = process.env.EAS_LOCAL_BUILD_ARTIFACT_PATH;
|
|
14
16
|
if (envLoggerLevel && !['debug', 'info', 'warn', 'error'].includes(envLoggerLevel)) {
|
|
15
17
|
throw new Error('Invalid value for EAS_LOCAL_BUILD_LOGGER_LEVEL, one of info, warn, or error is expected');
|
|
16
18
|
}
|
|
17
19
|
exports.default = {
|
|
18
20
|
workingdir: envWorkingdir !== null && envWorkingdir !== void 0 ? envWorkingdir : path_1.default.join(temp, uuid_1.v4()),
|
|
19
21
|
skipCleanup: envSkipCleanup === '1',
|
|
22
|
+
skipNativeBuild: envSkipNativeBuild === '1',
|
|
20
23
|
artifactsDir: envArtifactsDir !== null && envArtifactsDir !== void 0 ? envArtifactsDir : process.cwd(),
|
|
24
|
+
artifactPath: envArtifactPath,
|
|
21
25
|
logger: {
|
|
22
26
|
level: (envLoggerLevel !== null && envLoggerLevel !== void 0 ? envLoggerLevel : 'info'),
|
|
23
27
|
},
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AAExB,+BAAoC;AACpC,0DAAiC;AAEjC,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAQ,CAAC,iBAAiB,CAAC,CAAC;AAE7C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;AAChE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;AAC7D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;AAChE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;AAElE,IAAI,cAAc,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;IAClF,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;CACH;AAED,kBAAe;IACb,UAAU,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAM,EAAE,CAAC;IACtD,WAAW,EAAE,cAAc,KAAK,GAAG;IACnC,YAAY,EAAE,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,OAAO,CAAC,GAAG,EAAE;IAC9C,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,MAAM,CAAwC;KACzE;CACF,CAAC","sourcesContent":["import path from 'path';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport envPaths from 'env-paths';\n\nconst { temp } = envPaths('eas-build-local');\n\nconst envLoggerLevel = process.env.EAS_LOCAL_BUILD_LOGGER_LEVEL;\nconst envWorkingdir = process.env.EAS_LOCAL_BUILD_WORKINGDIR;\nconst envSkipCleanup = process.env.EAS_LOCAL_BUILD_SKIP_CLEANUP;\nconst envArtifactsDir = process.env.EAS_LOCAL_BUILD_ARTIFACTS_DIR;\n\nif (envLoggerLevel && !['debug', 'info', 'warn', 'error'].includes(envLoggerLevel)) {\n throw new Error(\n 'Invalid value for EAS_LOCAL_BUILD_LOGGER_LEVEL, one of info, warn, or error is expected'\n );\n}\n\nexport default {\n workingdir: envWorkingdir ?? path.join(temp, uuidv4()),\n skipCleanup: envSkipCleanup === '1',\n artifactsDir: envArtifactsDir ?? process.cwd(),\n logger: {\n level: (envLoggerLevel ?? 'info') as 'debug' | 'info' | 'warn' | 'error',\n },\n};\n"]}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AAExB,+BAAoC;AACpC,0DAAiC;AAEjC,MAAM,EAAE,IAAI,EAAE,GAAG,mBAAQ,CAAC,iBAAiB,CAAC,CAAC;AAE7C,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;AAChE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;AAC7D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;AAChE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC;AACzE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;AAClE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;AAElE,IAAI,cAAc,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;IAClF,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;CACH;AAED,kBAAe;IACb,UAAU,EAAE,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAM,EAAE,CAAC;IACtD,WAAW,EAAE,cAAc,KAAK,GAAG;IACnC,eAAe,EAAE,kBAAkB,KAAK,GAAG;IAC3C,YAAY,EAAE,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,OAAO,CAAC,GAAG,EAAE;IAC9C,YAAY,EAAE,eAAe;IAC7B,MAAM,EAAE;QACN,KAAK,EAAE,CAAC,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,MAAM,CAAwC;KACzE;CACF,CAAC","sourcesContent":["import path from 'path';\n\nimport { v4 as uuidv4 } from 'uuid';\nimport envPaths from 'env-paths';\n\nconst { temp } = envPaths('eas-build-local');\n\nconst envLoggerLevel = process.env.EAS_LOCAL_BUILD_LOGGER_LEVEL;\nconst envWorkingdir = process.env.EAS_LOCAL_BUILD_WORKINGDIR;\nconst envSkipCleanup = process.env.EAS_LOCAL_BUILD_SKIP_CLEANUP;\nconst envSkipNativeBuild = process.env.EAS_LOCAL_BUILD_SKIP_NATIVE_BUILD;\nconst envArtifactsDir = process.env.EAS_LOCAL_BUILD_ARTIFACTS_DIR;\nconst envArtifactPath = process.env.EAS_LOCAL_BUILD_ARTIFACT_PATH;\n\nif (envLoggerLevel && !['debug', 'info', 'warn', 'error'].includes(envLoggerLevel)) {\n throw new Error(\n 'Invalid value for EAS_LOCAL_BUILD_LOGGER_LEVEL, one of info, warn, or error is expected'\n );\n}\n\nexport default {\n workingdir: envWorkingdir ?? path.join(temp, uuidv4()),\n skipCleanup: envSkipCleanup === '1',\n skipNativeBuild: envSkipNativeBuild === '1',\n artifactsDir: envArtifactsDir ?? process.cwd(),\n artifactPath: envArtifactPath,\n logger: {\n level: (envLoggerLevel ?? 'info') as 'debug' | 'info' | 'warn' | 'error',\n },\n};\n"]}
|
package/dist/exit.js
CHANGED
|
@@ -8,12 +8,24 @@ const logger_1 = __importDefault(require("./logger"));
|
|
|
8
8
|
const handlers = [];
|
|
9
9
|
let shouldExitStatus = false;
|
|
10
10
|
function listenForInterrupts() {
|
|
11
|
+
let handlerInProgress = false;
|
|
11
12
|
const handleExit = async () => {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
try {
|
|
14
|
+
// when eas-cli calls childProcess.kill() local build receives
|
|
15
|
+
// signal twice in some cases
|
|
16
|
+
if (handlerInProgress) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
handlerInProgress = true;
|
|
20
|
+
logger_1.default.error({ phase: 'ABORT' }, 'Received termination signal.');
|
|
21
|
+
shouldExitStatus = true;
|
|
22
|
+
await Promise.allSettled(handlers.map((handler) => {
|
|
23
|
+
return handler();
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
finally {
|
|
27
|
+
handlerInProgress = false;
|
|
28
|
+
}
|
|
17
29
|
process.exit(1);
|
|
18
30
|
};
|
|
19
31
|
process.on('SIGTERM', handleExit);
|
package/dist/exit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exit.js","sourceRoot":"","sources":["../src/exit.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAE9B,MAAM,QAAQ,GAAmC,EAAE,CAAC;AACpD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,SAAgB,mBAAmB;IACjC,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,gBAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,8BAA8B,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"exit.js","sourceRoot":"","sources":["../src/exit.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAE9B,MAAM,QAAQ,GAAmC,EAAE,CAAC;AACpD,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,SAAgB,mBAAmB;IACjC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,IAAmB,EAAE;QAC3C,IAAI;YACF,8DAA8D;YAC9D,6BAA6B;YAC7B,IAAI,iBAAiB,EAAE;gBACrB,OAAO;aACR;YACD,iBAAiB,GAAG,IAAI,CAAC;YACzB,gBAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,8BAA8B,CAAC,CAAC;YACjE,gBAAgB,GAAG,IAAI,CAAC;YACxB,MAAM,OAAO,CAAC,UAAU,CACtB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACvB,OAAO,OAAO,EAAE,CAAC;YACnB,CAAC,CAAC,CACH,CAAC;SACH;gBAAS;YACR,iBAAiB,GAAG,KAAK,CAAC;SAC3B;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAClC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnC,CAAC;AAzBD,kDAyBC;AAED,SAAgB,eAAe,CAAC,EAA8B;IAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAFD,0CAEC;AAED,SAAgB,UAAU;IACxB,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAFD,gCAEC","sourcesContent":["import logger from './logger';\n\nconst handlers: (() => void | Promise<void>)[] = [];\nlet shouldExitStatus = false;\n\nexport function listenForInterrupts(): void {\n let handlerInProgress = false;\n const handleExit = async (): Promise<void> => {\n try {\n // when eas-cli calls childProcess.kill() local build receives\n // signal twice in some cases\n if (handlerInProgress) {\n return;\n }\n handlerInProgress = true;\n logger.error({ phase: 'ABORT' }, 'Received termination signal.');\n shouldExitStatus = true;\n await Promise.allSettled(\n handlers.map((handler) => {\n return handler();\n })\n );\n } finally {\n handlerInProgress = false;\n }\n process.exit(1);\n };\n\n process.on('SIGTERM', handleExit);\n process.on('SIGINT', handleExit);\n}\n\nexport function registerHandler(fn: () => void | Promise<void>): void {\n handlers.push(fn);\n}\n\nexport function shouldExit(): boolean {\n return shouldExitStatus;\n}\n"]}
|
package/dist/ios.js
CHANGED
|
@@ -29,6 +29,7 @@ const omit_1 = __importDefault(require("lodash/omit"));
|
|
|
29
29
|
const eject_1 = require("./eject");
|
|
30
30
|
const logger_1 = __importStar(require("./logger"));
|
|
31
31
|
const buildArtifact_1 = require("./buildArtifact");
|
|
32
|
+
const config_1 = __importDefault(require("./config"));
|
|
32
33
|
async function buildIosAsync(job, { workingdir, env }) {
|
|
33
34
|
const ctx = new build_tools_1.BuildContext(job, {
|
|
34
35
|
workingdir,
|
|
@@ -36,6 +37,7 @@ async function buildIosAsync(job, { workingdir, env }) {
|
|
|
36
37
|
logBuffer: logger_1.logBuffer,
|
|
37
38
|
ejectProvider: new eject_1.LocalExpoCliEjectProvider(),
|
|
38
39
|
env,
|
|
40
|
+
skipNativeBuild: config_1.default.skipNativeBuild,
|
|
39
41
|
});
|
|
40
42
|
await ctx.runBuildPhase(eas_build_job_1.BuildPhase.START_BUILD, async () => {
|
|
41
43
|
ctx.logger.info({ job: omit_1.default(ctx.job, 'secrets') }, 'Starting build');
|
package/dist/ios.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ios.js","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAsD;AACtD,mDAA2D;AAC3D,uDAA+B;AAE/B,mCAAoD;AACpD,mDAA6C;AAE7C,mDAAuD;
|
|
1
|
+
{"version":3,"file":"ios.js","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAAsD;AACtD,mDAA2D;AAC3D,uDAA+B;AAE/B,mCAAoD;AACpD,mDAA6C;AAE7C,mDAAuD;AACvD,sDAA8B;AAEvB,KAAK,UAAU,aAAa,CACjC,GAAY,EACZ,EAAE,UAAU,EAAE,GAAG,EAAe;IAEhC,MAAM,GAAG,GAAG,IAAI,0BAAY,CAAU,GAAG,EAAE;QACzC,UAAU;QACV,MAAM,EAAN,gBAAM;QACN,SAAS,EAAT,kBAAS;QACT,aAAa,EAAE,IAAI,iCAAyB,EAAE;QAC9C,GAAG;QACH,eAAe,EAAE,gBAAM,CAAC,eAAe;KACxC,CAAC,CAAC;IAEH,MAAM,GAAG,CAAC,aAAa,CAAC,0BAAU,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QACzD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,cAAI,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,sBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAErD,OAAO,MAAM,oCAAoB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AACxD,CAAC;AApBD,sCAoBC","sourcesContent":["import { Ios, BuildPhase } from '@expo/eas-build-job';\nimport { Builders, BuildContext } from '@expo/build-tools';\nimport omit from 'lodash/omit';\n\nimport { LocalExpoCliEjectProvider } from './eject';\nimport logger, { logBuffer } from './logger';\nimport { BuildParams } from './types';\nimport { prepareBuildArtifact } from './buildArtifact';\nimport config from './config';\n\nexport async function buildIosAsync(\n job: Ios.Job,\n { workingdir, env }: BuildParams\n): Promise<string | undefined> {\n const ctx = new BuildContext<Ios.Job>(job, {\n workingdir,\n logger,\n logBuffer,\n ejectProvider: new LocalExpoCliEjectProvider(),\n env,\n skipNativeBuild: config.skipNativeBuild,\n });\n\n await ctx.runBuildPhase(BuildPhase.START_BUILD, async () => {\n ctx.logger.info({ job: omit(ctx.job, 'secrets') }, 'Starting build');\n });\n\n const artifactPaths = await Builders.iosBuilder(ctx);\n\n return await prepareBuildArtifact(ctx, artifactPaths);\n}\n"]}
|
package/dist/parseInput.js
CHANGED
|
@@ -55,11 +55,11 @@ function validateParams(params) {
|
|
|
55
55
|
}
|
|
56
56
|
catch (err) {
|
|
57
57
|
console.log(`Currently using ${packageJson.name}@${packageJson.version}.`);
|
|
58
|
-
console.error(chalk_1.default.red(`Job object has incorrect format, update to latest versions of ${chalk_1.default.bold('eas-cli')} and ${chalk_1.default.bold(packageJson.name)} to make sure you are using
|
|
58
|
+
console.error(chalk_1.default.red(`Job object has incorrect format, update to latest versions of ${chalk_1.default.bold('eas-cli')} and ${chalk_1.default.bold(packageJson.name)} to make sure you are using compatible packages.`));
|
|
59
59
|
throw err;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
function displayHelp() {
|
|
63
|
-
console.log(`This tool is not
|
|
63
|
+
console.log(`This tool is not intended for standalone use, it will be used internally by ${chalk_1.default.bold('eas-cli')} when building with flag ${chalk_1.default.bold('--local')}.`);
|
|
64
64
|
}
|
|
65
65
|
//# sourceMappingURL=parseInput.js.map
|
package/dist/parseInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseInput.js","sourceRoot":"","sources":["../src/parseInput.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA0E;AAC1E,8CAAsB;AACtB,kDAA0B;AAC1B,wDAA0B;AAE1B,iCAAyC;AAEzC,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAM/C,MAAM,YAAY,GAAG,aAAG,CAAC,MAAM,CAAS;IACtC,GAAG,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;CAC5B,CAAC,CAAC;AAEI,KAAK,UAAU,eAAe;IACnC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/E,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEjC,IAAI,CAAC,QAAQ,EAAE;QACb,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,IAAI,YAAY,CAAC;IACjB,IAAI;QACF,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7E;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,EAAE,CAAC,CAAC;QAC5F,MAAM,GAAG,CAAC;KACX;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAC5C,sBAAe,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,iCAAiB,CAAC,IAAI,EAAE;YAC7D,MAAM,kBAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACjD;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAzBD,0CAyBC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;QACrD,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,IAAI,KAAK,EAAE;QACT,MAAM,KAAK,CAAC;KACb;IACD,IAAI;QACF,MAAM,GAAG,GAAG,2BAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,uCAAY,KAAK,KAAE,GAAG,IAAG;KAC1B;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CACP,iEAAiE,eAAK,CAAC,IAAI,CACzE,SAAS,CACV,QAAQ,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"parseInput.js","sourceRoot":"","sources":["../src/parseInput.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA0E;AAC1E,8CAAsB;AACtB,kDAA0B;AAC1B,wDAA0B;AAE1B,iCAAyC;AAEzC,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAM/C,MAAM,YAAY,GAAG,aAAG,CAAC,MAAM,CAAS;IACtC,GAAG,EAAE,aAAG,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;CAC5B,CAAC,CAAC;AAEI,KAAK,UAAU,eAAe;IACnC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;QAC/E,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEjC,IAAI,CAAC,QAAQ,EAAE;QACb,WAAW,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,IAAI,YAAY,CAAC;IACjB,IAAI;QACF,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7E;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC,EAAE,CAAC,CAAC;QAC5F,MAAM,GAAG,CAAC;KACX;IACD,MAAM,MAAM,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAC5C,sBAAe,CAAC,KAAK,IAAI,EAAE;QACzB,IAAI,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,KAAK,iCAAiB,CAAC,IAAI,EAAE;YAC7D,MAAM,kBAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACjD;IACH,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAzBD,0CAyBC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE;QACrD,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,KAAK;KAClB,CAAC,CAAC;IACH,IAAI,KAAK,EAAE;QACT,MAAM,KAAK,CAAC;KACb;IACD,IAAI;QACF,MAAM,GAAG,GAAG,2BAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,uCAAY,KAAK,KAAE,GAAG,IAAG;KAC1B;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,mBAAmB,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,GAAG,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,CACX,eAAK,CAAC,GAAG,CACP,iEAAiE,eAAK,CAAC,IAAI,CACzE,SAAS,CACV,QAAQ,eAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kDAAkD,CACxF,CACF,CAAC;QACF,MAAM,GAAG,CAAC;KACX;AACH,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,CAAC,GAAG,CACT,+EAA+E,eAAK,CAAC,IAAI,CACvF,SAAS,CACV,4BAA4B,eAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CACtD,CAAC;AACJ,CAAC","sourcesContent":["import { Job, sanitizeJob, ArchiveSourceType } from '@expo/eas-build-job';\nimport Joi from 'joi';\nimport chalk from 'chalk';\nimport fs from 'fs-extra';\n\nimport { registerHandler } from './exit';\n\nconst packageJson = require('../package.json');\n\ninterface Params {\n job: Job;\n}\n\nconst ParamsSchema = Joi.object<Params>({\n job: Joi.object().unknown(),\n});\n\nexport async function parseInputAsync(): Promise<Params> {\n if (process.argv.findIndex((arg) => arg === '--version' || arg === '-v') !== -1) {\n console.log(packageJson.version);\n process.exit(0);\n }\n const rawInput = process.argv[2];\n\n if (!rawInput) {\n displayHelp();\n process.exit(1);\n }\n let parsedParams;\n try {\n parsedParams = JSON.parse(Buffer.from(rawInput, 'base64').toString('utf8'));\n } catch (err) {\n console.error(`${chalk.red('The input passed as a argument is not base64 encoded json.')}`);\n throw err;\n }\n const params = validateParams(parsedParams);\n registerHandler(async () => {\n if (params.job.projectArchive.type === ArchiveSourceType.PATH) {\n await fs.remove(params.job.projectArchive.path);\n }\n });\n return params;\n}\n\nfunction validateParams(params: object): Params {\n const { value, error } = ParamsSchema.validate(params, {\n stripUnknown: true,\n convert: true,\n abortEarly: false,\n });\n if (error) {\n throw error;\n }\n try {\n const job = sanitizeJob(value.job);\n return { ...value, job };\n } catch (err) {\n console.log(`Currently using ${packageJson.name}@${packageJson.version}.`);\n console.error(\n chalk.red(\n `Job object has incorrect format, update to latest versions of ${chalk.bold(\n 'eas-cli'\n )} and ${chalk.bold(packageJson.name)} to make sure you are using compatible packages.`\n )\n );\n throw err;\n }\n}\n\nfunction displayHelp(): void {\n console.log(\n `This tool is not intended for standalone use, it will be used internally by ${chalk.bold(\n 'eas-cli'\n )} when building with flag ${chalk.bold('--local')}.`\n );\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eas-cli-local-build-plugin",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.59",
|
|
4
4
|
"description": "Tool for running EAS compatible builds on a local machine.",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"bin": {
|
|
@@ -19,14 +19,13 @@
|
|
|
19
19
|
"bugs": "https://github.com/expo/eas-build/issues",
|
|
20
20
|
"license": "BUSL-1.1",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@expo/build-tools": "0.1.
|
|
22
|
+
"@expo/build-tools": "0.1.104",
|
|
23
23
|
"@expo/bunyan": "^4.0.0",
|
|
24
24
|
"@expo/eas-build-job": "0.2.62",
|
|
25
25
|
"@expo/spawn-async": "^1.5.0",
|
|
26
26
|
"@expo/turtle-spawn": "0.0.21",
|
|
27
27
|
"chalk": "^4.1.0",
|
|
28
|
-
"
|
|
29
|
-
"expo-cli": "4.13.0",
|
|
28
|
+
"expo-cli": "5.0.2",
|
|
30
29
|
"fs-extra": "^9.1.0",
|
|
31
30
|
"joi": "^17.4.2",
|
|
32
31
|
"lodash": "^4.17.21",
|
|
@@ -35,7 +34,6 @@
|
|
|
35
34
|
"uuid": "^8.3.2"
|
|
36
35
|
},
|
|
37
36
|
"devDependencies": {
|
|
38
|
-
"@types/dateformat": "^3.0.1",
|
|
39
37
|
"@types/fs-extra": "^9.0.9",
|
|
40
38
|
"@types/hapi__joi": "^17.1.6",
|
|
41
39
|
"@types/lodash": "^4.14.168",
|
package/src/android.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { LocalExpoCliEjectProvider } from './eject';
|
|
|
6
6
|
import logger, { logBuffer } from './logger';
|
|
7
7
|
import { BuildParams } from './types';
|
|
8
8
|
import { prepareBuildArtifact } from './buildArtifact';
|
|
9
|
+
import config from './config';
|
|
9
10
|
|
|
10
11
|
export async function buildAndroidAsync(
|
|
11
12
|
job: Android.Job,
|
|
@@ -17,6 +18,7 @@ export async function buildAndroidAsync(
|
|
|
17
18
|
logBuffer,
|
|
18
19
|
ejectProvider: new LocalExpoCliEjectProvider(),
|
|
19
20
|
env,
|
|
21
|
+
skipNativeBuild: config.skipNativeBuild,
|
|
20
22
|
});
|
|
21
23
|
|
|
22
24
|
await ctx.runBuildPhase(BuildPhase.START_BUILD, async () => {
|
package/src/build.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { Job, Platform, ArchiveSourceType } from '@expo/eas-build-job';
|
|
|
2
2
|
import pickBy from 'lodash/pickBy';
|
|
3
3
|
import fs from 'fs-extra';
|
|
4
4
|
import chalk from 'chalk';
|
|
5
|
+
import { SkipNativeBuildError } from '@expo/build-tools';
|
|
5
6
|
|
|
6
7
|
import { buildAndroidAsync } from './android';
|
|
7
8
|
import config from './config';
|
|
@@ -28,10 +29,16 @@ export async function buildAsync(job: Job): Promise<void> {
|
|
|
28
29
|
break;
|
|
29
30
|
}
|
|
30
31
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
if (!config.skipNativeBuild) {
|
|
33
|
+
console.log();
|
|
34
|
+
console.log(chalk.green('Build successful'));
|
|
35
|
+
console.log(chalk.green(`You can find the build artifacts in ${artifactPath}`));
|
|
36
|
+
}
|
|
34
37
|
} catch (e) {
|
|
38
|
+
if (e instanceof SkipNativeBuildError) {
|
|
39
|
+
console.log(e.message);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
35
42
|
console.error();
|
|
36
43
|
console.error(chalk.red(`Build failed`));
|
|
37
44
|
if (config.logger.level === 'debug') {
|
|
@@ -42,9 +49,7 @@ export async function buildAsync(job: Job): Promise<void> {
|
|
|
42
49
|
if (!config.skipCleanup) {
|
|
43
50
|
await fs.remove(workingdir);
|
|
44
51
|
} else {
|
|
45
|
-
console.error(
|
|
46
|
-
chalk.yellow("EAS_LOCAL_BUILD_SKIP_CLEANUP is set, working dir won't be removed.")
|
|
47
|
-
);
|
|
52
|
+
console.error(chalk.yellow(`Skipping cleanup, ${workingdir} won't be removed.`));
|
|
48
53
|
}
|
|
49
54
|
if (job.projectArchive.type === ArchiveSourceType.PATH) {
|
|
50
55
|
await fs.remove(job.projectArchive.path);
|
package/src/buildArtifact.ts
CHANGED
|
@@ -2,7 +2,6 @@ import path from 'path';
|
|
|
2
2
|
|
|
3
3
|
import { BuildContext } from '@expo/build-tools';
|
|
4
4
|
import { Job } from '@expo/eas-build-job';
|
|
5
|
-
import dateFormat from 'dateformat';
|
|
6
5
|
import fs from 'fs-extra';
|
|
7
6
|
import tar from 'tar';
|
|
8
7
|
|
|
@@ -39,8 +38,8 @@ export async function prepareBuildArtifact(
|
|
|
39
38
|
suffix = '.tar.gz';
|
|
40
39
|
localPath = archivePath;
|
|
41
40
|
}
|
|
42
|
-
const artifactName = `build-${
|
|
43
|
-
const destPath = path.join(config.artifactsDir, artifactName);
|
|
41
|
+
const artifactName = `build-${Date.now()}${suffix}`;
|
|
42
|
+
const destPath = config.artifactPath ?? path.join(config.artifactsDir, artifactName);
|
|
44
43
|
await fs.copy(localPath, destPath);
|
|
45
44
|
ctx.logger.info({ phase: 'PREPARE_ARTIFACTS' }, `Writing artifacts to ${destPath}`);
|
|
46
45
|
return destPath;
|
|
@@ -58,7 +57,3 @@ function getCommonParentDir(path1: string, path2: string): string {
|
|
|
58
57
|
}
|
|
59
58
|
return '/';
|
|
60
59
|
}
|
|
61
|
-
|
|
62
|
-
function formatDateForFilename(date: Date): string {
|
|
63
|
-
return dateFormat(date, 'dd-mm-yyyy-HH:MM');
|
|
64
|
-
}
|
package/src/config.ts
CHANGED
|
@@ -8,7 +8,9 @@ const { temp } = envPaths('eas-build-local');
|
|
|
8
8
|
const envLoggerLevel = process.env.EAS_LOCAL_BUILD_LOGGER_LEVEL;
|
|
9
9
|
const envWorkingdir = process.env.EAS_LOCAL_BUILD_WORKINGDIR;
|
|
10
10
|
const envSkipCleanup = process.env.EAS_LOCAL_BUILD_SKIP_CLEANUP;
|
|
11
|
+
const envSkipNativeBuild = process.env.EAS_LOCAL_BUILD_SKIP_NATIVE_BUILD;
|
|
11
12
|
const envArtifactsDir = process.env.EAS_LOCAL_BUILD_ARTIFACTS_DIR;
|
|
13
|
+
const envArtifactPath = process.env.EAS_LOCAL_BUILD_ARTIFACT_PATH;
|
|
12
14
|
|
|
13
15
|
if (envLoggerLevel && !['debug', 'info', 'warn', 'error'].includes(envLoggerLevel)) {
|
|
14
16
|
throw new Error(
|
|
@@ -19,7 +21,9 @@ if (envLoggerLevel && !['debug', 'info', 'warn', 'error'].includes(envLoggerLeve
|
|
|
19
21
|
export default {
|
|
20
22
|
workingdir: envWorkingdir ?? path.join(temp, uuidv4()),
|
|
21
23
|
skipCleanup: envSkipCleanup === '1',
|
|
24
|
+
skipNativeBuild: envSkipNativeBuild === '1',
|
|
22
25
|
artifactsDir: envArtifactsDir ?? process.cwd(),
|
|
26
|
+
artifactPath: envArtifactPath,
|
|
23
27
|
logger: {
|
|
24
28
|
level: (envLoggerLevel ?? 'info') as 'debug' | 'info' | 'warn' | 'error',
|
|
25
29
|
},
|
package/src/exit.ts
CHANGED
|
@@ -4,14 +4,25 @@ const handlers: (() => void | Promise<void>)[] = [];
|
|
|
4
4
|
let shouldExitStatus = false;
|
|
5
5
|
|
|
6
6
|
export function listenForInterrupts(): void {
|
|
7
|
+
let handlerInProgress = false;
|
|
7
8
|
const handleExit = async (): Promise<void> => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return
|
|
13
|
-
}
|
|
14
|
-
|
|
9
|
+
try {
|
|
10
|
+
// when eas-cli calls childProcess.kill() local build receives
|
|
11
|
+
// signal twice in some cases
|
|
12
|
+
if (handlerInProgress) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
handlerInProgress = true;
|
|
16
|
+
logger.error({ phase: 'ABORT' }, 'Received termination signal.');
|
|
17
|
+
shouldExitStatus = true;
|
|
18
|
+
await Promise.allSettled(
|
|
19
|
+
handlers.map((handler) => {
|
|
20
|
+
return handler();
|
|
21
|
+
})
|
|
22
|
+
);
|
|
23
|
+
} finally {
|
|
24
|
+
handlerInProgress = false;
|
|
25
|
+
}
|
|
15
26
|
process.exit(1);
|
|
16
27
|
};
|
|
17
28
|
|
package/src/ios.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { LocalExpoCliEjectProvider } from './eject';
|
|
|
6
6
|
import logger, { logBuffer } from './logger';
|
|
7
7
|
import { BuildParams } from './types';
|
|
8
8
|
import { prepareBuildArtifact } from './buildArtifact';
|
|
9
|
+
import config from './config';
|
|
9
10
|
|
|
10
11
|
export async function buildIosAsync(
|
|
11
12
|
job: Ios.Job,
|
|
@@ -17,6 +18,7 @@ export async function buildIosAsync(
|
|
|
17
18
|
logBuffer,
|
|
18
19
|
ejectProvider: new LocalExpoCliEjectProvider(),
|
|
19
20
|
env,
|
|
21
|
+
skipNativeBuild: config.skipNativeBuild,
|
|
20
22
|
});
|
|
21
23
|
|
|
22
24
|
await ctx.runBuildPhase(BuildPhase.START_BUILD, async () => {
|
package/src/parseInput.ts
CHANGED
|
@@ -60,7 +60,7 @@ function validateParams(params: object): Params {
|
|
|
60
60
|
chalk.red(
|
|
61
61
|
`Job object has incorrect format, update to latest versions of ${chalk.bold(
|
|
62
62
|
'eas-cli'
|
|
63
|
-
)} and ${chalk.bold(packageJson.name)} to make sure you are using
|
|
63
|
+
)} and ${chalk.bold(packageJson.name)} to make sure you are using compatible packages.`
|
|
64
64
|
)
|
|
65
65
|
);
|
|
66
66
|
throw err;
|
|
@@ -69,7 +69,7 @@ function validateParams(params: object): Params {
|
|
|
69
69
|
|
|
70
70
|
function displayHelp(): void {
|
|
71
71
|
console.log(
|
|
72
|
-
`This tool is not
|
|
72
|
+
`This tool is not intended for standalone use, it will be used internally by ${chalk.bold(
|
|
73
73
|
'eas-cli'
|
|
74
74
|
)} when building with flag ${chalk.bold('--local')}.`
|
|
75
75
|
);
|