From 9b3e3c85d27902c610a75011ae54138ae050a2ab Mon Sep 17 00:00:00 2001 From: Will Schurman Date: Mon, 26 Jan 2026 12:42:50 -0700 Subject: [PATCH] [eas-cli] Add eas preview:go command --- packages/eas-cli/src/commands/preview/go.ts | 22 +++++++++++++++++++ .../src/utils/expodash/__tests__/omit-test.ts | 21 ++++++++++++++++++ packages/eas-cli/src/utils/expodash/omit.ts | 10 +++++++++ 3 files changed, 53 insertions(+) create mode 100644 packages/eas-cli/src/commands/preview/go.ts create mode 100644 packages/eas-cli/src/utils/expodash/__tests__/omit-test.ts create mode 100644 packages/eas-cli/src/utils/expodash/omit.ts diff --git a/packages/eas-cli/src/commands/preview/go.ts b/packages/eas-cli/src/commands/preview/go.ts new file mode 100644 index 0000000000..7874a6bf32 --- /dev/null +++ b/packages/eas-cli/src/commands/preview/go.ts @@ -0,0 +1,22 @@ +import EasCommand from '../../commandUtils/EasCommand'; +import omit from '../../utils/expodash/omit'; +import UpdatePublish from '../update'; + +export default class PreviewGo extends EasCommand { + static override description = 'Publish an update that is compatible with Expo Go'; + + static override flags = omit(UpdatePublish.flags, ['source-maps', 'no-bytecode']); + + static override args = UpdatePublish.args; + + static override contextDefinition = UpdatePublish.contextDefinition; + + static override hidden = true; // hidden for now until feature is settled + + override async runAsync(): Promise { + await this.parse(PreviewGo); // validation only + + const newArgv = [...this.argv, '--source-maps', 'inline', '--no-bytecode']; + await UpdatePublish.run(newArgv, this.config); + } +} diff --git a/packages/eas-cli/src/utils/expodash/__tests__/omit-test.ts b/packages/eas-cli/src/utils/expodash/__tests__/omit-test.ts new file mode 100644 index 0000000000..01a02984b6 --- /dev/null +++ b/packages/eas-cli/src/utils/expodash/__tests__/omit-test.ts @@ -0,0 +1,21 @@ +import omit from '../omit'; + +describe(omit, () => { + it('omits specified keys from an object', () => { + const original = { a: 1, b: 2, c: 3 }; + const result = omit(original, ['b', 'c']); + expect(result).toEqual({ a: 1 }); + }); + + it('returns the same object if no keys are specified', () => { + const original = { a: 1, b: 2, c: 3 }; + const result = omit(original, []); + expect(result).toEqual(original); + }); + + it('handles non-existent keys gracefully', () => { + const original = { a: 1, b: 2, c: 3 }; + const result = omit(original, ['d', 'e'] as any); + expect(result).toEqual(original); + }); +}); diff --git a/packages/eas-cli/src/utils/expodash/omit.ts b/packages/eas-cli/src/utils/expodash/omit.ts new file mode 100644 index 0000000000..282e440845 --- /dev/null +++ b/packages/eas-cli/src/utils/expodash/omit.ts @@ -0,0 +1,10 @@ +export default function omit( + obj: T, + keys: readonly K[] +): Omit { + const newObj = { ...obj }; + for (const key of keys) { + delete newObj[key]; + } + return newObj as Omit; +}