eas-cli-local-build-plugin 0.0.97 → 0.0.100
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/build.d.ts +2 -2
- package/dist/build.js +16 -3
- package/dist/build.js.map +1 -1
- package/dist/main.js +2 -2
- package/dist/main.js.map +1 -1
- package/dist/parseInput.d.ts +2 -1
- package/dist/parseInput.js +3 -1
- package/dist/parseInput.js.map +1 -1
- package/package.json +2 -2
- package/src/build.ts +26 -4
- package/src/main.ts +2 -2
- package/src/parseInput.ts +11 -2
package/dist/build.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Job } from '@expo/eas-build-job';
|
|
2
|
-
export declare function buildAsync(job: Job): Promise<void>;
|
|
1
|
+
import { Job, Metadata } from '@expo/eas-build-job';
|
|
2
|
+
export declare function buildAsync(job: Job, metadata: Metadata): Promise<void>;
|
package/dist/build.js
CHANGED
|
@@ -14,11 +14,24 @@ const android_1 = require("./android");
|
|
|
14
14
|
const config_1 = __importDefault(require("./config"));
|
|
15
15
|
const ios_1 = require("./ios");
|
|
16
16
|
const workingdir_1 = require("./workingdir");
|
|
17
|
-
async function buildAsync(job) {
|
|
18
|
-
var _a;
|
|
17
|
+
async function buildAsync(job, metadata) {
|
|
18
|
+
var _a, _b, _c, _d, _e;
|
|
19
19
|
const workingdir = await (0, workingdir_1.prepareWorkingdirAsync)();
|
|
20
20
|
try {
|
|
21
|
-
|
|
21
|
+
let username = metadata.username;
|
|
22
|
+
if (!username && job.type === eas_build_job_1.Workflow.MANAGED) {
|
|
23
|
+
username = job.username;
|
|
24
|
+
}
|
|
25
|
+
// keep in sync with worker env vars
|
|
26
|
+
// https://github.com/expo/turtle-v2/blob/main/src/services/worker/src/env.ts
|
|
27
|
+
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 && {
|
|
28
|
+
EAS_BUILD_ANDROID_VERSION_CODE: (_b = job.version) === null || _b === void 0 ? void 0 : _b.versionCode,
|
|
29
|
+
EAS_BUILD_ANDROID_VERSION_NAME: (_c = job.version) === null || _c === void 0 ? void 0 : _c.versionName,
|
|
30
|
+
})), (job.platform === eas_build_job_1.Platform.IOS && {
|
|
31
|
+
EAS_BUILD_IOS_BUILD_NUMBER: (_d = job.version) === null || _d === void 0 ? void 0 : _d.buildNumber,
|
|
32
|
+
EAS_BUILD_IOS_APP_VERSION: (_e = job.version) === null || _e === void 0 ? void 0 : _e.appVersion,
|
|
33
|
+
}));
|
|
34
|
+
const env = (0, pickBy_1.default)(unfilteredEnv, (val) => !!val);
|
|
22
35
|
let artifactPath;
|
|
23
36
|
switch (job.platform) {
|
|
24
37
|
case eas_build_job_1.Platform.ANDROID: {
|
package/dist/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,
|
|
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 { 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, 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 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: 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"]}
|
package/dist/main.js
CHANGED
|
@@ -11,9 +11,9 @@ const checkRuntime_1 = require("./checkRuntime");
|
|
|
11
11
|
(0, exit_1.listenForInterrupts)();
|
|
12
12
|
async function main() {
|
|
13
13
|
try {
|
|
14
|
-
const { job } = await (0, parseInput_1.parseInputAsync)();
|
|
14
|
+
const { job, metadata } = await (0, parseInput_1.parseInputAsync)();
|
|
15
15
|
await (0, checkRuntime_1.checkRuntimeAsync)(job);
|
|
16
|
-
await (0, build_1.buildAsync)(job);
|
|
16
|
+
await (0, build_1.buildAsync)(job, metadata);
|
|
17
17
|
}
|
|
18
18
|
catch (err) {
|
|
19
19
|
if (!(0, exit_1.shouldExit)()) {
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAE1B,6CAA+C;AAC/C,mCAAqC;AACrC,iCAAyD;AACzD,iDAAmD;AAEnD,IAAA,0BAAmB,GAAE,CAAC;AAEtB,KAAK,UAAU,IAAI;IACjB,IAAI;QACF,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAA,4BAAe,GAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAE1B,6CAA+C;AAC/C,mCAAqC;AACrC,iCAAyD;AACzD,iDAAmD;AAEnD,IAAA,0BAAmB,GAAE,CAAC;AAEtB,KAAK,UAAU,IAAI;IACjB,IAAI;QACF,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,4BAAe,GAAE,CAAC;QAClD,MAAM,IAAA,gCAAiB,EAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAA,kBAAU,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;KACjC;IAAC,OAAO,GAAQ,EAAE;QACjB,IAAI,CAAC,IAAA,iBAAU,GAAE,EAAE;YACjB,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;KACF;AACH,CAAC;AAED,KAAK,IAAI,EAAE,CAAC","sourcesContent":["import chalk from 'chalk';\n\nimport { parseInputAsync } from './parseInput';\nimport { buildAsync } from './build';\nimport { listenForInterrupts, shouldExit } from './exit';\nimport { checkRuntimeAsync } from './checkRuntime';\n\nlistenForInterrupts();\n\nasync function main(): Promise<void> {\n try {\n const { job, metadata } = await parseInputAsync();\n await checkRuntimeAsync(job);\n await buildAsync(job, metadata);\n } catch (err: any) {\n if (!shouldExit()) {\n console.error(chalk.red(err.message));\n process.exit(1);\n }\n }\n}\n\nvoid main();\n"]}
|
package/dist/parseInput.d.ts
CHANGED
package/dist/parseInput.js
CHANGED
|
@@ -12,6 +12,7 @@ const exit_1 = require("./exit");
|
|
|
12
12
|
const packageJson = require('../package.json');
|
|
13
13
|
const ParamsSchema = joi_1.default.object({
|
|
14
14
|
job: joi_1.default.object().unknown(),
|
|
15
|
+
metadata: joi_1.default.object().unknown(),
|
|
15
16
|
});
|
|
16
17
|
async function parseInputAsync() {
|
|
17
18
|
if (process.argv.findIndex((arg) => arg === '--version' || arg === '-v') !== -1) {
|
|
@@ -51,7 +52,8 @@ function validateParams(params) {
|
|
|
51
52
|
}
|
|
52
53
|
try {
|
|
53
54
|
const job = (0, eas_build_job_1.sanitizeJob)(value.job);
|
|
54
|
-
|
|
55
|
+
const metadata = (0, eas_build_job_1.sanitizeMetadata)(value.metadata);
|
|
56
|
+
return Object.assign(Object.assign({}, value), { job, metadata });
|
|
55
57
|
}
|
|
56
58
|
catch (err) {
|
|
57
59
|
console.log(`Currently using ${packageJson.name}@${packageJson.version}.`);
|
package/dist/parseInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseInput.js","sourceRoot":"","sources":["../src/parseInput.ts"],"names":[],"mappings":";;;;;;AAAA,
|
|
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.
|
|
3
|
+
"version": "0.0.100",
|
|
4
4
|
"description": "Tool for running EAS compatible builds on a local machine.",
|
|
5
5
|
"main": "dist/main.js",
|
|
6
6
|
"bin": {
|
|
@@ -19,7 +19,7 @@
|
|
|
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.143",
|
|
23
23
|
"@expo/bunyan": "^4.0.0",
|
|
24
24
|
"@expo/eas-build-job": "0.2.85",
|
|
25
25
|
"@expo/spawn-async": "^1.5.0",
|
package/src/build.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
|
|
3
|
-
import { Job, Platform, ArchiveSourceType } from '@expo/eas-build-job';
|
|
3
|
+
import { Job, Platform, ArchiveSourceType, Metadata, Workflow } from '@expo/eas-build-job';
|
|
4
4
|
import pickBy from 'lodash/pickBy';
|
|
5
5
|
import fs from 'fs-extra';
|
|
6
6
|
import chalk from 'chalk';
|
|
@@ -11,16 +11,38 @@ import config from './config';
|
|
|
11
11
|
import { buildIosAsync } from './ios';
|
|
12
12
|
import { prepareWorkingdirAsync } from './workingdir';
|
|
13
13
|
|
|
14
|
-
export async function buildAsync(job: Job): Promise<void> {
|
|
14
|
+
export async function buildAsync(job: Job, metadata: Metadata): Promise<void> {
|
|
15
15
|
const workingdir = await prepareWorkingdirAsync();
|
|
16
16
|
|
|
17
17
|
try {
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
let username = metadata.username;
|
|
19
|
+
if (!username && job.type === Workflow.MANAGED) {
|
|
20
|
+
username = job.username;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
// keep in sync with worker env vars
|
|
24
|
+
// https://github.com/expo/turtle-v2/blob/main/src/services/worker/src/env.ts
|
|
25
|
+
const unfilteredEnv: Record<string, string | undefined> = {
|
|
26
|
+
...process.env,
|
|
20
27
|
...job.builderEnvironment?.env,
|
|
21
28
|
EAS_BUILD: '1',
|
|
29
|
+
EAS_BUILD_RUNNER: 'local-build-plugin',
|
|
30
|
+
EAS_BUILD_PLATFORM: job.platform,
|
|
22
31
|
EAS_BUILD_WORKINGDIR: path.join(workingdir, 'build'),
|
|
32
|
+
EAS_BUILD_PROFILE: metadata.buildProfile,
|
|
33
|
+
EAS_BUILD_GIT_COMMIT_HASH: metadata.gitCommitHash,
|
|
34
|
+
EAS_BUILD_USERNAME: username,
|
|
35
|
+
...(job.platform === Platform.ANDROID && {
|
|
36
|
+
EAS_BUILD_ANDROID_VERSION_CODE: job.version?.versionCode,
|
|
37
|
+
EAS_BUILD_ANDROID_VERSION_NAME: job.version?.versionName,
|
|
38
|
+
}),
|
|
39
|
+
...(job.platform === Platform.IOS && {
|
|
40
|
+
EAS_BUILD_IOS_BUILD_NUMBER: job.version?.buildNumber,
|
|
41
|
+
EAS_BUILD_IOS_APP_VERSION: job.version?.appVersion,
|
|
42
|
+
}),
|
|
23
43
|
};
|
|
44
|
+
const env = pickBy(unfilteredEnv, (val?: string): val is string => !!val);
|
|
45
|
+
|
|
24
46
|
let artifactPath: string | undefined;
|
|
25
47
|
switch (job.platform) {
|
|
26
48
|
case Platform.ANDROID: {
|
package/src/main.ts
CHANGED
|
@@ -9,9 +9,9 @@ listenForInterrupts();
|
|
|
9
9
|
|
|
10
10
|
async function main(): Promise<void> {
|
|
11
11
|
try {
|
|
12
|
-
const { job } = await parseInputAsync();
|
|
12
|
+
const { job, metadata } = await parseInputAsync();
|
|
13
13
|
await checkRuntimeAsync(job);
|
|
14
|
-
await buildAsync(job);
|
|
14
|
+
await buildAsync(job, metadata);
|
|
15
15
|
} catch (err: any) {
|
|
16
16
|
if (!shouldExit()) {
|
|
17
17
|
console.error(chalk.red(err.message));
|
package/src/parseInput.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Job,
|
|
3
|
+
sanitizeJob,
|
|
4
|
+
ArchiveSourceType,
|
|
5
|
+
Metadata,
|
|
6
|
+
sanitizeMetadata,
|
|
7
|
+
} from '@expo/eas-build-job';
|
|
2
8
|
import Joi from 'joi';
|
|
3
9
|
import chalk from 'chalk';
|
|
4
10
|
import fs from 'fs-extra';
|
|
@@ -9,10 +15,12 @@ const packageJson = require('../package.json');
|
|
|
9
15
|
|
|
10
16
|
interface Params {
|
|
11
17
|
job: Job;
|
|
18
|
+
metadata: Metadata;
|
|
12
19
|
}
|
|
13
20
|
|
|
14
21
|
const ParamsSchema = Joi.object<Params>({
|
|
15
22
|
job: Joi.object().unknown(),
|
|
23
|
+
metadata: Joi.object().unknown(),
|
|
16
24
|
});
|
|
17
25
|
|
|
18
26
|
export async function parseInputAsync(): Promise<Params> {
|
|
@@ -53,7 +61,8 @@ function validateParams(params: object): Params {
|
|
|
53
61
|
}
|
|
54
62
|
try {
|
|
55
63
|
const job = sanitizeJob(value.job);
|
|
56
|
-
|
|
64
|
+
const metadata = sanitizeMetadata(value.metadata);
|
|
65
|
+
return { ...value, job, metadata };
|
|
57
66
|
} catch (err) {
|
|
58
67
|
console.log(`Currently using ${packageJson.name}@${packageJson.version}.`);
|
|
59
68
|
console.error(
|