eas-cli-local-build-plugin 0.0.128 → 0.0.129

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
@@ -38,7 +38,11 @@ async function buildAndroidAsync(job, { workingdir, env: baseEnv, metadata }) {
38
38
  var _a, _b;
39
39
  const versionName = (_a = job.version) === null || _a === void 0 ? void 0 : _a.versionName;
40
40
  const versionCode = (_b = job.version) === null || _b === void 0 ? void 0 : _b.versionCode;
41
- const env = Object.assign(Object.assign(Object.assign({}, baseEnv), (versionCode && { EAS_BUILD_ANDROID_VERSION_CODE: versionCode })), (versionName && { EAS_BUILD_ANDROID_VERSION_NAME: versionName }));
41
+ const env = {
42
+ ...baseEnv,
43
+ ...(versionCode && { EAS_BUILD_ANDROID_VERSION_CODE: versionCode }),
44
+ ...(versionName && { EAS_BUILD_ANDROID_VERSION_NAME: versionName }),
45
+ };
42
46
  const ctx = new build_tools_1.BuildContext(job, {
43
47
  workingdir,
44
48
  logger: logger_1.default,
@@ -1 +1 @@
1
- {"version":3,"file":"android.js","sourceRoot":"","sources":["../src/android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uDAA+D;AAC/D,mDAAoF;AACpF,uDAA+B;AAE/B,mDAA6C;AAE7C,2CAA+C;AAC/C,sDAA8B;AAC9B,uCAAyD;AAElD,KAAK,UAAU,iBAAiB,CACrC,GAAgB,EAChB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAe;;IAEnD,MAAM,WAAW,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAE,WAAW,CAAC;IAC7C,MAAM,WAAW,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAE,WAAW,CAAC;IAC7C,MAAM,GAAG,iDACJ,OAAO,GACP,CAAC,WAAW,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,CAAC,GAChE,CAAC,WAAW,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,CAAC,CACpE,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,0BAAY,CAAc,GAAG,EAAE;QAC7C,UAAU;QACV,MAAM,EAAN,gBAAM;QACN,SAAS,EAAT,kBAAS;QACT,uBAAuB,EAAE,sCAA4B;QACrD,eAAe,EAAE,KAAK,EAAE,IAAkB,EAAE,KAAe,EAAE,MAAe,EAAE,EAAE;YAC9E,IAAI,IAAI,KAAK,0BAAY,CAAC,mBAAmB,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,MAAM,IAAA,4BAAgB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC9C;QACH,CAAC;QACD,GAAG;QACH,QAAQ;QACR,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,IAAA,cAAI,EAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,sBAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAjCD,8CAiCC","sourcesContent":["import { bunyan } from '@expo/logger';\nimport { Android, BuildPhase, Env } from '@expo/eas-build-job';\nimport { Builders, BuildContext, ArtifactType, Artifacts } from '@expo/build-tools';\nimport omit from 'lodash/omit';\n\nimport logger, { logBuffer } from './logger';\nimport { BuildParams } from './types';\nimport { prepareArtifacts } from './artifacts';\nimport config from './config';\nimport { runGlobalExpoCliCommandAsync } from './expoCli';\n\nexport async function buildAndroidAsync(\n job: Android.Job,\n { workingdir, env: baseEnv, metadata }: BuildParams\n): Promise<Artifacts> {\n const versionName = job.version?.versionName;\n const versionCode = job.version?.versionCode;\n const env: Env = {\n ...baseEnv,\n ...(versionCode && { EAS_BUILD_ANDROID_VERSION_CODE: versionCode }),\n ...(versionName && { EAS_BUILD_ANDROID_VERSION_NAME: versionName }),\n };\n const ctx = new BuildContext<Android.Job>(job, {\n workingdir,\n logger,\n logBuffer,\n runGlobalExpoCliCommand: runGlobalExpoCliCommandAsync,\n uploadArtifacts: async (type: ArtifactType, paths: string[], logger?: bunyan) => {\n if (type !== ArtifactType.APPLICATION_ARCHIVE) {\n return null;\n } else {\n return await prepareArtifacts(paths, logger);\n }\n },\n env,\n metadata,\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 return await Builders.androidBuilder(ctx);\n}\n"]}
1
+ {"version":3,"file":"android.js","sourceRoot":"","sources":["../src/android.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uDAA+D;AAC/D,mDAAoF;AACpF,uDAA+B;AAE/B,mDAA6C;AAE7C,2CAA+C;AAC/C,sDAA8B;AAC9B,uCAAyD;AAElD,KAAK,UAAU,iBAAiB,CACrC,GAAgB,EAChB,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAe;;IAEnD,MAAM,WAAW,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAE,WAAW,CAAC;IAC7C,MAAM,WAAW,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAE,WAAW,CAAC;IAC7C,MAAM,GAAG,GAAQ;QACf,GAAG,OAAO;QACV,GAAG,CAAC,WAAW,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,CAAC;QACnE,GAAG,CAAC,WAAW,IAAI,EAAE,8BAA8B,EAAE,WAAW,EAAE,CAAC;KACpE,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,0BAAY,CAAc,GAAG,EAAE;QAC7C,UAAU;QACV,MAAM,EAAN,gBAAM;QACN,SAAS,EAAT,kBAAS;QACT,uBAAuB,EAAE,sCAA4B;QACrD,eAAe,EAAE,KAAK,EAAE,IAAkB,EAAE,KAAe,EAAE,MAAe,EAAE,EAAE;YAC9E,IAAI,IAAI,KAAK,0BAAY,CAAC,mBAAmB,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,MAAM,IAAA,4BAAgB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC9C;QACH,CAAC;QACD,GAAG;QACH,QAAQ;QACR,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,IAAA,cAAI,EAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,sBAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAjCD,8CAiCC","sourcesContent":["import { bunyan } from '@expo/logger';\nimport { Android, BuildPhase, Env } from '@expo/eas-build-job';\nimport { Builders, BuildContext, ArtifactType, Artifacts } from '@expo/build-tools';\nimport omit from 'lodash/omit';\n\nimport logger, { logBuffer } from './logger';\nimport { BuildParams } from './types';\nimport { prepareArtifacts } from './artifacts';\nimport config from './config';\nimport { runGlobalExpoCliCommandAsync } from './expoCli';\n\nexport async function buildAndroidAsync(\n job: Android.Job,\n { workingdir, env: baseEnv, metadata }: BuildParams\n): Promise<Artifacts> {\n const versionName = job.version?.versionName;\n const versionCode = job.version?.versionCode;\n const env: Env = {\n ...baseEnv,\n ...(versionCode && { EAS_BUILD_ANDROID_VERSION_CODE: versionCode }),\n ...(versionName && { EAS_BUILD_ANDROID_VERSION_NAME: versionName }),\n };\n const ctx = new BuildContext<Android.Job>(job, {\n workingdir,\n logger,\n logBuffer,\n runGlobalExpoCliCommand: runGlobalExpoCliCommandAsync,\n uploadArtifacts: async (type: ArtifactType, paths: string[], logger?: bunyan) => {\n if (type !== ArtifactType.APPLICATION_ARCHIVE) {\n return null;\n } else {\n return await prepareArtifacts(paths, logger);\n }\n },\n env,\n metadata,\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 return await Builders.androidBuilder(ctx);\n}\n"]}
package/dist/build.js CHANGED
@@ -25,13 +25,25 @@ async function buildAsync(job, metadata) {
25
25
  }
26
26
  // keep in sync with worker env vars
27
27
  // https://github.com/expo/turtle-v2/blob/main/src/services/worker/src/env.ts
28
- const unfilteredEnv = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, process.env), (_a = job.builderEnvironment) === null || _a === void 0 ? void 0 : _a.env), { EAS_BUILD: '1', EAS_BUILD_RUNNER: 'local-build-plugin', EAS_BUILD_PLATFORM: job.platform, EAS_BUILD_WORKINGDIR: path_1.default.join(workingdir, 'build'), EAS_BUILD_PROFILE: metadata.buildProfile, EAS_BUILD_GIT_COMMIT_HASH: metadata.gitCommitHash, EAS_BUILD_USERNAME: username }), (job.platform === eas_build_job_1.Platform.ANDROID && {
29
- EAS_BUILD_ANDROID_VERSION_CODE: (_b = job.version) === null || _b === void 0 ? void 0 : _b.versionCode,
30
- EAS_BUILD_ANDROID_VERSION_NAME: (_c = job.version) === null || _c === void 0 ? void 0 : _c.versionName,
31
- })), (job.platform === eas_build_job_1.Platform.IOS && {
32
- EAS_BUILD_IOS_BUILD_NUMBER: (_d = job.version) === null || _d === void 0 ? void 0 : _d.buildNumber,
33
- EAS_BUILD_IOS_APP_VERSION: (_e = job.version) === null || _e === void 0 ? void 0 : _e.appVersion,
34
- }));
28
+ const unfilteredEnv = {
29
+ ...process.env,
30
+ ...(_a = job.builderEnvironment) === null || _a === void 0 ? void 0 : _a.env,
31
+ EAS_BUILD: '1',
32
+ EAS_BUILD_RUNNER: 'local-build-plugin',
33
+ EAS_BUILD_PLATFORM: job.platform,
34
+ EAS_BUILD_WORKINGDIR: path_1.default.join(workingdir, 'build'),
35
+ EAS_BUILD_PROFILE: metadata.buildProfile,
36
+ EAS_BUILD_GIT_COMMIT_HASH: metadata.gitCommitHash,
37
+ EAS_BUILD_USERNAME: username,
38
+ ...(job.platform === eas_build_job_1.Platform.ANDROID && {
39
+ EAS_BUILD_ANDROID_VERSION_CODE: (_b = job.version) === null || _b === void 0 ? void 0 : _b.versionCode,
40
+ EAS_BUILD_ANDROID_VERSION_NAME: (_c = job.version) === null || _c === void 0 ? void 0 : _c.versionName,
41
+ }),
42
+ ...(job.platform === eas_build_job_1.Platform.IOS && {
43
+ EAS_BUILD_IOS_BUILD_NUMBER: (_d = job.version) === null || _d === void 0 ? void 0 : _d.buildNumber,
44
+ EAS_BUILD_IOS_APP_VERSION: (_e = job.version) === null || _e === void 0 ? void 0 : _e.appVersion,
45
+ }),
46
+ };
35
47
  const env = (0, pickBy_1.default)(unfilteredEnv, (val) => !!val);
36
48
  let artifacts;
37
49
  switch (job.platform) {
package/dist/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport { Job, Platform, ArchiveSourceType, Metadata, Workflow } from '@expo/eas-build-job';\nimport pickBy from 'lodash/pickBy';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport { Artifacts, SkipNativeBuildError } from '@expo/build-tools';\nimport nullthrows from 'nullthrows';\n\nimport { buildAndroidAsync } from './android';\nimport config from './config';\nimport { buildIosAsync } from './ios';\nimport { prepareWorkingdirAsync } from './workingdir';\n\nexport async function buildAsync(job: Job, metadata: Metadata): Promise<void> {\n const workingdir = await prepareWorkingdirAsync();\n\n try {\n let username = metadata.username;\n if (!username && job.type === Workflow.MANAGED) {\n username = job.username;\n }\n\n // keep in sync with worker env vars\n // https://github.com/expo/turtle-v2/blob/main/src/services/worker/src/env.ts\n const unfilteredEnv: Record<string, string | undefined> = {\n ...process.env,\n ...job.builderEnvironment?.env,\n EAS_BUILD: '1',\n EAS_BUILD_RUNNER: 'local-build-plugin',\n EAS_BUILD_PLATFORM: job.platform,\n EAS_BUILD_WORKINGDIR: path.join(workingdir, 'build'),\n EAS_BUILD_PROFILE: metadata.buildProfile,\n EAS_BUILD_GIT_COMMIT_HASH: metadata.gitCommitHash,\n EAS_BUILD_USERNAME: username,\n ...(job.platform === Platform.ANDROID && {\n EAS_BUILD_ANDROID_VERSION_CODE: job.version?.versionCode,\n EAS_BUILD_ANDROID_VERSION_NAME: job.version?.versionName,\n }),\n ...(job.platform === Platform.IOS && {\n EAS_BUILD_IOS_BUILD_NUMBER: job.version?.buildNumber,\n EAS_BUILD_IOS_APP_VERSION: job.version?.appVersion,\n }),\n };\n const env = pickBy(unfilteredEnv, (val?: string): val is string => !!val);\n\n let artifacts: Artifacts | undefined;\n switch (job.platform) {\n case Platform.ANDROID: {\n artifacts = await buildAndroidAsync(job, { env, workingdir, metadata });\n break;\n }\n case Platform.IOS: {\n artifacts = await buildIosAsync(job, { env, workingdir, metadata });\n break;\n }\n }\n if (!config.skipNativeBuild) {\n console.log();\n console.log(chalk.green('Build successful'));\n console.log(\n chalk.green(\n `You can find the build artifacts in ${nullthrows(artifacts.APPLICATION_ARCHIVE)}`\n )\n );\n }\n } catch (e: any) {\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"]}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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","sourcesContent":["import path from 'path';\n\nimport { Job, Platform, ArchiveSourceType, Metadata, Workflow } from '@expo/eas-build-job';\nimport pickBy from 'lodash/pickBy';\nimport fs from 'fs-extra';\nimport chalk from 'chalk';\nimport { Artifacts, SkipNativeBuildError } from '@expo/build-tools';\nimport nullthrows from 'nullthrows';\n\nimport { buildAndroidAsync } from './android';\nimport config from './config';\nimport { buildIosAsync } from './ios';\nimport { prepareWorkingdirAsync } from './workingdir';\n\nexport async function buildAsync(job: Job, metadata: Metadata): Promise<void> {\n const workingdir = await prepareWorkingdirAsync();\n\n try {\n let username = metadata.username;\n if (!username && job.type === Workflow.MANAGED) {\n username = job.username;\n }\n\n // keep in sync with worker env vars\n // https://github.com/expo/turtle-v2/blob/main/src/services/worker/src/env.ts\n const unfilteredEnv: Record<string, string | undefined> = {\n ...process.env,\n ...job.builderEnvironment?.env,\n EAS_BUILD: '1',\n EAS_BUILD_RUNNER: 'local-build-plugin',\n EAS_BUILD_PLATFORM: job.platform,\n EAS_BUILD_WORKINGDIR: path.join(workingdir, 'build'),\n EAS_BUILD_PROFILE: metadata.buildProfile,\n EAS_BUILD_GIT_COMMIT_HASH: metadata.gitCommitHash,\n EAS_BUILD_USERNAME: username,\n ...(job.platform === Platform.ANDROID && {\n EAS_BUILD_ANDROID_VERSION_CODE: job.version?.versionCode,\n EAS_BUILD_ANDROID_VERSION_NAME: job.version?.versionName,\n }),\n ...(job.platform === Platform.IOS && {\n EAS_BUILD_IOS_BUILD_NUMBER: job.version?.buildNumber,\n EAS_BUILD_IOS_APP_VERSION: job.version?.appVersion,\n }),\n };\n const env = pickBy(unfilteredEnv, (val?: string): val is string => !!val);\n\n let artifacts: Artifacts | undefined;\n switch (job.platform) {\n case Platform.ANDROID: {\n artifacts = await buildAndroidAsync(job, { env, workingdir, metadata });\n break;\n }\n case Platform.IOS: {\n artifacts = await buildIosAsync(job, { env, workingdir, metadata });\n break;\n }\n }\n if (!config.skipNativeBuild) {\n console.log();\n console.log(chalk.green('Build successful'));\n console.log(\n chalk.green(\n `You can find the build artifacts in ${nullthrows(artifacts.APPLICATION_ARCHIVE)}`\n )\n );\n }\n } catch (e: any) {\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"]}
@@ -61,7 +61,7 @@ const validators = [
61
61
  warn('Yarn version in your eas.json does not match the yarn currently installed in your system');
62
62
  }
63
63
  }
64
- catch (err) {
64
+ catch {
65
65
  warn("Yarn is not available, make sure it's installed and in your PATH");
66
66
  }
67
67
  },
@@ -84,7 +84,13 @@ const validators = [
84
84
  try {
85
85
  await (0, spawn_async_1.default)('fastlane', ['--version'], {
86
86
  stdio: 'pipe',
87
- env: Object.assign(Object.assign({}, process.env), { FASTLANE_DISABLE_COLORS: '1', FASTLANE_SKIP_UPDATE_CHECK: '1', SKIP_SLOW_FASTLANE_WARNING: 'true', FASTLANE_HIDE_TIMESTAMP: 'true' }),
87
+ env: {
88
+ ...process.env,
89
+ FASTLANE_DISABLE_COLORS: '1',
90
+ FASTLANE_SKIP_UPDATE_CHECK: '1',
91
+ SKIP_SLOW_FASTLANE_WARNING: 'true',
92
+ FASTLANE_HIDE_TIMESTAMP: 'true',
93
+ },
88
94
  });
89
95
  }
90
96
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"checkRuntime.js","sourceRoot":"","sources":["../src/checkRuntime.ts"],"names":[],"mappings":"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","sourcesContent":["import { Job, Platform } from '@expo/eas-build-job';\nimport chalk from 'chalk';\nimport spawnAsync from '@expo/spawn-async';\nimport fs from 'fs-extra';\n\ninterface Validator {\n platform?: Platform;\n checkAsync: (job: Job) => Promise<void>;\n}\n\nfunction warn(msg: string): void {\n console.log(chalk.yellow(msg));\n}\n\nfunction error(msg: string): void {\n console.error(chalk.red(msg));\n}\n\nconst validators: Validator[] = [\n {\n async checkAsync(job: Job) {\n if (job.platform === Platform.IOS && process.platform !== 'darwin') {\n throw new Error('iOS builds can only be run on macOS.');\n } else if (\n job.platform === Platform.ANDROID &&\n !['linux', 'darwin'].includes(process.platform)\n ) {\n throw new Error('Android builds are supported only on Linux and macOS');\n }\n },\n },\n {\n async checkAsync(job: Job) {\n try {\n const version = (await spawnAsync('node', ['--version'], { stdio: 'pipe' })).stdout.trim();\n const sanitizedVersion = version.startsWith('v') ? version.slice(1) : version;\n const versionFromJob = job.builderEnvironment?.node;\n if (versionFromJob) {\n const sanitizedVersionFromJob = versionFromJob.startsWith('v')\n ? versionFromJob.slice(1)\n : versionFromJob;\n if (sanitizedVersion !== sanitizedVersionFromJob) {\n warn(\n 'Node.js version in your eas.json does not match the Node.js currently installed in your system'\n );\n }\n }\n } catch (err) {\n error(\"Node.js is not available, make sure it's installed and in your PATH\");\n throw err;\n }\n },\n },\n {\n async checkAsync(job: Job) {\n const versionFromJob = job.builderEnvironment?.yarn;\n if (!versionFromJob) {\n return;\n }\n try {\n const version = (await spawnAsync('yarn', ['--version'], { stdio: 'pipe' })).stdout.trim();\n if (versionFromJob !== version) {\n warn(\n 'Yarn version in your eas.json does not match the yarn currently installed in your system'\n );\n }\n } catch (err) {\n warn(\"Yarn is not available, make sure it's installed and in your PATH\");\n }\n },\n },\n {\n platform: Platform.ANDROID,\n async checkAsync(_) {\n if (!process.env.ANDROID_NDK_HOME) {\n warn(\n 'ANDROID_NDK_HOME environment variable was not specified, continuing build without NDK'\n );\n return;\n }\n if (!(await fs.pathExists(process.env.ANDROID_NDK_HOME))) {\n throw new Error(`NDK was not found under ${process.env.ANDROID_NDK_HOME}`);\n }\n },\n },\n {\n platform: Platform.IOS,\n async checkAsync() {\n try {\n await spawnAsync('fastlane', ['--version'], {\n stdio: 'pipe',\n env: {\n ...process.env,\n FASTLANE_DISABLE_COLORS: '1',\n FASTLANE_SKIP_UPDATE_CHECK: '1',\n SKIP_SLOW_FASTLANE_WARNING: 'true',\n FASTLANE_HIDE_TIMESTAMP: 'true',\n },\n });\n } catch (err) {\n error(\"Fastlane is not available, make sure it's installed and in your PATH\");\n throw err;\n }\n },\n },\n {\n platform: Platform.IOS,\n async checkAsync(job: Job) {\n try {\n const version = (await spawnAsync('pod', ['--version'], { stdio: 'pipe' })).stdout.trim();\n const versionFromJob = job.platform === Platform.IOS && job.builderEnvironment?.cocoapods;\n if (versionFromJob && versionFromJob !== version) {\n warn(\n 'Cocoapods version in your eas.json does not match the version currently installed in your system'\n );\n }\n } catch (err) {\n error(\"Cocoapods is not available, make sure it's installed and in your PATH\");\n throw err;\n }\n },\n },\n];\n\nexport async function checkRuntimeAsync(job: Job): Promise<void> {\n for (const validator of validators) {\n if (validator.platform === job.platform || !validator.platform) {\n await validator.checkAsync(job);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"checkRuntime.js","sourceRoot":"","sources":["../src/checkRuntime.ts"],"names":[],"mappings":"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","sourcesContent":["import { Job, Platform } from '@expo/eas-build-job';\nimport chalk from 'chalk';\nimport spawnAsync from '@expo/spawn-async';\nimport fs from 'fs-extra';\n\ninterface Validator {\n platform?: Platform;\n checkAsync: (job: Job) => Promise<void>;\n}\n\nfunction warn(msg: string): void {\n console.log(chalk.yellow(msg));\n}\n\nfunction error(msg: string): void {\n console.error(chalk.red(msg));\n}\n\nconst validators: Validator[] = [\n {\n async checkAsync(job: Job) {\n if (job.platform === Platform.IOS && process.platform !== 'darwin') {\n throw new Error('iOS builds can only be run on macOS.');\n } else if (\n job.platform === Platform.ANDROID &&\n !['linux', 'darwin'].includes(process.platform)\n ) {\n throw new Error('Android builds are supported only on Linux and macOS');\n }\n },\n },\n {\n async checkAsync(job: Job) {\n try {\n const version = (await spawnAsync('node', ['--version'], { stdio: 'pipe' })).stdout.trim();\n const sanitizedVersion = version.startsWith('v') ? version.slice(1) : version;\n const versionFromJob = job.builderEnvironment?.node;\n if (versionFromJob) {\n const sanitizedVersionFromJob = versionFromJob.startsWith('v')\n ? versionFromJob.slice(1)\n : versionFromJob;\n if (sanitizedVersion !== sanitizedVersionFromJob) {\n warn(\n 'Node.js version in your eas.json does not match the Node.js currently installed in your system'\n );\n }\n }\n } catch (err) {\n error(\"Node.js is not available, make sure it's installed and in your PATH\");\n throw err;\n }\n },\n },\n {\n async checkAsync(job: Job) {\n const versionFromJob = job.builderEnvironment?.yarn;\n if (!versionFromJob) {\n return;\n }\n try {\n const version = (await spawnAsync('yarn', ['--version'], { stdio: 'pipe' })).stdout.trim();\n if (versionFromJob !== version) {\n warn(\n 'Yarn version in your eas.json does not match the yarn currently installed in your system'\n );\n }\n } catch {\n warn(\"Yarn is not available, make sure it's installed and in your PATH\");\n }\n },\n },\n {\n platform: Platform.ANDROID,\n async checkAsync(_) {\n if (!process.env.ANDROID_NDK_HOME) {\n warn(\n 'ANDROID_NDK_HOME environment variable was not specified, continuing build without NDK'\n );\n return;\n }\n if (!(await fs.pathExists(process.env.ANDROID_NDK_HOME))) {\n throw new Error(`NDK was not found under ${process.env.ANDROID_NDK_HOME}`);\n }\n },\n },\n {\n platform: Platform.IOS,\n async checkAsync() {\n try {\n await spawnAsync('fastlane', ['--version'], {\n stdio: 'pipe',\n env: {\n ...process.env,\n FASTLANE_DISABLE_COLORS: '1',\n FASTLANE_SKIP_UPDATE_CHECK: '1',\n SKIP_SLOW_FASTLANE_WARNING: 'true',\n FASTLANE_HIDE_TIMESTAMP: 'true',\n },\n });\n } catch (err) {\n error(\"Fastlane is not available, make sure it's installed and in your PATH\");\n throw err;\n }\n },\n },\n {\n platform: Platform.IOS,\n async checkAsync(job: Job) {\n try {\n const version = (await spawnAsync('pod', ['--version'], { stdio: 'pipe' })).stdout.trim();\n const versionFromJob = job.platform === Platform.IOS && job.builderEnvironment?.cocoapods;\n if (versionFromJob && versionFromJob !== version) {\n warn(\n 'Cocoapods version in your eas.json does not match the version currently installed in your system'\n );\n }\n } catch (err) {\n error(\"Cocoapods is not available, make sure it's installed and in your PATH\");\n throw err;\n }\n },\n },\n];\n\nexport async function checkRuntimeAsync(job: Job): Promise<void> {\n for (const validator of validators) {\n if (validator.platform === job.platform || !validator.platform) {\n await validator.checkAsync(job);\n }\n }\n}\n"]}
package/dist/expoCli.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  import { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';
2
- export declare function runGlobalExpoCliCommandAsync(command: string, options: SpawnOptions): SpawnPromise<SpawnResult>;
2
+ export declare function runGlobalExpoCliCommandAsync(expoCliArgs: string[], options: SpawnOptions, npmVersionAtLeast7: boolean): SpawnPromise<SpawnResult>;
package/dist/expoCli.js CHANGED
@@ -4,14 +4,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.runGlobalExpoCliCommandAsync = void 0;
7
- const path_1 = __importDefault(require("path"));
8
7
  const turtle_spawn_1 = __importDefault(require("@expo/turtle-spawn"));
9
- const expoCliPackage = require.resolve('expo-cli');
10
- function runGlobalExpoCliCommandAsync(command, options) {
11
- var _a, _b;
12
- const expoCliBinPath = (_a = process.env.EXPO_CLI_PATH) !== null && _a !== void 0 ? _a : path_1.default.resolve(path_1.default.dirname(expoCliPackage), '../bin/expo.js');
13
- (_b = options === null || options === void 0 ? void 0 : options.logger) === null || _b === void 0 ? void 0 : _b.debug(`${expoCliBinPath} ${command}`);
14
- return (0, turtle_spawn_1.default)('bash', ['-c', `${expoCliBinPath} ${command}`], options);
8
+ const EXPO_CLI_VERSION = '6.0.5';
9
+ function runGlobalExpoCliCommandAsync(expoCliArgs, options, npmVersionAtLeast7) {
10
+ var _a;
11
+ if (process.env.EXPO_CLI_PATH) {
12
+ const expoCliBinPath = process.env.EXPO_CLI_PATH;
13
+ const expoCliCommandWithArgs = expoCliArgs.join(' ');
14
+ (_a = options === null || options === void 0 ? void 0 : options.logger) === null || _a === void 0 ? void 0 : _a.debug(`${expoCliBinPath} ${expoCliCommandWithArgs}`);
15
+ return (0, turtle_spawn_1.default)('bash', ['-c', `${expoCliBinPath} ${expoCliCommandWithArgs}`], options);
16
+ }
17
+ else {
18
+ const args = [`expo-cli@${EXPO_CLI_VERSION}`, ...expoCliArgs];
19
+ if (npmVersionAtLeast7) {
20
+ // npx shipped with npm >= 7.0.0 requires the "-y" flag to run commands without
21
+ // prompting the user to install a package that is used for the first time
22
+ args.unshift('-y');
23
+ }
24
+ return (0, turtle_spawn_1.default)('npx', args, options);
25
+ }
15
26
  }
16
27
  exports.runGlobalExpoCliCommandAsync = runGlobalExpoCliCommandAsync;
17
28
  //# sourceMappingURL=expoCli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"expoCli.js","sourceRoot":"","sources":["../src/expoCli.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,sEAAyF;AAEzF,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAEnD,SAAgB,4BAA4B,CAC1C,OAAe,EACf,OAAqB;;IAErB,MAAM,cAAc,GAClB,MAAA,OAAO,CAAC,GAAG,CAAC,aAAa,mCAAI,cAAI,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC5F,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,KAAK,CAAC,GAAG,cAAc,IAAI,OAAO,EAAE,CAAC,CAAC;IACvD,OAAO,IAAA,sBAAU,EAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,cAAc,IAAI,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC;AARD,oEAQC","sourcesContent":["import path from 'path';\n\nimport spawnAsync, { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';\n\nconst expoCliPackage = require.resolve('expo-cli');\n\nexport function runGlobalExpoCliCommandAsync(\n command: string,\n options: SpawnOptions\n): SpawnPromise<SpawnResult> {\n const expoCliBinPath =\n process.env.EXPO_CLI_PATH ?? path.resolve(path.dirname(expoCliPackage), '../bin/expo.js');\n options?.logger?.debug(`${expoCliBinPath} ${command}`);\n return spawnAsync('bash', ['-c', `${expoCliBinPath} ${command}`], options);\n}\n"]}
1
+ {"version":3,"file":"expoCli.js","sourceRoot":"","sources":["../src/expoCli.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAyF;AAEzF,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAEjC,SAAgB,4BAA4B,CAC1C,WAAqB,EACrB,OAAqB,EACrB,kBAA2B;;IAE3B,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE;QAC7B,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QACjD,MAAM,sBAAsB,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrD,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,KAAK,CAAC,GAAG,cAAc,IAAI,sBAAsB,EAAE,CAAC,CAAC;QACtE,OAAO,IAAA,sBAAU,EAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,cAAc,IAAI,sBAAsB,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;KAC3F;SAAM;QACL,MAAM,IAAI,GAAG,CAAC,YAAY,gBAAgB,EAAE,EAAE,GAAG,WAAW,CAAC,CAAC;QAC9D,IAAI,kBAAkB,EAAE;YACtB,+EAA+E;YAC/E,0EAA0E;YAC1E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACpB;QACD,OAAO,IAAA,sBAAU,EAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACzC;AACH,CAAC;AAnBD,oEAmBC","sourcesContent":["import spawnAsync, { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';\n\nconst EXPO_CLI_VERSION = '6.0.5';\n\nexport function runGlobalExpoCliCommandAsync(\n expoCliArgs: string[],\n options: SpawnOptions,\n npmVersionAtLeast7: boolean\n): SpawnPromise<SpawnResult> {\n if (process.env.EXPO_CLI_PATH) {\n const expoCliBinPath = process.env.EXPO_CLI_PATH;\n const expoCliCommandWithArgs = expoCliArgs.join(' ');\n options?.logger?.debug(`${expoCliBinPath} ${expoCliCommandWithArgs}`);\n return spawnAsync('bash', ['-c', `${expoCliBinPath} ${expoCliCommandWithArgs}`], options);\n } else {\n const args = [`expo-cli@${EXPO_CLI_VERSION}`, ...expoCliArgs];\n if (npmVersionAtLeast7) {\n // npx shipped with npm >= 7.0.0 requires the \"-y\" flag to run commands without\n // prompting the user to install a package that is used for the first time\n args.unshift('-y');\n }\n return spawnAsync('npx', args, options);\n }\n}\n"]}
package/dist/ios.js CHANGED
@@ -38,7 +38,11 @@ async function buildIosAsync(job, { workingdir, env: baseEnv, metadata }) {
38
38
  var _a, _b;
39
39
  const buildNumber = (_a = job.version) === null || _a === void 0 ? void 0 : _a.buildNumber;
40
40
  const appVersion = (_b = job.version) === null || _b === void 0 ? void 0 : _b.appVersion;
41
- const env = Object.assign(Object.assign(Object.assign({}, baseEnv), (buildNumber && { EAS_BUILD_IOS_BUILD_NUMBER: buildNumber })), (appVersion && { EAS_BUILD_IOS_APP_VERSION: appVersion }));
41
+ const env = {
42
+ ...baseEnv,
43
+ ...(buildNumber && { EAS_BUILD_IOS_BUILD_NUMBER: buildNumber }),
44
+ ...(appVersion && { EAS_BUILD_IOS_APP_VERSION: appVersion }),
45
+ };
42
46
  const ctx = new build_tools_1.BuildContext(job, {
43
47
  workingdir,
44
48
  logger: logger_1.default,
package/dist/ios.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ios.js","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAA2D;AAC3D,mDAAoF;AAEpF,uDAA+B;AAE/B,uCAAyD;AACzD,mDAA6C;AAE7C,2CAA+C;AAC/C,sDAA8B;AAEvB,KAAK,UAAU,aAAa,CACjC,GAAY,EACZ,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAe;;IAEnD,MAAM,WAAW,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAE,WAAW,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAE,UAAU,CAAC;IAC3C,MAAM,GAAG,iDACJ,OAAO,GACP,CAAC,WAAW,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,CAAC,GAC5D,CAAC,UAAU,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC,CAC7D,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,0BAAY,CAAU,GAAG,EAAE;QACzC,UAAU;QACV,MAAM,EAAN,gBAAM;QACN,SAAS,EAAT,kBAAS;QACT,uBAAuB,EAAE,sCAA4B;QACrD,eAAe,EAAE,KAAK,EAAE,IAAkB,EAAE,KAAe,EAAE,MAAe,EAAE,EAAE;YAC9E,IAAI,IAAI,KAAK,0BAAY,CAAC,mBAAmB,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,MAAM,IAAA,4BAAgB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC9C;QACH,CAAC;QACD,GAAG;QACH,QAAQ;QACR,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,IAAA,cAAI,EAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,sBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAjCD,sCAiCC","sourcesContent":["import { Ios, BuildPhase, Env } from '@expo/eas-build-job';\nimport { Builders, BuildContext, ArtifactType, Artifacts } from '@expo/build-tools';\nimport { bunyan } from '@expo/logger';\nimport omit from 'lodash/omit';\n\nimport { runGlobalExpoCliCommandAsync } from './expoCli';\nimport logger, { logBuffer } from './logger';\nimport { BuildParams } from './types';\nimport { prepareArtifacts } from './artifacts';\nimport config from './config';\n\nexport async function buildIosAsync(\n job: Ios.Job,\n { workingdir, env: baseEnv, metadata }: BuildParams\n): Promise<Artifacts> {\n const buildNumber = job.version?.buildNumber;\n const appVersion = job.version?.appVersion;\n const env: Env = {\n ...baseEnv,\n ...(buildNumber && { EAS_BUILD_IOS_BUILD_NUMBER: buildNumber }),\n ...(appVersion && { EAS_BUILD_IOS_APP_VERSION: appVersion }),\n };\n const ctx = new BuildContext<Ios.Job>(job, {\n workingdir,\n logger,\n logBuffer,\n runGlobalExpoCliCommand: runGlobalExpoCliCommandAsync,\n uploadArtifacts: async (type: ArtifactType, paths: string[], logger?: bunyan) => {\n if (type !== ArtifactType.APPLICATION_ARCHIVE) {\n return null;\n } else {\n return await prepareArtifacts(paths, logger);\n }\n },\n env,\n metadata,\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 return await Builders.iosBuilder(ctx);\n}\n"]}
1
+ {"version":3,"file":"ios.js","sourceRoot":"","sources":["../src/ios.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uDAA2D;AAC3D,mDAAoF;AAEpF,uDAA+B;AAE/B,uCAAyD;AACzD,mDAA6C;AAE7C,2CAA+C;AAC/C,sDAA8B;AAEvB,KAAK,UAAU,aAAa,CACjC,GAAY,EACZ,EAAE,UAAU,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAe;;IAEnD,MAAM,WAAW,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAE,WAAW,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAA,GAAG,CAAC,OAAO,0CAAE,UAAU,CAAC;IAC3C,MAAM,GAAG,GAAQ;QACf,GAAG,OAAO;QACV,GAAG,CAAC,WAAW,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,CAAC;QAC/D,GAAG,CAAC,UAAU,IAAI,EAAE,yBAAyB,EAAE,UAAU,EAAE,CAAC;KAC7D,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,0BAAY,CAAU,GAAG,EAAE;QACzC,UAAU;QACV,MAAM,EAAN,gBAAM;QACN,SAAS,EAAT,kBAAS;QACT,uBAAuB,EAAE,sCAA4B;QACrD,eAAe,EAAE,KAAK,EAAE,IAAkB,EAAE,KAAe,EAAE,MAAe,EAAE,EAAE;YAC9E,IAAI,IAAI,KAAK,0BAAY,CAAC,mBAAmB,EAAE;gBAC7C,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,MAAM,IAAA,4BAAgB,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aAC9C;QACH,CAAC;QACD,GAAG;QACH,QAAQ;QACR,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,IAAA,cAAI,EAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,sBAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAjCD,sCAiCC","sourcesContent":["import { Ios, BuildPhase, Env } from '@expo/eas-build-job';\nimport { Builders, BuildContext, ArtifactType, Artifacts } from '@expo/build-tools';\nimport { bunyan } from '@expo/logger';\nimport omit from 'lodash/omit';\n\nimport { runGlobalExpoCliCommandAsync } from './expoCli';\nimport logger, { logBuffer } from './logger';\nimport { BuildParams } from './types';\nimport { prepareArtifacts } from './artifacts';\nimport config from './config';\n\nexport async function buildIosAsync(\n job: Ios.Job,\n { workingdir, env: baseEnv, metadata }: BuildParams\n): Promise<Artifacts> {\n const buildNumber = job.version?.buildNumber;\n const appVersion = job.version?.appVersion;\n const env: Env = {\n ...baseEnv,\n ...(buildNumber && { EAS_BUILD_IOS_BUILD_NUMBER: buildNumber }),\n ...(appVersion && { EAS_BUILD_IOS_APP_VERSION: appVersion }),\n };\n const ctx = new BuildContext<Ios.Job>(job, {\n workingdir,\n logger,\n logBuffer,\n runGlobalExpoCliCommand: runGlobalExpoCliCommandAsync,\n uploadArtifacts: async (type: ArtifactType, paths: string[], logger?: bunyan) => {\n if (type !== ArtifactType.APPLICATION_ARCHIVE) {\n return null;\n } else {\n return await prepareArtifacts(paths, logger);\n }\n },\n env,\n metadata,\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 return await Builders.iosBuilder(ctx);\n}\n"]}
@@ -53,7 +53,7 @@ function validateParams(params) {
53
53
  try {
54
54
  const job = (0, eas_build_job_1.sanitizeJob)(value.job);
55
55
  const metadata = (0, eas_build_job_1.sanitizeMetadata)(value.metadata);
56
- return Object.assign(Object.assign({}, value), { job, metadata });
56
+ return { ...value, job, metadata };
57
57
  }
58
58
  catch (err) {
59
59
  console.log(`Currently using ${packageJson.name}@${packageJson.version}.`);
@@ -1 +1 @@
1
- {"version":3,"file":"parseInput.js","sourceRoot":"","sources":["../src/parseInput.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Job,\n sanitizeJob,\n ArchiveSourceType,\n Metadata,\n sanitizeMetadata,\n} 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 metadata: Metadata;\n}\n\nconst ParamsSchema = Joi.object<Params>({\n job: Joi.object().unknown(),\n metadata: 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 const metadata = sanitizeMetadata(value.metadata);\n return { ...value, job, metadata };\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"]}
1
+ {"version":3,"file":"parseInput.js","sourceRoot":"","sources":["../src/parseInput.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Job,\n sanitizeJob,\n ArchiveSourceType,\n Metadata,\n sanitizeMetadata,\n} 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 metadata: Metadata;\n}\n\nconst ParamsSchema = Joi.object<Params>({\n job: Joi.object().unknown(),\n metadata: 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 const metadata = sanitizeMetadata(value.metadata);\n return { ...value, job, metadata };\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.128",
3
+ "version": "0.0.129",
4
4
  "description": "Tool for running EAS compatible builds on a local machine.",
5
5
  "main": "dist/main.js",
6
6
  "bin": {
@@ -10,7 +10,8 @@
10
10
  "start": "yarn watch",
11
11
  "watch": "tsc --watch --preserveWatchOutput",
12
12
  "build": "tsc",
13
- "prepack": "rm -rf dist && tsc -p tsconfig.build.json"
13
+ "prepack": "rm -rf dist && tsc -p tsconfig.build.json",
14
+ "clean": "rm -rf node_modules dist coverage"
14
15
  },
15
16
  "engines": {
16
17
  "node": ">=12.9.0"
@@ -19,35 +20,34 @@
19
20
  "bugs": "https://github.com/expo/eas-build/issues",
20
21
  "license": "BUSL-1.1",
21
22
  "dependencies": {
22
- "@expo/build-tools": "0.1.171",
23
+ "@expo/build-tools": "0.1.172",
23
24
  "@expo/bunyan": "^4.0.0",
24
- "@expo/eas-build-job": "0.2.103",
25
- "@expo/spawn-async": "^1.5.0",
26
- "@expo/turtle-spawn": "0.0.26",
27
- "chalk": "^4.1.0",
28
- "env-paths": "2.2.0",
29
- "expo-cli": "6.0.5",
30
- "fs-extra": "^10.0.1",
31
- "joi": "^17.4.2",
25
+ "@expo/eas-build-job": "0.2.104",
26
+ "@expo/spawn-async": "^1.7.0",
27
+ "@expo/turtle-spawn": "0.0.27",
28
+ "chalk": "^5.2.0",
29
+ "env-paths": "^3.0.0",
30
+ "fs-extra": "^11.1.0",
31
+ "joi": "^17.7.0",
32
32
  "lodash": "^4.17.21",
33
33
  "nullthrows": "^1.1.1",
34
- "semver": "^7.3.5",
35
- "tar": "^6.1.0",
36
- "uuid": "^8.3.2"
34
+ "semver": "^7.3.8",
35
+ "tar": "^6.1.13",
36
+ "uuid": "^9.0.0"
37
37
  },
38
38
  "devDependencies": {
39
- "@types/fs-extra": "^9.0.13",
40
- "@types/hapi__joi": "^17.1.6",
41
- "@types/lodash": "^4.14.168",
42
- "@types/semver": "^7.3.4",
43
- "@types/tar": "^4.0.4",
44
- "@types/uuid": "^8.3.0",
45
- "jest": "^27.5.1",
46
- "ts-jest": "^27.1.3",
47
- "typescript": "^4.6.2"
39
+ "@types/fs-extra": "^11.0.1",
40
+ "@types/hapi__joi": "^17.1.9",
41
+ "@types/lodash": "^4.14.191",
42
+ "@types/semver": "^7.3.13",
43
+ "@types/tar": "^6.1.3",
44
+ "@types/uuid": "^9.0.0",
45
+ "jest": "^29.4.0",
46
+ "ts-jest": "^29.0.5",
47
+ "typescript": "^4.9.4"
48
48
  },
49
49
  "volta": {
50
- "node": "16.13.2",
51
- "yarn": "1.22.17"
50
+ "node": "18.13.0",
51
+ "yarn": "1.22.19"
52
52
  }
53
53
  }
@@ -64,7 +64,7 @@ const validators: Validator[] = [
64
64
  'Yarn version in your eas.json does not match the yarn currently installed in your system'
65
65
  );
66
66
  }
67
- } catch (err) {
67
+ } catch {
68
68
  warn("Yarn is not available, make sure it's installed and in your PATH");
69
69
  }
70
70
  },
package/src/expoCli.ts CHANGED
@@ -1,15 +1,24 @@
1
- import path from 'path';
2
-
3
1
  import spawnAsync, { SpawnOptions, SpawnPromise, SpawnResult } from '@expo/turtle-spawn';
4
2
 
5
- const expoCliPackage = require.resolve('expo-cli');
3
+ const EXPO_CLI_VERSION = '6.0.5';
6
4
 
7
5
  export function runGlobalExpoCliCommandAsync(
8
- command: string,
9
- options: SpawnOptions
6
+ expoCliArgs: string[],
7
+ options: SpawnOptions,
8
+ npmVersionAtLeast7: boolean
10
9
  ): SpawnPromise<SpawnResult> {
11
- const expoCliBinPath =
12
- process.env.EXPO_CLI_PATH ?? path.resolve(path.dirname(expoCliPackage), '../bin/expo.js');
13
- options?.logger?.debug(`${expoCliBinPath} ${command}`);
14
- return spawnAsync('bash', ['-c', `${expoCliBinPath} ${command}`], options);
10
+ if (process.env.EXPO_CLI_PATH) {
11
+ const expoCliBinPath = process.env.EXPO_CLI_PATH;
12
+ const expoCliCommandWithArgs = expoCliArgs.join(' ');
13
+ options?.logger?.debug(`${expoCliBinPath} ${expoCliCommandWithArgs}`);
14
+ return spawnAsync('bash', ['-c', `${expoCliBinPath} ${expoCliCommandWithArgs}`], options);
15
+ } else {
16
+ const args = [`expo-cli@${EXPO_CLI_VERSION}`, ...expoCliArgs];
17
+ if (npmVersionAtLeast7) {
18
+ // npx shipped with npm >= 7.0.0 requires the "-y" flag to run commands without
19
+ // prompting the user to install a package that is used for the first time
20
+ args.unshift('-y');
21
+ }
22
+ return spawnAsync('npx', args, options);
23
+ }
15
24
  }