eas-cli-local-build-plugin 0.0.53 → 0.0.57

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 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');
@@ -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;AAEhD,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;KACJ,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;AAnBD,8CAmBC","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';\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 });\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"]}
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
- console.log();
32
- console.log(chalk_1.default.green('Build successful'));
33
- console.log(chalk_1.default.green(`You can find the build artifacts in ${artifactPath}`));
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("EAS_LOCAL_BUILD_SKIP_CLEANUP is set, working dir won't be removed."));
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;AAE1B,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,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,uCAAuC,YAAY,EAAE,CAAC,CAAC,CAAC;KACjF;IAAC,OAAO,CAAC,EAAE;QACV,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,CACX,eAAK,CAAC,MAAM,CAAC,oEAAoE,CAAC,CACnF,CAAC;SACH;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;AA1CD,gCA0CC","sourcesContent":["import { Job, Platform, ArchiveSourceType } from '@expo/eas-build-job';\nimport pickBy from 'lodash/pickBy';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\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 console.log();\n console.log(chalk.green('Build successful'));\n console.log(chalk.green(`You can find the build artifacts in ${artifactPath}`));\n } catch (e) {\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(\n chalk.yellow(\"EAS_LOCAL_BUILD_SKIP_CLEANUP is set, working dir won't be removed.\")\n );\n }\n if (job.projectArchive.type === ArchiveSourceType.PATH) {\n await fs.remove(job.projectArchive.path);\n }\n }\n}\n"]}
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/config.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  declare const _default: {
2
2
  workingdir: string;
3
3
  skipCleanup: boolean;
4
+ skipNativeBuild: boolean;
4
5
  artifactsDir: string;
5
6
  logger: {
6
7
  level: "debug" | "info" | "warn" | "error";
package/dist/config.js CHANGED
@@ -10,6 +10,7 @@ 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;
14
15
  if (envLoggerLevel && !['debug', 'info', 'warn', 'error'].includes(envLoggerLevel)) {
15
16
  throw new Error('Invalid value for EAS_LOCAL_BUILD_LOGGER_LEVEL, one of info, warn, or error is expected');
@@ -17,6 +18,7 @@ if (envLoggerLevel && !['debug', 'info', 'warn', 'error'].includes(envLoggerLeve
17
18
  exports.default = {
18
19
  workingdir: envWorkingdir !== null && envWorkingdir !== void 0 ? envWorkingdir : path_1.default.join(temp, uuid_1.v4()),
19
20
  skipCleanup: envSkipCleanup === '1',
21
+ skipNativeBuild: envSkipNativeBuild === '1',
20
22
  artifactsDir: envArtifactsDir !== null && envArtifactsDir !== void 0 ? envArtifactsDir : process.cwd(),
21
23
  logger: {
22
24
  level: (envLoggerLevel !== null && envLoggerLevel !== void 0 ? envLoggerLevel : 'info'),
@@ -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;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,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;\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 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
- logger_1.default.error({ phase: 'ABORT' }, 'Received termination signal.');
13
- shouldExitStatus = true;
14
- await Promise.allSettled(handlers.map((handler) => {
15
- return handler();
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;QACjE,gBAAgB,GAAG,IAAI,CAAC;QACxB,MAAM,OAAO,CAAC,UAAU,CACtB,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACvB,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC,CAAC,CACH,CAAC;QACF,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;AAdD,kDAcC;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 const handleExit = async (): Promise<void> => {\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 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"]}
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;AAEhD,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;KACJ,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;AAnBD,sCAmBC","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';\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 });\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"]}
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"]}
@@ -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 comaptibile packages.`));
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 intedend for standalone use, it will be used internally by ${chalk_1.default.bold('eas-cli')} when building with flag ${chalk_1.default.bold('--local')}.`);
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
@@ -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,mDAAmD,CACzF,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 comaptibile packages.`\n )\n );\n throw err;\n }\n}\n\nfunction displayHelp(): void {\n console.log(\n `This tool is not intedend 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"]}
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.53",
3
+ "version": "0.0.57",
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,14 @@
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.99",
22
+ "@expo/build-tools": "0.1.103",
23
23
  "@expo/bunyan": "^4.0.0",
24
- "@expo/eas-build-job": "0.2.60",
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
28
  "dateformat": "^4.6.2",
29
- "expo-cli": "4.13.0",
29
+ "expo-cli": "5.0.2",
30
30
  "fs-extra": "^9.1.0",
31
31
  "joi": "^17.4.2",
32
32
  "lodash": "^4.17.21",
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
- console.log();
32
- console.log(chalk.green('Build successful'));
33
- console.log(chalk.green(`You can find the build artifacts in ${artifactPath}`));
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/config.ts CHANGED
@@ -8,6 +8,7 @@ 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;
12
13
 
13
14
  if (envLoggerLevel && !['debug', 'info', 'warn', 'error'].includes(envLoggerLevel)) {
@@ -19,6 +20,7 @@ if (envLoggerLevel && !['debug', 'info', 'warn', 'error'].includes(envLoggerLeve
19
20
  export default {
20
21
  workingdir: envWorkingdir ?? path.join(temp, uuidv4()),
21
22
  skipCleanup: envSkipCleanup === '1',
23
+ skipNativeBuild: envSkipNativeBuild === '1',
22
24
  artifactsDir: envArtifactsDir ?? process.cwd(),
23
25
  logger: {
24
26
  level: (envLoggerLevel ?? 'info') as 'debug' | 'info' | 'warn' | 'error',
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
- logger.error({ phase: 'ABORT' }, 'Received termination signal.');
9
- shouldExitStatus = true;
10
- await Promise.allSettled(
11
- handlers.map((handler) => {
12
- return handler();
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 comaptibile packages.`
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 intedend for standalone use, it will be used internally by ${chalk.bold(
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
  );