eas-cli 0.38.0 → 0.39.0

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.
Files changed (35) hide show
  1. package/README.md +42 -30
  2. package/build/build/android/configure.d.ts +3 -2
  3. package/build/build/configure.js +1 -1
  4. package/build/build/ios/configure.d.ts +3 -2
  5. package/build/build/ios/version.d.ts +1 -1
  6. package/build/build/ios/version.js +4 -1
  7. package/build/build/local.js +1 -1
  8. package/build/build/metadata.js +14 -0
  9. package/build/commandUtils/EasCommand.js +0 -2
  10. package/build/commands/branch/publish.js +10 -0
  11. package/build/commands/build/configure.js +1 -1
  12. package/build/commands/build/index.js +17 -10
  13. package/build/commands/channel/edit.js +1 -1
  14. package/build/commands/channel/view.js +3 -3
  15. package/build/commands/config.js +1 -1
  16. package/build/commands/diagnostics.d.ts +1 -0
  17. package/build/commands/diagnostics.js +19 -1
  18. package/build/commands/submit.js +1 -1
  19. package/build/commands/update/configure.d.ts +7 -0
  20. package/build/commands/update/configure.js +75 -0
  21. package/build/credentials/ios/actions/AscApiKeyUtils.js +1 -1
  22. package/build/credentials/ios/appstore/ensureAppExists.js +3 -3
  23. package/build/credentials/ios/appstore/entitlements.js +1 -1
  24. package/build/credentials/manager/SelectBuildProfileFromEasJson.js +1 -1
  25. package/build/credentials/manager/SelectIosDistributionTypeGraphqlFromBuildProfile.d.ts +3 -2
  26. package/build/project/ios/scheme.d.ts +3 -2
  27. package/build/project/ios/target.js +32 -7
  28. package/build/submit/ios/AppProduce.js +3 -3
  29. package/build/submit/ios/IosSubmitCommand.js +1 -1
  30. package/build/submit/utils/wait.js +1 -1
  31. package/build/update/utils.js +1 -1
  32. package/build/utils/profiles.d.ts +2 -3
  33. package/build/utils/profiles.js +20 -7
  34. package/oclif.manifest.json +1 -1
  35. package/package.json +13 -13
package/README.md CHANGED
@@ -7,9 +7,9 @@ EAS command line tool
7
7
  [![Downloads/week](https://img.shields.io/npm/dw/eas-cli.svg)](https://npmjs.org/package/eas-cli)
8
8
  [![License](https://img.shields.io/npm/l/eas-cli.svg)](https://github.com/expo/eas-cli/blob/main/package.json)
9
9
 
10
- * [Installation](#installation)
11
- * [Usage](#usage)
12
- * [Commands](#commands)
10
+ - [Installation](#installation)
11
+ - [Usage](#usage)
12
+ - [Commands](#commands)
13
13
 
14
14
  # Installation
15
15
 
@@ -55,6 +55,7 @@ eas --help COMMAND
55
55
  * [`eas secret:delete`](#eas-secretdelete)
56
56
  * [`eas secret:list`](#eas-secretlist)
57
57
  * [`eas submit`](#eas-submit)
58
+ * [`eas update:configure`](#eas-updateconfigure)
58
59
  * [`eas webhook:create`](#eas-webhookcreate)
59
60
  * [`eas webhook:delete [ID]`](#eas-webhookdelete-id)
60
61
  * [`eas webhook:list`](#eas-webhooklist)
@@ -73,7 +74,7 @@ ALIASES
73
74
  $ eas login
74
75
  ```
75
76
 
76
- _See code: [src/commands/account/login.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/account/login.js)_
77
+ _See code: [src/commands/account/login.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/account/login.ts)_
77
78
 
78
79
  ## `eas account:logout`
79
80
 
@@ -87,7 +88,7 @@ ALIASES
87
88
  $ eas logout
88
89
  ```
89
90
 
90
- _See code: [src/commands/account/logout.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/account/logout.js)_
91
+ _See code: [src/commands/account/logout.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/account/logout.ts)_
91
92
 
92
93
  ## `eas account:view`
93
94
 
@@ -101,7 +102,7 @@ ALIASES
101
102
  $ eas whoami
102
103
  ```
103
104
 
104
- _See code: [src/commands/account/view.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/account/view.js)_
105
+ _See code: [src/commands/account/view.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/account/view.ts)_
105
106
 
106
107
  ## `eas analytics [STATUS]`
107
108
 
@@ -112,7 +113,7 @@ USAGE
112
113
  $ eas analytics [STATUS]
113
114
  ```
114
115
 
115
- _See code: [src/commands/analytics.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/analytics.js)_
116
+ _See code: [src/commands/analytics.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/analytics.ts)_
116
117
 
117
118
  ## `eas build`
118
119
 
@@ -146,7 +147,7 @@ OPTIONS
146
147
  --[no-]wait Wait for build(s) to complete
147
148
  ```
148
149
 
149
- _See code: [src/commands/build/index.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/build/index.js)_
150
+ _See code: [src/commands/build/index.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/build/index.ts)_
150
151
 
151
152
  ## `eas build:cancel [BUILD_ID]`
152
153
 
@@ -157,7 +158,7 @@ USAGE
157
158
  $ eas build:cancel [BUILD_ID]
158
159
  ```
159
160
 
160
- _See code: [src/commands/build/cancel.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/build/cancel.js)_
161
+ _See code: [src/commands/build/cancel.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/build/cancel.ts)_
161
162
 
162
163
  ## `eas build:configure`
163
164
 
@@ -171,7 +172,7 @@ OPTIONS
171
172
  -p, --platform=(android|ios|all) Platform to configure
172
173
  ```
173
174
 
174
- _See code: [src/commands/build/configure.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/build/configure.js)_
175
+ _See code: [src/commands/build/configure.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/build/configure.ts)_
175
176
 
176
177
  ## `eas build:list`
177
178
 
@@ -204,7 +205,7 @@ OPTIONS
204
205
  --status=(new|in-queue|in-progress|errored|finished|canceled)
205
206
  ```
206
207
 
207
- _See code: [src/commands/build/list.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/build/list.js)_
208
+ _See code: [src/commands/build/list.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/build/list.ts)_
208
209
 
209
210
  ## `eas build:view [BUILD_ID]`
210
211
 
@@ -218,7 +219,7 @@ OPTIONS
218
219
  --json Enable JSON output, non-JSON messages will be printed to stderr
219
220
  ```
220
221
 
221
- _See code: [src/commands/build/view.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/build/view.js)_
222
+ _See code: [src/commands/build/view.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/build/view.ts)_
222
223
 
223
224
  ## `eas config`
224
225
 
@@ -233,7 +234,7 @@ OPTIONS
233
234
  --profile=profile
234
235
  ```
235
236
 
236
- _See code: [src/commands/config.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/config.js)_
237
+ _See code: [src/commands/config.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/config.ts)_
237
238
 
238
239
  ## `eas credentials`
239
240
 
@@ -244,7 +245,7 @@ USAGE
244
245
  $ eas credentials
245
246
  ```
246
247
 
247
- _See code: [src/commands/credentials.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/credentials.js)_
248
+ _See code: [src/commands/credentials.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/credentials.ts)_
248
249
 
249
250
  ## `eas device:create`
250
251
 
@@ -255,7 +256,7 @@ USAGE
255
256
  $ eas device:create
256
257
  ```
257
258
 
258
- _See code: [src/commands/device/create.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/device/create.js)_
259
+ _See code: [src/commands/device/create.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/device/create.ts)_
259
260
 
260
261
  ## `eas device:list`
261
262
 
@@ -269,7 +270,7 @@ OPTIONS
269
270
  --apple-team-id=apple-team-id
270
271
  ```
271
272
 
272
- _See code: [src/commands/device/list.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/device/list.js)_
273
+ _See code: [src/commands/device/list.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/device/list.ts)_
273
274
 
274
275
  ## `eas device:view [UDID]`
275
276
 
@@ -280,7 +281,7 @@ USAGE
280
281
  $ eas device:view [UDID]
281
282
  ```
282
283
 
283
- _See code: [src/commands/device/view.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/device/view.js)_
284
+ _See code: [src/commands/device/view.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/device/view.ts)_
284
285
 
285
286
  ## `eas diagnostics`
286
287
 
@@ -291,7 +292,7 @@ USAGE
291
292
  $ eas diagnostics
292
293
  ```
293
294
 
294
- _See code: [src/commands/diagnostics.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/diagnostics.js)_
295
+ _See code: [src/commands/diagnostics.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/diagnostics.ts)_
295
296
 
296
297
  ## `eas help [COMMAND]`
297
298
 
@@ -319,7 +320,7 @@ USAGE
319
320
  $ eas project:info
320
321
  ```
321
322
 
322
- _See code: [src/commands/project/info.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/project/info.js)_
323
+ _See code: [src/commands/project/info.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/project/info.ts)_
323
324
 
324
325
  ## `eas project:init`
325
326
 
@@ -333,7 +334,7 @@ ALIASES
333
334
  $ eas init
334
335
  ```
335
336
 
336
- _See code: [src/commands/project/init.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/project/init.js)_
337
+ _See code: [src/commands/project/init.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/project/init.ts)_
337
338
 
338
339
  ## `eas secret:create`
339
340
 
@@ -350,7 +351,7 @@ OPTIONS
350
351
  --value=value Value of the secret
351
352
  ```
352
353
 
353
- _See code: [src/commands/secret/create.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/secret/create.js)_
354
+ _See code: [src/commands/secret/create.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/secret/create.ts)_
354
355
 
355
356
  ## `eas secret:delete`
356
357
 
@@ -367,7 +368,7 @@ DESCRIPTION
367
368
  Unsure where to find the secret's ID? Run eas secret:list
368
369
  ```
369
370
 
370
- _See code: [src/commands/secret/delete.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/secret/delete.js)_
371
+ _See code: [src/commands/secret/delete.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/secret/delete.ts)_
371
372
 
372
373
  ## `eas secret:list`
373
374
 
@@ -378,11 +379,11 @@ USAGE
378
379
  $ eas secret:list
379
380
  ```
380
381
 
381
- _See code: [src/commands/secret/list.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/secret/list.js)_
382
+ _See code: [src/commands/secret/list.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/secret/list.ts)_
382
383
 
383
384
  ## `eas submit`
384
385
 
385
- submit build archive to app store
386
+ submit build archive to App Store Connect
386
387
 
387
388
  ```
388
389
  USAGE
@@ -411,7 +412,18 @@ ALIASES
411
412
  $ eas build:submit
412
413
  ```
413
414
 
414
- _See code: [src/commands/submit.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/submit.js)_
415
+ _See code: [src/commands/submit.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/submit.ts)_
416
+
417
+ ## `eas update:configure`
418
+
419
+ Configure the project to support EAS Update.
420
+
421
+ ```
422
+ USAGE
423
+ $ eas update:configure
424
+ ```
425
+
426
+ _See code: [src/commands/update/configure.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/update/configure.ts)_
415
427
 
416
428
  ## `eas webhook:create`
417
429
 
@@ -430,7 +442,7 @@ OPTIONS
430
442
  --url=url Webhook URL
431
443
  ```
432
444
 
433
- _See code: [src/commands/webhook/create.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/webhook/create.js)_
445
+ _See code: [src/commands/webhook/create.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/webhook/create.ts)_
434
446
 
435
447
  ## `eas webhook:delete [ID]`
436
448
 
@@ -444,7 +456,7 @@ ARGUMENTS
444
456
  ID ID of the webhook to delete
445
457
  ```
446
458
 
447
- _See code: [src/commands/webhook/delete.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/webhook/delete.js)_
459
+ _See code: [src/commands/webhook/delete.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/webhook/delete.ts)_
448
460
 
449
461
  ## `eas webhook:list`
450
462
 
@@ -458,7 +470,7 @@ OPTIONS
458
470
  --event=(BUILD|SUBMIT) Event type that triggers the webhook
459
471
  ```
460
472
 
461
- _See code: [src/commands/webhook/list.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/webhook/list.js)_
473
+ _See code: [src/commands/webhook/list.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/webhook/list.ts)_
462
474
 
463
475
  ## `eas webhook:update`
464
476
 
@@ -478,7 +490,7 @@ OPTIONS
478
490
  --url=url Webhook URL
479
491
  ```
480
492
 
481
- _See code: [src/commands/webhook/update.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/webhook/update.js)_
493
+ _See code: [src/commands/webhook/update.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/webhook/update.ts)_
482
494
 
483
495
  ## `eas webhook:view ID`
484
496
 
@@ -492,5 +504,5 @@ ARGUMENTS
492
504
  ID ID of the webhook to view
493
505
  ```
494
506
 
495
- _See code: [src/commands/webhook/view.js](https://github.com/expo/eas-cli/blob/v0.38.0/packages/eas-cli/src/commands/webhook/view.js)_
507
+ _See code: [src/commands/webhook/view.ts](https://github.com/expo/eas-cli/blob/v0.39.0/packages/eas-cli/src/commands/webhook/view.ts)_
496
508
  <!-- commandsstop -->
@@ -1,9 +1,10 @@
1
1
  import { ExpoConfig } from '@expo/config';
2
- import { AndroidBuildProfile } from '@expo/eas-json';
2
+ import { Platform } from '@expo/eas-build-job';
3
+ import { BuildProfile } from '@expo/eas-json';
3
4
  import { ConfigureContext } from '../context';
4
5
  export declare function configureAndroidAsync(ctx: ConfigureContext): Promise<void>;
5
6
  export declare function validateAndSyncProjectConfigurationAsync({ projectDir, exp, buildProfile, }: {
6
7
  projectDir: string;
7
8
  exp: ExpoConfig;
8
- buildProfile: AndroidBuildProfile;
9
+ buildProfile: BuildProfile<Platform.ANDROID>;
9
10
  }): Promise<void>;
@@ -119,7 +119,7 @@ async function ensureEasJsonExistsAsync(ctx) {
119
119
  const easJsonPath = eas_json_1.EasJsonReader.formatEasJsonPath(ctx.projectDir);
120
120
  if (await fs_extra_1.default.pathExists(easJsonPath)) {
121
121
  const reader = new eas_json_1.EasJsonReader(ctx.projectDir);
122
- await reader.readAndValidateAsync();
122
+ await reader.readAsync();
123
123
  log_1.default.withTick('Validated eas.json');
124
124
  return;
125
125
  }
@@ -1,11 +1,12 @@
1
1
  import { ExpoConfig } from '@expo/config';
2
- import { IosBuildProfile } from '@expo/eas-json';
2
+ import { Platform } from '@expo/eas-build-job';
3
+ import { BuildProfile } from '@expo/eas-json';
3
4
  import type { XCBuildConfiguration } from 'xcode';
4
5
  import { ConfigureContext } from '../context';
5
6
  export declare function configureIosAsync(ctx: ConfigureContext): Promise<void>;
6
7
  export declare function validateAndSyncProjectConfigurationAsync({ projectDir, exp, buildProfile, buildSettings, }: {
7
8
  projectDir: string;
8
9
  exp: ExpoConfig;
9
- buildProfile: IosBuildProfile;
10
+ buildProfile: BuildProfile<Platform.IOS>;
10
11
  buildSettings: XCBuildConfiguration['buildSettings'];
11
12
  }): Promise<void>;
@@ -23,4 +23,4 @@ export declare function maybeResolveVersionsAsync(projectDir: string, exp: ExpoC
23
23
  appBuildVersion?: string;
24
24
  }>;
25
25
  export declare function getInfoPlistPath(projectDir: string, buildSettings: XCBuildConfiguration['buildSettings']): string;
26
- export declare function evaluateTemplateString(s: string, vars: Record<string, any>): string;
26
+ export declare function evaluateTemplateString(s: string, buildSettings: XCBuildConfiguration['buildSettings']): string;
@@ -98,6 +98,7 @@ async function maybeResolveVersionsAsync(projectDir, exp, buildSettings) {
98
98
  }
99
99
  catch (err) {
100
100
  log_1.default.warn('Failed to read app versions.');
101
+ log_1.default.debug(err);
101
102
  log_1.default.warn(err.message);
102
103
  log_1.default.warn('Proceeding anyway...');
103
104
  return {};
@@ -142,7 +143,9 @@ function ensureStaticConfigExists(projectDir) {
142
143
  throw new Error('autoIncrement option is not supported when using app.config.js');
143
144
  }
144
145
  }
145
- function evaluateTemplateString(s, vars) {
146
+ function evaluateTemplateString(s, buildSettings) {
147
+ // necessary because XCBuildConfiguration['buildSettings'] is not a plain object
148
+ const vars = { ...buildSettings };
146
149
  return s.replace(/\$\((\w+)\)/g, (match, key) => {
147
150
  if (vars.hasOwnProperty(key)) {
148
151
  const value = String(vars[key]);
@@ -5,7 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const spawn_async_1 = (0, tslib_1.__importDefault)(require("@expo/spawn-async"));
6
6
  const semver_1 = (0, tslib_1.__importDefault)(require("semver"));
7
7
  const PLUGIN_PACKAGE_NAME = 'eas-cli-local-build-plugin';
8
- const PLUGIN_PACKAGE_VERSION = '0.0.50';
8
+ const PLUGIN_PACKAGE_VERSION = '0.0.54';
9
9
  async function runLocalBuildAsync(job) {
10
10
  const { command, args } = await getCommandAndArgsAsync(job);
11
11
  await (0, spawn_async_1.default)(command, args, {
@@ -4,6 +4,8 @@ exports.collectMetadataAsync = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const config_plugins_1 = require("@expo/config-plugins");
6
6
  const eas_build_job_1 = require("@expo/eas-build-job");
7
+ const fs_extra_1 = (0, tslib_1.__importDefault)(require("fs-extra"));
8
+ const resolve_from_1 = (0, tslib_1.__importDefault)(require("resolve-from"));
7
9
  const log_1 = (0, tslib_1.__importDefault)(require("../log"));
8
10
  const projectUtils_1 = require("../project/projectUtils");
9
11
  const actions_1 = require("../user/actions");
@@ -38,6 +40,7 @@ async function collectMetadataAsync(ctx) {
38
40
  credentialsSource: ctx.buildProfile.credentialsSource,
39
41
  sdkVersion: ctx.exp.sdkVersion,
40
42
  runtimeVersion: (_b = getRuntimeVersionNullable(ctx.exp, ctx.platform)) !== null && _b !== void 0 ? _b : undefined,
43
+ reactNativeVersion: await getReactNativeVersionAsync(ctx),
41
44
  ...channelOrReleaseChannel,
42
45
  distribution,
43
46
  appName: ctx.exp.name,
@@ -116,6 +119,17 @@ async function getNativeChannelAsync(ctx) {
116
119
  }
117
120
  return undefined;
118
121
  }
122
+ async function getReactNativeVersionAsync(ctx) {
123
+ try {
124
+ const reactNativePackageJsonPath = (0, resolve_from_1.default)(ctx.projectDir, 'react-native/package.json');
125
+ return (await fs_extra_1.default.readJson(reactNativePackageJsonPath)).version;
126
+ }
127
+ catch (err) {
128
+ log_1.default.debug('Failed to resolve react-native version:');
129
+ log_1.default.debug(err);
130
+ return undefined;
131
+ }
132
+ }
119
133
  function resolveIosEnterpriseProvisioning(ctx) {
120
134
  return ctx.buildProfile.enterpriseProvisioning;
121
135
  }
@@ -5,7 +5,6 @@ const eas_json_1 = require("@expo/eas-json");
5
5
  const command_1 = require("@oclif/command");
6
6
  const semver_1 = (0, tslib_1.__importDefault)(require("semver"));
7
7
  const rudderstackClient_1 = require("../analytics/rudderstackClient");
8
- const log_1 = (0, tslib_1.__importDefault)(require("../log"));
9
8
  const projectUtils_1 = require("../project/projectUtils");
10
9
  const User_1 = require("../user/User");
11
10
  const actions_1 = require("../user/actions");
@@ -24,7 +23,6 @@ class EasCommand extends command_1.Command {
24
23
  // eslint-disable-next-line async-protect/async-suffix
25
24
  async run() {
26
25
  var _a;
27
- eas_json_1.EasJsonReader.setLog(log_1.default);
28
26
  await (0, rudderstackClient_1.initAsync)();
29
27
  await this.applyCliConfigAsync();
30
28
  if (this.requiresAuthentication) {
@@ -24,6 +24,7 @@ const uniqBy_1 = (0, tslib_1.__importDefault)(require("../../utils/expodash/uniq
24
24
  const formatFields_1 = (0, tslib_1.__importDefault)(require("../../utils/formatFields"));
25
25
  const vcs_1 = require("../../vcs");
26
26
  const create_1 = require("../channel/create");
27
+ const configure_1 = require("../update/configure");
27
28
  const create_2 = require("./create");
28
29
  const list_1 = require("./list");
29
30
  const view_1 = require("./view");
@@ -95,6 +96,7 @@ class BranchPublish extends EasCommand_1.default {
95
96
  });
96
97
  const runtimeVersions = await getRuntimeVersionObjectAsync(exp, platformFlag, projectDir);
97
98
  const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
99
+ await checkEASUpdateURLIsSetAsync(exp);
98
100
  if (!branchName && autoFlag) {
99
101
  branchName =
100
102
  (await (0, vcs_1.getVcsClient)().getBranchNameAsync()) ||
@@ -352,3 +354,11 @@ function formatUpdateTitle(update) {
352
354
  }
353
355
  return `[${(0, dateformat_1.default)(createdAt, 'mmm dd HH:MM')} by ${actorName}, runtimeVersion: ${runtimeVersion}] ${message}`;
354
356
  }
357
+ async function checkEASUpdateURLIsSetAsync(exp) {
358
+ var _a;
359
+ const configuredURL = (_a = exp.updates) === null || _a === void 0 ? void 0 : _a.url;
360
+ const expectedURL = await (0, configure_1.getEASUpdateURLAsync)(exp);
361
+ if (configuredURL !== expectedURL) {
362
+ throw new Error(`The update URL is incorrectly configured for EAS Update. Please set updates.url to ${expectedURL} in your app.json.`);
363
+ }
364
+ }
@@ -44,7 +44,7 @@ function logSuccess(platform) {
44
44
  }
45
45
  else if (platform === 'ios') {
46
46
  platformsText = 'iOS project is';
47
- storesText = 'the Apple App Store';
47
+ storesText = 'the Apple App Store Connect';
48
48
  }
49
49
  log_1.default.log(`🎉 Your ${platformsText} ready to build.
50
50
 
@@ -40,6 +40,7 @@ class Build extends EasCommand_1.default {
40
40
  this.metroConfigValidated = false;
41
41
  }
42
42
  async runAsync() {
43
+ var _a;
43
44
  const { flags: rawFlags } = this.parse(Build);
44
45
  if (rawFlags.json) {
45
46
  (0, json_1.enableJsonOutput)();
@@ -56,7 +57,7 @@ class Build extends EasCommand_1.default {
56
57
  type: 'build',
57
58
  projectDir,
58
59
  platforms,
59
- profileName: flags.profile,
60
+ profileName: (_a = flags.profile) !== null && _a !== void 0 ? _a : undefined,
60
61
  });
61
62
  await (0, devClient_1.ensureExpoDevClientInstalledForDevClientBuildsAsync)({
62
63
  projectDir,
@@ -85,14 +86,22 @@ class Build extends EasCommand_1.default {
85
86
  log_1.default.newLine();
86
87
  const submissions = [];
87
88
  if (flags.autoSubmit) {
89
+ const submitProfiles = await (0, profiles_1.getProfilesAsync)({
90
+ projectDir,
91
+ platforms,
92
+ profileName: flags.submitProfile,
93
+ type: 'submit',
94
+ });
88
95
  for (const startedBuild of startedBuilds) {
96
+ const submitProfile = (0, nullthrows_1.default)(submitProfiles.find(({ platform }) => (0, AppPlatform_1.toAppPlatform)(platform) === startedBuild.build.platform)).profile;
89
97
  const submission = await this.prepareAndStartSubmissionAsync({
90
98
  build: startedBuild.build,
91
99
  buildCtx: (0, nullthrows_1.default)(buildCtxByPlatform[startedBuild.build.platform]),
92
- flags,
93
100
  moreBuilds: startedBuilds.length > 1,
94
101
  projectDir,
95
- buildProfile: startedBuild.buildProfile,
102
+ buildProfile: startedBuild.buildProfile.profile,
103
+ submitProfile,
104
+ nonInteractive: flags.nonInteractive,
96
105
  });
97
106
  submissions.push(submission);
98
107
  }
@@ -144,7 +153,7 @@ class Build extends EasCommand_1.default {
144
153
  return {
145
154
  requestedPlatform,
146
155
  skipProjectConfiguration: flags['skip-project-configuration'],
147
- profile: profile !== null && profile !== void 0 ? profile : null,
156
+ profile,
148
157
  nonInteractive,
149
158
  local: flags['local'],
150
159
  wait: flags['wait'],
@@ -190,19 +199,17 @@ class Build extends EasCommand_1.default {
190
199
  }
191
200
  return await sendBuildRequestAsync();
192
201
  }
193
- async prepareAndStartSubmissionAsync({ build, buildCtx, flags, moreBuilds, projectDir, buildProfile, }) {
202
+ async prepareAndStartSubmissionAsync({ build, buildCtx, moreBuilds, projectDir, buildProfile, submitProfile, nonInteractive, }) {
194
203
  var _a, _b, _c;
195
- const easJsonReader = new eas_json_1.EasJsonReader(projectDir);
196
204
  const platform = (0, AppPlatform_1.toPlatform)(build.platform);
197
- const submitProfile = await easJsonReader.readSubmitProfileAsync(platform, flags.submitProfile);
198
205
  const submissionCtx = await (0, context_1.createSubmissionContextAsync)({
199
206
  platform,
200
207
  projectDir,
201
208
  projectId: build.project.id,
202
209
  profile: submitProfile,
203
210
  archiveFlags: { id: build.id },
204
- nonInteractive: flags.nonInteractive,
205
- env: buildProfile.profile.env,
211
+ nonInteractive,
212
+ env: buildProfile.env,
206
213
  credentialsCtx: buildCtx.credentialsCtx,
207
214
  applicationIdentifier: (_b = (_a = buildCtx.android) === null || _a === void 0 ? void 0 : _a.applicationId) !== null && _b !== void 0 ? _b : (_c = buildCtx.ios) === null || _c === void 0 ? void 0 : _c.bundleIdentifier,
208
215
  });
@@ -276,7 +283,7 @@ async function handleDeprecatedEasJsonAsync(projectDir, nonInteractive) {
276
283
  return;
277
284
  }
278
285
  const easJsonReader = new eas_json_1.EasJsonReader(projectDir);
279
- const rawEasJson = await easJsonReader.readRawAsync();
286
+ const rawEasJson = await easJsonReader.readAsync();
280
287
  if (rawEasJson === null || rawEasJson === void 0 ? void 0 : rawEasJson.cli) {
281
288
  return;
282
289
  }
@@ -54,7 +54,7 @@ async function updateChannelBranchMappingAsync({ channelId, branchMapping, }) {
54
54
  .toPromise());
55
55
  const channel = data.updateChannel.editUpdateChannel;
56
56
  if (!channel) {
57
- throw new Error(`Could not fine channel with id ${channelId}`);
57
+ throw new Error(`Could not find a channel with id: ${channelId}`);
58
58
  }
59
59
  return data.updateChannel.editUpdateChannel;
60
60
  }
@@ -133,7 +133,7 @@ function logChannelDetails(channel) {
133
133
  : []),
134
134
  (0, utils_1.formatUpdate)(update),
135
135
  (_a = update === null || update === void 0 ? void 0 : update.runtimeVersion) !== null && _a !== void 0 ? _a : 'N/A',
136
- (_b = update === null || update === void 0 ? void 0 : update.group) !== null && _b !== void 0 ? _b : 'N/A,',
136
+ (_b = update === null || update === void 0 ? void 0 : update.group) !== null && _b !== void 0 ? _b : 'N/A',
137
137
  (0, utils_1.getPlatformsForGroup)({
138
138
  updates: branch.updates,
139
139
  group: (_c = branch.updates[0]) === null || _c === void 0 ? void 0 : _c.group,
@@ -168,7 +168,7 @@ class ChannelView extends EasCommand_1.default {
168
168
  });
169
169
  const channel = (_a = getUpdateChannelByNameForAppresult.app) === null || _a === void 0 ? void 0 : _a.byId.updateChannelByName;
170
170
  if (!channel) {
171
- throw new Error(`Could not fine channel with name ${channelName}`);
171
+ throw new Error(`Could not find a channel with name: ${channelName}`);
172
172
  }
173
173
  if (jsonFlag) {
174
174
  log_1.default.log(JSON.stringify(channel));
@@ -181,7 +181,7 @@ class ChannelView extends EasCommand_1.default {
181
181
  { label: 'ID', value: channel.id },
182
182
  ]));
183
183
  log_1.default.addNewLineIfNone();
184
- log_1.default.log((0, chalk_1.default) `{bold Branches, pointed at by this channel, and their most recent update group:}`);
184
+ log_1.default.log((0, chalk_1.default) `{bold Branches pointed at this channel and their most recent update group:}`);
185
185
  logChannelDetails(channel);
186
186
  }
187
187
  }
@@ -36,7 +36,7 @@ class Config extends EasCommand_1.default {
36
36
  value: eas_build_job_1.Platform.IOS,
37
37
  },
38
38
  ]));
39
- const profile = await reader.readBuildProfileAsync(platform, profileName);
39
+ const profile = await reader.getBuildProfileAsync(platform, profileName);
40
40
  const config = (0, expoConfig_1.getExpoConfig)(projectDir, { env: profile.env, isPublicConfig: true });
41
41
  log_1.default.log((0, config_1.getProjectConfigDescription)(projectDir));
42
42
  log_1.default.newLine();
@@ -3,4 +3,5 @@ export default class Diagnostics extends EasCommand {
3
3
  static description: string;
4
4
  protected requiresAuthentication: boolean;
5
5
  runAsync(): Promise<void>;
6
+ private printWorkflowAsync;
6
7
  }
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const eas_build_job_1 = require("@expo/eas-build-job");
4
5
  const envinfo_1 = (0, tslib_1.__importDefault)(require("envinfo"));
5
6
  const EasCommand_1 = (0, tslib_1.__importDefault)(require("../commandUtils/EasCommand"));
6
7
  const log_1 = (0, tslib_1.__importDefault)(require("../log"));
8
+ const projectUtils_1 = require("../project/projectUtils");
9
+ const workflow_1 = require("../project/workflow");
7
10
  const easCli_1 = require("../utils/easCli");
8
11
  class Diagnostics extends EasCommand_1.default {
9
12
  constructor() {
@@ -30,7 +33,22 @@ class Diagnostics extends EasCommand_1.default {
30
33
  }, {
31
34
  title: `EAS CLI ${easCli_1.easCliVersion} environment info`,
32
35
  });
33
- log_1.default.log(info);
36
+ log_1.default.log(info.trimEnd());
37
+ await this.printWorkflowAsync();
38
+ log_1.default.newLine();
39
+ }
40
+ async printWorkflowAsync() {
41
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
42
+ const androidWorkflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.ANDROID);
43
+ const iosWorkflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.IOS);
44
+ if (androidWorkflow === iosWorkflow) {
45
+ log_1.default.log(` Project workflow: ${androidWorkflow}`);
46
+ }
47
+ else {
48
+ log_1.default.log(` Project Workflow:`);
49
+ log_1.default.log(` Android: ${androidWorkflow}`);
50
+ log_1.default.log(` iOS: ${iosWorkflow}`);
51
+ }
34
52
  }
35
53
  }
36
54
  exports.default = Diagnostics;
@@ -74,7 +74,7 @@ class Submit extends EasCommand_1.default {
74
74
  }
75
75
  }
76
76
  exports.default = Submit;
77
- Submit.description = `submit build archive to app store
77
+ Submit.description = `submit build archive to App Store Connect
78
78
  See how to configure submits with eas.json: ${(0, log_1.link)('https://docs.expo.dev/submit/eas-json/')}`;
79
79
  Submit.aliases = ['build:submit'];
80
80
  Submit.flags = {
@@ -0,0 +1,7 @@
1
+ import { ExpoConfig } from '@expo/config';
2
+ import EasCommand from '../../commandUtils/EasCommand';
3
+ export declare function getEASUpdateURLAsync(exp: ExpoConfig): Promise<string>;
4
+ export default class UpdateConfigure extends EasCommand {
5
+ static description: string;
6
+ runAsync(): Promise<void>;
7
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEASUpdateURLAsync = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const config_1 = require("@expo/config");
6
+ const eas_build_job_1 = require("@expo/eas-build-job");
7
+ const chalk_1 = (0, tslib_1.__importDefault)(require("chalk"));
8
+ const EasCommand_1 = (0, tslib_1.__importDefault)(require("../../commandUtils/EasCommand"));
9
+ const log_1 = (0, tslib_1.__importStar)(require("../../log"));
10
+ const projectUtils_1 = require("../../project/projectUtils");
11
+ const workflow_1 = require("../../project/workflow");
12
+ const EAS_UPDATE_URL = 'https://u.expo.dev';
13
+ const DEFAULT_RUNTIME_VERSION = { policy: 'sdkVersion' };
14
+ async function getEASUpdateURLAsync(exp) {
15
+ const projectId = await (0, projectUtils_1.getProjectIdAsync)(exp);
16
+ return new URL(projectId, EAS_UPDATE_URL).href;
17
+ }
18
+ exports.getEASUpdateURLAsync = getEASUpdateURLAsync;
19
+ async function configureProjectForEASUpdateAsync(projectDir, exp) {
20
+ var _a, _b;
21
+ const easUpdateURL = await getEASUpdateURLAsync(exp);
22
+ const preexistingRuntimeVersion = exp.runtimeVersion;
23
+ const result = await (0, config_1.modifyConfigAsync)(projectDir, {
24
+ runtimeVersion: preexistingRuntimeVersion !== null && preexistingRuntimeVersion !== void 0 ? preexistingRuntimeVersion : DEFAULT_RUNTIME_VERSION,
25
+ updates: { ...exp.updates, url: easUpdateURL },
26
+ });
27
+ switch (result.type) {
28
+ case 'success':
29
+ if ((_a = exp.updates) === null || _a === void 0 ? void 0 : _a.url) {
30
+ if (exp.updates.url !== easUpdateURL) {
31
+ log_1.default.withTick(`Overwrote "${(_b = exp.updates) === null || _b === void 0 ? void 0 : _b.url}" with "${easUpdateURL}" for the updates.url value in app.json`);
32
+ }
33
+ }
34
+ else {
35
+ log_1.default.withTick(`Set updates.url value, to "${easUpdateURL}" in app.json`);
36
+ }
37
+ if (!preexistingRuntimeVersion) {
38
+ log_1.default.withTick(`Set runtimeVersion to "${JSON.stringify(DEFAULT_RUNTIME_VERSION)}" in app.json`);
39
+ }
40
+ break;
41
+ case 'warn': {
42
+ log_1.default.addNewLineIfNone();
43
+ log_1.default.warn(`It looks like you are using a dynamic configuration! ${(0, log_1.learnMore)('https://docs.expo.dev/workflow/configuration/#dynamic-configuration-with-appconfigjs)')}`);
44
+ log_1.default.warn(`In order to finish configuring your project for EAS Update, you are going to need manually add the following to your app.config.js:\n${(0, log_1.learnMore)('https://expo.fyi/eas-update-config.md')}\n`);
45
+ log_1.default.log(chalk_1.default.bold(`{\n updates": {\n "url": "${easUpdateURL}"\n },\n "runtimeVersion": {\n "policy": "sdkVersion"\n }\n}`));
46
+ log_1.default.addNewLineIfNone();
47
+ throw new Error(result.message);
48
+ }
49
+ case 'fail':
50
+ throw new Error(result.message);
51
+ default:
52
+ throw new Error('Unexpected result type from modifyConfigAsync');
53
+ }
54
+ }
55
+ class UpdateConfigure extends EasCommand_1.default {
56
+ async runAsync() {
57
+ log_1.default.log('💡 The following process will configure your project to run EAS Update. These changes only apply to your local project files and you can safely revert them at any time.');
58
+ const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
59
+ const { exp } = (0, config_1.getConfig)(projectDir, {
60
+ skipSDKVersionRequirement: true,
61
+ });
62
+ await configureProjectForEASUpdateAsync(projectDir, exp);
63
+ const hasAndroidNativeProject = (await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.ANDROID)) === eas_build_job_1.Workflow.GENERIC;
64
+ const hasIosNativeProject = (await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.IOS)) === eas_build_job_1.Workflow.GENERIC;
65
+ log_1.default.addNewLineIfNone();
66
+ if (hasAndroidNativeProject || hasIosNativeProject) {
67
+ log_1.default.log(`🧐 It seems you are on the bare workflow! Please also update your native files. You can do this by either running ${chalk_1.default.bold('eas build:configure')} or manually editing Expo.plist/AndroidManifest.xml. ${(0, log_1.learnMore)('https://expo.fyi/eas-update-config.md#native-configuration')}`);
68
+ }
69
+ else {
70
+ log_1.default.log(`🎉 Your app is configured to run EAS Update!`);
71
+ }
72
+ }
73
+ }
74
+ exports.default = UpdateConfigure;
75
+ UpdateConfigure.description = 'Configure the project to support EAS Update.';
@@ -93,7 +93,7 @@ async function promptForAscApiKeyAsync(ctx) {
93
93
  }
94
94
  async function promptForKeyP8AndIdAsync() {
95
95
  var _a, _b;
96
- log_1.default.log(chalk_1.default.bold('An App Store Connect Api key is required to upload your app to the Apple App Store'));
96
+ log_1.default.log(chalk_1.default.bold('An App Store Connect Api key is required to upload your app to the Apple App Store Connect'));
97
97
  log_1.default.log(`If you're not sure what this is or how to create one, ${(0, log_1.learnMore)('https://expo.fyi/creating-asc-api-key')}`);
98
98
  const { keyP8Path } = await (0, prompts_1.promptAsync)({
99
99
  type: 'text',
@@ -96,10 +96,10 @@ exports.syncCapabilityIdentifiersAsync = syncCapabilityIdentifiersAsync;
96
96
  async function ensureAppExistsAsync(authCtx, { name, language, companyName, bundleIdentifier, sku, }) {
97
97
  var _a;
98
98
  const context = (0, authenticate_1.getRequestContext)(authCtx);
99
- const spinner = (0, ora_1.ora)(`Linking to App Store ${chalk_1.default.dim(bundleIdentifier)}`).start();
99
+ const spinner = (0, ora_1.ora)(`Linking to App Store Connect ${chalk_1.default.dim(bundleIdentifier)}`).start();
100
100
  let app = await apple_utils_1.App.findAsync(context, { bundleId: bundleIdentifier });
101
101
  if (!app) {
102
- spinner.text = `Creating App Store app ${chalk_1.default.bold(name)} ${chalk_1.default.dim(bundleIdentifier)}`;
102
+ spinner.text = `Creating App Store Connect app ${chalk_1.default.bold(name)} ${chalk_1.default.dim(bundleIdentifier)}`;
103
103
  try {
104
104
  // Assert contract errors when the user needs to create an app.
105
105
  await (0, contractMessages_1.assertContractMessagesAsync)(context, spinner);
@@ -125,7 +125,7 @@ async function ensureAppExistsAsync(authCtx, { name, language, companyName, bund
125
125
  else {
126
126
  // TODO: Update app name when API gives us that possibility
127
127
  }
128
- spinner.succeed(`Prepared App Store for ${chalk_1.default.bold(name)} ${chalk_1.default.dim(bundleIdentifier)}`);
128
+ spinner.succeed(`Prepared App Store Connect for ${chalk_1.default.bold(name)} ${chalk_1.default.dim(bundleIdentifier)}`);
129
129
  return app;
130
130
  }
131
131
  exports.ensureAppExistsAsync = ensureAppExistsAsync;
@@ -13,7 +13,7 @@ async function getManagedEntitlementsJsonAsync(projectDir, env) {
13
13
  ...process.env,
14
14
  ...env,
15
15
  };
16
- const { exp } = (0, prebuild_config_1.getPrebuildConfig)(projectDir, { platforms: ['ios'] });
16
+ const { exp } = await (0, prebuild_config_1.getPrebuildConfigAsync)(projectDir, { platforms: ['ios'] });
17
17
  const expWithMods = await (0, config_plugins_1.compileModsAsync)(exp, {
18
18
  projectRoot: projectDir,
19
19
  platforms: ['ios'],
@@ -12,7 +12,7 @@ class SelectBuildProfileFromEasJson {
12
12
  }
13
13
  async runAsync(ctx) {
14
14
  const profileName = await this.getProfileNameFromEasConfigAsync(ctx);
15
- const easConfig = await this.easJsonReader.readBuildProfileAsync(this.platform, profileName);
15
+ const easConfig = await this.easJsonReader.getBuildProfileAsync(this.platform, profileName);
16
16
  log_1.default.succeed(`Using build profile: ${profileName}`);
17
17
  return easConfig;
18
18
  }
@@ -1,9 +1,10 @@
1
- import { IosBuildProfile } from '@expo/eas-json';
1
+ import { Platform } from '@expo/eas-build-job';
2
+ import { BuildProfile } from '@expo/eas-json';
2
3
  import { IosDistributionType as IosDistributionTypeGraphql } from '../../graphql/generated';
3
4
  import { CredentialsContext } from '../context';
4
5
  export declare class SelectIosDistributionTypeGraphqlFromBuildProfile {
5
6
  private buildProfile;
6
- constructor(buildProfile: IosBuildProfile);
7
+ constructor(buildProfile: BuildProfile<Platform.IOS>);
7
8
  runAsync(ctx: CredentialsContext): Promise<IosDistributionTypeGraphql>;
8
9
  resolveInternalDistributionAsync(ctx: CredentialsContext): Promise<IosDistributionTypeGraphql>;
9
10
  }
@@ -1,5 +1,6 @@
1
1
  import { ExpoConfig } from '@expo/config';
2
- import { IosBuildProfile } from '@expo/eas-json';
2
+ import { Platform } from '@expo/eas-build-job';
3
+ import { BuildProfile } from '@expo/eas-json';
3
4
  export interface XcodeBuildContext {
4
5
  buildScheme: string;
5
6
  buildConfiguration?: string;
@@ -8,7 +9,7 @@ export declare function resolveXcodeBuildContextAsync({ exp, projectDir, nonInte
8
9
  exp: ExpoConfig;
9
10
  projectDir: string;
10
11
  nonInteractive: boolean;
11
- }, buildProfile: IosBuildProfile): Promise<XcodeBuildContext>;
12
+ }, buildProfile: BuildProfile<Platform.IOS>): Promise<XcodeBuildContext>;
12
13
  export declare function selectSchemeAsync({ projectDir, nonInteractive, }: {
13
14
  projectDir: string;
14
15
  nonInteractive?: boolean;
@@ -17,22 +17,47 @@ async function resolveTargetsAsync({ exp, projectDir }, { buildConfiguration, bu
17
17
  bundleIdentifier,
18
18
  buildConfiguration,
19
19
  });
20
- if (applicationTarget.dependencies && applicationTarget.dependencies.length > 0) {
21
- for (const dependency of applicationTarget.dependencies) {
20
+ const dependencies = await resolveDependenciesAsync({
21
+ exp,
22
+ projectDir,
23
+ buildConfiguration,
24
+ target: applicationTarget,
25
+ bundleIdentifier,
26
+ });
27
+ if (dependencies.length > 0) {
28
+ result.push(...dependencies);
29
+ }
30
+ return result;
31
+ }
32
+ exports.resolveTargetsAsync = resolveTargetsAsync;
33
+ async function resolveDependenciesAsync({ exp, projectDir, buildConfiguration, target, bundleIdentifier, }) {
34
+ const result = [];
35
+ if (target.dependencies && target.dependencies.length > 0) {
36
+ for (const dependency of target.dependencies) {
37
+ const dependencyBundleIdentifier = await (0, bundleIdentifier_1.getBundleIdentifierAsync)(projectDir, exp, {
38
+ targetName: dependency.name,
39
+ buildConfiguration,
40
+ });
22
41
  result.push({
23
42
  targetName: dependency.name,
24
43
  buildConfiguration,
25
- bundleIdentifier: await (0, bundleIdentifier_1.getBundleIdentifierAsync)(projectDir, exp, {
26
- targetName: dependency.name,
27
- buildConfiguration,
28
- }),
44
+ bundleIdentifier: dependencyBundleIdentifier,
29
45
  parentBundleIdentifier: bundleIdentifier,
30
46
  });
47
+ const dependencyDependencies = await resolveDependenciesAsync({
48
+ exp,
49
+ projectDir,
50
+ buildConfiguration,
51
+ target: dependency,
52
+ bundleIdentifier: dependencyBundleIdentifier,
53
+ });
54
+ if (dependencyDependencies.length > 0) {
55
+ result.push(...dependencyDependencies);
56
+ }
31
57
  }
32
58
  }
33
59
  return result;
34
60
  }
35
- exports.resolveTargetsAsync = resolveTargetsAsync;
36
61
  async function readApplicationTargetForSchemeAsync(projectDir, scheme) {
37
62
  const workflow = await (0, workflow_1.resolveWorkflowAsync)(projectDir, eas_build_job_1.Platform.IOS);
38
63
  if (workflow === eas_build_job_1.Workflow.GENERIC) {
@@ -11,13 +11,13 @@ const bundleIdentifier_1 = require("../../project/ios/bundleIdentifier");
11
11
  const prompts_1 = require("../../prompts");
12
12
  const language_1 = require("./utils/language");
13
13
  async function ensureAppStoreConnectAppExistsAsync(ctx) {
14
- var _a;
14
+ var _a, _b, _c;
15
15
  const { exp } = ctx;
16
16
  const { appName, language } = ctx.profile;
17
17
  const options = {
18
18
  ...ctx.profile,
19
- bundleIdentifier: await (0, bundleIdentifier_1.getBundleIdentifierAsync)(ctx.projectDir, exp),
20
- appName: (_a = appName !== null && appName !== void 0 ? appName : exp.name) !== null && _a !== void 0 ? _a : (await promptForAppNameAsync()),
19
+ bundleIdentifier: (_b = (_a = ctx.applicationIdentifierOverride) !== null && _a !== void 0 ? _a : ctx.profile.bundleIdentifier) !== null && _b !== void 0 ? _b : (await (0, bundleIdentifier_1.getBundleIdentifierAsync)(ctx.projectDir, exp)),
20
+ appName: (_c = appName !== null && appName !== void 0 ? appName : exp.name) !== null && _c !== void 0 ? _c : (await promptForAppNameAsync()),
21
21
  language: (0, language_1.sanitizeLanguage)(language),
22
22
  };
23
23
  return await createAppStoreConnectAppAsync(ctx, options);
@@ -159,7 +159,7 @@ class IosSubmitCommand {
159
159
  return (0, results_1.result)(ascAppId);
160
160
  }
161
161
  else if (this.ctx.nonInteractive) {
162
- return (0, results_1.result)(new Error('Set ascAppId in the submit profile (eas.json).'));
162
+ return (0, results_1.result)(new Error('Set ascAppId in the submit profile (eas.json) or re-run this command in interactive mode.'));
163
163
  }
164
164
  else {
165
165
  log_1.default.log((0, wrap_ansi_1.default)(`Ensuring your app exists on App Store Connect. This step can be skipped by providing ${chalk_1.default.bold(`ascAppId`)} in the submit profile. ${(0, log_1.learnMore)('https://expo.fyi/asc-app-id')}`, process.stdout.columns || 80));
@@ -10,7 +10,7 @@ const ora_1 = require("../../ora");
10
10
  const promise_1 = require("../../utils/promise");
11
11
  const APP_STORE_NAMES = {
12
12
  [generated_1.AppPlatform.Android]: 'Google Play Store',
13
- [generated_1.AppPlatform.Ios]: 'Apple App Store',
13
+ [generated_1.AppPlatform.Ios]: 'Apple App Store Connect',
14
14
  };
15
15
  const CHECK_TIMEOUT_MS = 3600000;
16
16
  const CHECK_INTERVAL_MS = 5000;
@@ -19,7 +19,7 @@ function getPlatformsForGroup({ group, updates, }) {
19
19
  return groupedUpdates[group]
20
20
  .map(update => update.platform)
21
21
  .sort()
22
- .join(',');
22
+ .join(', ');
23
23
  }
24
24
  exports.getPlatformsForGroup = getPlatformsForGroup;
25
25
  function formatUpdate(update) {
@@ -1,6 +1,5 @@
1
1
  import { Platform } from '@expo/eas-build-job';
2
- import { BuildProfile, SubmitProfile } from '@expo/eas-json';
3
- declare type ProfileType = 'build' | 'submit';
2
+ import { BuildProfile, ProfileType, SubmitProfile } from '@expo/eas-json';
4
3
  declare type EasProfile<T extends ProfileType> = T extends 'build' ? BuildProfile<Platform> : SubmitProfile<Platform>;
5
4
  export declare type ProfileData<T extends ProfileType> = {
6
5
  profile: EasProfile<T>;
@@ -10,7 +9,7 @@ export declare type ProfileData<T extends ProfileType> = {
10
9
  export declare function getProfilesAsync<T extends ProfileType>({ projectDir, platforms, profileName: profileNameArg, type, }: {
11
10
  projectDir: string;
12
11
  platforms: Platform[];
13
- profileName?: string | null;
12
+ profileName?: string;
14
13
  type: T;
15
14
  }): Promise<ProfileData<T>[]>;
16
15
  export {};
@@ -10,23 +10,28 @@ async function getProfilesAsync({ projectDir, platforms, profileName: profileNam
10
10
  let profileName = profileNameArg;
11
11
  if (!profileName) {
12
12
  try {
13
- profile = await readProfileAsync({ projectDir, platform, type, profileName: 'production' });
14
13
  profileName = 'production';
14
+ profile = await readProfileAsync({ projectDir, platform, type, profileName });
15
15
  }
16
16
  catch (errorOuter) {
17
- if (errorOuter instanceof eas_json_1.errors.InvalidEasJsonError) {
17
+ if (!(errorOuter instanceof eas_json_1.errors.MissingProfileError)) {
18
18
  throw errorOuter;
19
19
  }
20
20
  try {
21
- profile = await readProfileAsync({ projectDir, platform, type, profileName: 'release' });
22
21
  profileName = 'release';
22
+ profile = await readProfileAsync({ projectDir, platform, type, profileName });
23
23
  log_1.default.warn('The default profile changed from "release" to "production". We detected that you still have a "release" build profile, so we are using it. Update eas.json to have a profile named "production" under the `build` key, or specify which profile you\'d like to use with the --profile flag. This fallback behavior will be removed in the next major version of EAS CLI.');
24
24
  }
25
25
  catch (errorInner) {
26
- if (errorInner instanceof eas_json_1.errors.InvalidEasJsonError) {
26
+ if (!(errorInner instanceof eas_json_1.errors.MissingProfileError)) {
27
27
  throw errorInner;
28
28
  }
29
- throw new Error(`There is no ${type} profile named "production" in eas.json`);
29
+ const defaultProfile = getDefaultProfile({ platform, type });
30
+ if (!defaultProfile) {
31
+ throw errorInner;
32
+ }
33
+ profileName = '__default__';
34
+ profile = defaultProfile;
30
35
  }
31
36
  }
32
37
  }
@@ -45,9 +50,17 @@ exports.getProfilesAsync = getProfilesAsync;
45
50
  async function readProfileAsync({ projectDir, platform, type, profileName, }) {
46
51
  const easJsonReader = new eas_json_1.EasJsonReader(projectDir);
47
52
  if (type === 'build') {
48
- return (await easJsonReader.readBuildProfileAsync(platform, profileName));
53
+ return (await easJsonReader.getBuildProfileAsync(platform, profileName));
54
+ }
55
+ else {
56
+ return (await easJsonReader.getSubmitProfileAsync(platform, profileName));
57
+ }
58
+ }
59
+ function getDefaultProfile({ platform, type, }) {
60
+ if (type === 'build') {
61
+ return null;
49
62
  }
50
63
  else {
51
- return (await easJsonReader.readSubmitProfileAsync(platform, profileName));
64
+ return (0, eas_json_1.getDefaultSubmitProfile)(platform);
52
65
  }
53
66
  }
@@ -1 +1 @@
1
- {"version":"0.38.0","commands":{"analytics":{"id":"analytics","description":"view or change analytics settings","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"STATUS","options":["on","off"]}]},"config":{"id":"config","description":"show the eas.json config","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"platform":{"name":"platform","type":"option","char":"p","helpValue":"(android|ios)","options":["android","ios"]},"profile":{"name":"profile","type":"option"}},"args":[]},"credentials":{"id":"credentials","description":"manage your credentials","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"diagnostics":{"id":"diagnostics","description":"log environment info to the console","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"submit":{"id":"submit","description":"submit build archive to app store\nSee how to configure submits with eas.json: https://docs.expo.dev/submit/eas-json/","pluginName":"eas-cli","pluginType":"core","aliases":["build:submit"],"flags":{"platform":{"name":"platform","type":"option","char":"p","helpValue":"(android|ios|all)","options":["android","ios","all"]},"profile":{"name":"profile","type":"option","description":"Name of the submit profile from eas.json. Defaults to \"production\" if defined in eas.json."},"latest":{"name":"latest","type":"boolean","description":"Submit the latest build for specified platform","allowNo":false},"id":{"name":"id","type":"option","description":"ID of the build to submit"},"path":{"name":"path","type":"option","description":"Path to the .apk/.aab/.ipa file"},"url":{"name":"url","type":"option","description":"App archive url"},"verbose":{"name":"verbose","type":"boolean","description":"Always print logs from Submission Service","allowNo":false},"wait":{"name":"wait","type":"boolean","description":"Wait for submission to complete","allowNo":true},"non-interactive":{"name":"non-interactive","type":"boolean","description":"Run command in non-interactive mode","allowNo":false}},"args":[]},"account:login":{"id":"account:login","description":"log in with your Expo account","pluginName":"eas-cli","pluginType":"core","aliases":["login"],"flags":{},"args":[]},"account:logout":{"id":"account:logout","description":"log out","pluginName":"eas-cli","pluginType":"core","aliases":["logout"],"flags":{},"args":[]},"account:view":{"id":"account:view","description":"show the username you are logged in as","pluginName":"eas-cli","pluginType":"core","aliases":["whoami"],"flags":{},"args":[]},"branch:create":{"id":"branch:create","description":"Create a branch on the current project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"return a json with the new branch ID and name.","allowNo":false}},"args":[{"name":"name","description":"Name of the branch to create","required":false}]},"branch:delete":{"id":"branch:delete","description":"Republish an update group","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"return JSON with the edited branch's ID and name.","allowNo":false}},"args":[{"name":"name","description":"Name of the branch to delete","required":false}]},"branch:list":{"id":"branch:list","description":"List all branches on this project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"return output as JSON","allowNo":false}},"args":[]},"branch:publish":{"id":"branch:publish","description":"Publish an update group to a branch.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"message":{"name":"message","type":"option","description":"short message describing the updates.","required":false},"republish":{"name":"republish","type":"boolean","description":"republish an update group","allowNo":false},"group":{"name":"group","type":"option","description":"update group to republish"},"input-dir":{"name":"input-dir","type":"option","description":"location of the bundle","required":false,"default":"dist"},"skip-bundler":{"name":"skip-bundler","type":"boolean","description":"skip running Expo CLI to bundle the app before publishing","allowNo":false},"platform":{"name":"platform","type":"option","char":"p","description":"only publish to a single platform","required":false,"helpValue":"(android|ios|all)","options":["android","ios","all"],"default":"all"},"json":{"name":"json","type":"boolean","description":"return a json with the new update group.","allowNo":false},"auto":{"name":"auto","type":"boolean","description":"use the current git branch and commit message for the EAS branch and update message","allowNo":false}},"args":[{"name":"name","description":"Name of the branch to publish on"}]},"branch:rename":{"id":"branch:rename","description":"Rename a branch.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"from":{"name":"from","type":"option","description":"current name of the branch.","required":false},"to":{"name":"to","type":"option","description":"new name of the branch.","required":false},"json":{"name":"json","type":"boolean","description":"return a json with the edited branch's ID and name.","allowNo":false}},"args":[]},"branch:view":{"id":"branch:view","description":"View a branch.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"return a json with the branch's ID name and recent update groups.","allowNo":false}},"args":[{"name":"name","description":"Name of the branch to view","required":false}]},"build:cancel":{"id":"build:cancel","description":"Cancel a build.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"BUILD_ID"}]},"build:configure":{"id":"build:configure","description":"Configure the project to support EAS Build.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"platform":{"name":"platform","type":"option","char":"p","description":"Platform to configure","helpValue":"(android|ios|all)","options":["android","ios","all"]}},"args":[]},"build":{"id":"build","description":"start a build","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"platform":{"name":"platform","type":"option","char":"p","helpValue":"(android|ios|all)","options":["android","ios","all"]},"skip-credentials-check":{"name":"skip-credentials-check","type":"boolean","hidden":true,"allowNo":false},"json":{"name":"json","type":"boolean","description":"Enable JSON output, non-JSON messages will be printed to stderr","allowNo":false},"skip-project-configuration":{"name":"skip-project-configuration","type":"boolean","description":"Skip project configuration","allowNo":false},"profile":{"name":"profile","type":"option","description":"Name of the build profile from eas.json. Defaults to \"production\" if defined in eas.json.","helpValue":"PROFILE_NAME"},"non-interactive":{"name":"non-interactive","type":"boolean","description":"Run command in non-interactive mode","allowNo":false},"local":{"name":"local","type":"boolean","description":"Run build locally [experimental]","allowNo":false},"wait":{"name":"wait","type":"boolean","description":"Wait for build(s) to complete","allowNo":true},"clear-cache":{"name":"clear-cache","type":"boolean","description":"Clear cache before the build","allowNo":false},"auto-submit":{"name":"auto-submit","type":"boolean","description":"Submit on build complete using the submit profile with the same name as the build profile","allowNo":false},"auto-submit-with-profile":{"name":"auto-submit-with-profile","type":"option","description":"Submit on build complete using the submit profile with provided name","helpValue":"PROFILE_NAME"}},"args":[]},"build:list":{"id":"build:list","description":"list all builds for your project","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"platform":{"name":"platform","type":"option","helpValue":"(all|android|ios)","options":["all","android","ios"]},"json":{"name":"json","type":"boolean","description":"Enable JSON output, non-JSON messages will be printed to stderr","allowNo":false},"status":{"name":"status","type":"option","helpValue":"(new|in-queue|in-progress|errored|finished|canceled)","options":["new","in-queue","in-progress","errored","finished","canceled"]},"distribution":{"name":"distribution","type":"option","helpValue":"(store|internal|simulator)","options":["store","internal","simulator"]},"channel":{"name":"channel","type":"option"},"appVersion":{"name":"appVersion","type":"option"},"appBuildVersion":{"name":"appBuildVersion","type":"option"},"sdkVersion":{"name":"sdkVersion","type":"option"},"runtimeVersion":{"name":"runtimeVersion","type":"option"},"appIdentifier":{"name":"appIdentifier","type":"option"},"buildProfile":{"name":"buildProfile","type":"option"},"gitCommitHash":{"name":"gitCommitHash","type":"option"},"limit":{"name":"limit","type":"option"}},"args":[]},"build:view":{"id":"build:view","description":"view a build for your project","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"Enable JSON output, non-JSON messages will be printed to stderr","allowNo":false}},"args":[{"name":"BUILD_ID"}]},"channel:create":{"id":"channel:create","description":"Create a channel on the current project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the new channel ID, name and branch mapping.","allowNo":false}},"args":[{"name":"name","description":"Name of the channel to create","required":false}]},"channel:edit":{"id":"channel:edit","description":"Point a channel at a new branch.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"branch":{"name":"branch","type":"option","description":"Name of the branch to point to"},"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the channel ID, name and branch mapping.","allowNo":false}},"args":[{"name":"name","description":"Name of the channel to edit","required":false}]},"channel:list":{"id":"channel:list","description":"List all channels on the current project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the channel ID, name and branch mapping.","allowNo":false}},"args":[]},"channel:rollout":{"id":"channel:rollout","description":"Rollout a new branch out to a channel incrementally.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"branch":{"name":"branch","type":"option","description":"branch to rollout","required":false},"percent":{"name":"percent","type":"option","description":"percent of traffic to redirect to the new branch","required":false},"end":{"name":"end","type":"boolean","description":"end the rollout","allowNo":false},"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the new channel ID, name and branch mapping","allowNo":false}},"args":[{"name":"channel","description":"rollout that the channel is on","required":true}]},"channel:view":{"id":"channel:view","description":"View a channel on the current project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the channel ID, name and branch mapping.","allowNo":false}},"args":[{"name":"name","description":"Name of the channel to view","required":false}]},"device:create":{"id":"device:create","description":"register new Apple Devices to use for internal distribution","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"device:list":{"id":"device:list","description":"list all registered devices for your account","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"apple-team-id":{"name":"apple-team-id","type":"option"}},"args":[]},"device:view":{"id":"device:view","description":"view a device for your project","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"UDID"}]},"project:info":{"id":"project:info","description":"information about the current project","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"project:init":{"id":"project:init","description":"create or link an EAS project","pluginName":"eas-cli","pluginType":"core","aliases":["init"],"flags":{},"args":[]},"secret:create":{"id":"secret:create","description":"Create an environment secret on the current project or owner account.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"scope":{"name":"scope","type":"option","description":"Scope for the secret","helpValue":"(account|project)","options":["account","project"],"default":"project"},"name":{"name":"name","type":"option","description":"Name of the secret"},"value":{"name":"value","type":"option","description":"Value of the secret"},"force":{"name":"force","type":"boolean","description":"Delete and recreate existing secrets","allowNo":false}},"args":[]},"secret:delete":{"id":"secret:delete","description":"Delete an environment secret by ID.\nUnsure where to find the secret's ID? Run eas secret:list","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"id":{"name":"id","type":"option","description":"ID of the secret to delete"}},"args":[]},"secret:list":{"id":"secret:list","description":"Lists environment secrets available for your current app","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"update:delete":{"id":"update:delete","description":"Delete all the updates in an update Group.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"Return a json with the group ID of the deleted updates.","allowNo":false}},"args":[{"name":"groupId","description":"The ID of an update group to delete.","required":true}]},"update:view":{"id":"update:view","description":"Update group details.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"Return a json with the updates belonging to the group.","allowNo":false}},"args":[{"name":"groupId","description":"The ID of an update group.","required":true}]},"webhook:create":{"id":"webhook:create","description":"Create a webhook on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"event":{"name":"event","type":"option","description":"Event type that triggers the webhook","helpValue":"(BUILD|SUBMIT)","options":["BUILD","SUBMIT"]},"url":{"name":"url","type":"option","description":"Webhook URL"},"secret":{"name":"secret","type":"option","description":"Secret used to create a hash signature of the request payload, provided in the 'Expo-Signature' header."}},"args":[]},"webhook:delete":{"id":"webhook:delete","description":"Delete a webhook on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"ID","description":"ID of the webhook to delete","required":false}]},"webhook:list":{"id":"webhook:list","description":"List webhooks on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"event":{"name":"event","type":"option","description":"Event type that triggers the webhook","helpValue":"(BUILD|SUBMIT)","options":["BUILD","SUBMIT"]}},"args":[]},"webhook:update":{"id":"webhook:update","description":"Create a webhook on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"id":{"name":"id","type":"option","description":"Webhook ID","required":true},"event":{"name":"event","type":"option","description":"Event type that triggers the webhook","helpValue":"(BUILD|SUBMIT)","options":["BUILD","SUBMIT"]},"url":{"name":"url","type":"option","description":"Webhook URL"},"secret":{"name":"secret","type":"option","description":"Secret used to create a hash signature of the request payload, provided in the 'Expo-Signature' header."}},"args":[]},"webhook:view":{"id":"webhook:view","description":"View a webhook on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"ID","description":"ID of the webhook to view","required":true}]}}}
1
+ {"version":"0.39.0","commands":{"analytics":{"id":"analytics","description":"view or change analytics settings","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"STATUS","options":["on","off"]}]},"config":{"id":"config","description":"show the eas.json config","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"platform":{"name":"platform","type":"option","char":"p","helpValue":"(android|ios)","options":["android","ios"]},"profile":{"name":"profile","type":"option"}},"args":[]},"credentials":{"id":"credentials","description":"manage your credentials","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"diagnostics":{"id":"diagnostics","description":"log environment info to the console","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"submit":{"id":"submit","description":"submit build archive to App Store Connect\nSee how to configure submits with eas.json: https://docs.expo.dev/submit/eas-json/","pluginName":"eas-cli","pluginType":"core","aliases":["build:submit"],"flags":{"platform":{"name":"platform","type":"option","char":"p","helpValue":"(android|ios|all)","options":["android","ios","all"]},"profile":{"name":"profile","type":"option","description":"Name of the submit profile from eas.json. Defaults to \"production\" if defined in eas.json."},"latest":{"name":"latest","type":"boolean","description":"Submit the latest build for specified platform","allowNo":false},"id":{"name":"id","type":"option","description":"ID of the build to submit"},"path":{"name":"path","type":"option","description":"Path to the .apk/.aab/.ipa file"},"url":{"name":"url","type":"option","description":"App archive url"},"verbose":{"name":"verbose","type":"boolean","description":"Always print logs from Submission Service","allowNo":false},"wait":{"name":"wait","type":"boolean","description":"Wait for submission to complete","allowNo":true},"non-interactive":{"name":"non-interactive","type":"boolean","description":"Run command in non-interactive mode","allowNo":false}},"args":[]},"account:login":{"id":"account:login","description":"log in with your Expo account","pluginName":"eas-cli","pluginType":"core","aliases":["login"],"flags":{},"args":[]},"account:logout":{"id":"account:logout","description":"log out","pluginName":"eas-cli","pluginType":"core","aliases":["logout"],"flags":{},"args":[]},"account:view":{"id":"account:view","description":"show the username you are logged in as","pluginName":"eas-cli","pluginType":"core","aliases":["whoami"],"flags":{},"args":[]},"branch:create":{"id":"branch:create","description":"Create a branch on the current project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"return a json with the new branch ID and name.","allowNo":false}},"args":[{"name":"name","description":"Name of the branch to create","required":false}]},"branch:delete":{"id":"branch:delete","description":"Republish an update group","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"return JSON with the edited branch's ID and name.","allowNo":false}},"args":[{"name":"name","description":"Name of the branch to delete","required":false}]},"branch:list":{"id":"branch:list","description":"List all branches on this project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"return output as JSON","allowNo":false}},"args":[]},"branch:publish":{"id":"branch:publish","description":"Publish an update group to a branch.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"message":{"name":"message","type":"option","description":"short message describing the updates.","required":false},"republish":{"name":"republish","type":"boolean","description":"republish an update group","allowNo":false},"group":{"name":"group","type":"option","description":"update group to republish"},"input-dir":{"name":"input-dir","type":"option","description":"location of the bundle","required":false,"default":"dist"},"skip-bundler":{"name":"skip-bundler","type":"boolean","description":"skip running Expo CLI to bundle the app before publishing","allowNo":false},"platform":{"name":"platform","type":"option","char":"p","description":"only publish to a single platform","required":false,"helpValue":"(android|ios|all)","options":["android","ios","all"],"default":"all"},"json":{"name":"json","type":"boolean","description":"return a json with the new update group.","allowNo":false},"auto":{"name":"auto","type":"boolean","description":"use the current git branch and commit message for the EAS branch and update message","allowNo":false}},"args":[{"name":"name","description":"Name of the branch to publish on"}]},"branch:rename":{"id":"branch:rename","description":"Rename a branch.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"from":{"name":"from","type":"option","description":"current name of the branch.","required":false},"to":{"name":"to","type":"option","description":"new name of the branch.","required":false},"json":{"name":"json","type":"boolean","description":"return a json with the edited branch's ID and name.","allowNo":false}},"args":[]},"branch:view":{"id":"branch:view","description":"View a branch.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"return a json with the branch's ID name and recent update groups.","allowNo":false}},"args":[{"name":"name","description":"Name of the branch to view","required":false}]},"build:cancel":{"id":"build:cancel","description":"Cancel a build.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"BUILD_ID"}]},"build:configure":{"id":"build:configure","description":"Configure the project to support EAS Build.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"platform":{"name":"platform","type":"option","char":"p","description":"Platform to configure","helpValue":"(android|ios|all)","options":["android","ios","all"]}},"args":[]},"build":{"id":"build","description":"start a build","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"platform":{"name":"platform","type":"option","char":"p","helpValue":"(android|ios|all)","options":["android","ios","all"]},"skip-credentials-check":{"name":"skip-credentials-check","type":"boolean","hidden":true,"allowNo":false},"json":{"name":"json","type":"boolean","description":"Enable JSON output, non-JSON messages will be printed to stderr","allowNo":false},"skip-project-configuration":{"name":"skip-project-configuration","type":"boolean","description":"Skip project configuration","allowNo":false},"profile":{"name":"profile","type":"option","description":"Name of the build profile from eas.json. Defaults to \"production\" if defined in eas.json.","helpValue":"PROFILE_NAME"},"non-interactive":{"name":"non-interactive","type":"boolean","description":"Run command in non-interactive mode","allowNo":false},"local":{"name":"local","type":"boolean","description":"Run build locally [experimental]","allowNo":false},"wait":{"name":"wait","type":"boolean","description":"Wait for build(s) to complete","allowNo":true},"clear-cache":{"name":"clear-cache","type":"boolean","description":"Clear cache before the build","allowNo":false},"auto-submit":{"name":"auto-submit","type":"boolean","description":"Submit on build complete using the submit profile with the same name as the build profile","allowNo":false},"auto-submit-with-profile":{"name":"auto-submit-with-profile","type":"option","description":"Submit on build complete using the submit profile with provided name","helpValue":"PROFILE_NAME"}},"args":[]},"build:list":{"id":"build:list","description":"list all builds for your project","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"platform":{"name":"platform","type":"option","helpValue":"(all|android|ios)","options":["all","android","ios"]},"json":{"name":"json","type":"boolean","description":"Enable JSON output, non-JSON messages will be printed to stderr","allowNo":false},"status":{"name":"status","type":"option","helpValue":"(new|in-queue|in-progress|errored|finished|canceled)","options":["new","in-queue","in-progress","errored","finished","canceled"]},"distribution":{"name":"distribution","type":"option","helpValue":"(store|internal|simulator)","options":["store","internal","simulator"]},"channel":{"name":"channel","type":"option"},"appVersion":{"name":"appVersion","type":"option"},"appBuildVersion":{"name":"appBuildVersion","type":"option"},"sdkVersion":{"name":"sdkVersion","type":"option"},"runtimeVersion":{"name":"runtimeVersion","type":"option"},"appIdentifier":{"name":"appIdentifier","type":"option"},"buildProfile":{"name":"buildProfile","type":"option"},"gitCommitHash":{"name":"gitCommitHash","type":"option"},"limit":{"name":"limit","type":"option"}},"args":[]},"build:view":{"id":"build:view","description":"view a build for your project","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"Enable JSON output, non-JSON messages will be printed to stderr","allowNo":false}},"args":[{"name":"BUILD_ID"}]},"channel:create":{"id":"channel:create","description":"Create a channel on the current project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the new channel ID, name and branch mapping.","allowNo":false}},"args":[{"name":"name","description":"Name of the channel to create","required":false}]},"channel:edit":{"id":"channel:edit","description":"Point a channel at a new branch.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"branch":{"name":"branch","type":"option","description":"Name of the branch to point to"},"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the channel ID, name and branch mapping.","allowNo":false}},"args":[{"name":"name","description":"Name of the channel to edit","required":false}]},"channel:list":{"id":"channel:list","description":"List all channels on the current project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the channel ID, name and branch mapping.","allowNo":false}},"args":[]},"channel:rollout":{"id":"channel:rollout","description":"Rollout a new branch out to a channel incrementally.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"branch":{"name":"branch","type":"option","description":"branch to rollout","required":false},"percent":{"name":"percent","type":"option","description":"percent of traffic to redirect to the new branch","required":false},"end":{"name":"end","type":"boolean","description":"end the rollout","allowNo":false},"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the new channel ID, name and branch mapping","allowNo":false}},"args":[{"name":"channel","description":"rollout that the channel is on","required":true}]},"channel:view":{"id":"channel:view","description":"View a channel on the current project.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"print output as a JSON object with the channel ID, name and branch mapping.","allowNo":false}},"args":[{"name":"name","description":"Name of the channel to view","required":false}]},"device:create":{"id":"device:create","description":"register new Apple Devices to use for internal distribution","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"device:list":{"id":"device:list","description":"list all registered devices for your account","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"apple-team-id":{"name":"apple-team-id","type":"option"}},"args":[]},"device:view":{"id":"device:view","description":"view a device for your project","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"UDID"}]},"project:info":{"id":"project:info","description":"information about the current project","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"project:init":{"id":"project:init","description":"create or link an EAS project","pluginName":"eas-cli","pluginType":"core","aliases":["init"],"flags":{},"args":[]},"secret:create":{"id":"secret:create","description":"Create an environment secret on the current project or owner account.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"scope":{"name":"scope","type":"option","description":"Scope for the secret","helpValue":"(account|project)","options":["account","project"],"default":"project"},"name":{"name":"name","type":"option","description":"Name of the secret"},"value":{"name":"value","type":"option","description":"Value of the secret"},"force":{"name":"force","type":"boolean","description":"Delete and recreate existing secrets","allowNo":false}},"args":[]},"secret:delete":{"id":"secret:delete","description":"Delete an environment secret by ID.\nUnsure where to find the secret's ID? Run eas secret:list","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"id":{"name":"id","type":"option","description":"ID of the secret to delete"}},"args":[]},"secret:list":{"id":"secret:list","description":"Lists environment secrets available for your current app","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"update:configure":{"id":"update:configure","description":"Configure the project to support EAS Update.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[]},"update:delete":{"id":"update:delete","description":"Delete all the updates in an update Group.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"Return a json with the group ID of the deleted updates.","allowNo":false}},"args":[{"name":"groupId","description":"The ID of an update group to delete.","required":true}]},"update:view":{"id":"update:view","description":"Update group details.","pluginName":"eas-cli","pluginType":"core","hidden":true,"aliases":[],"flags":{"json":{"name":"json","type":"boolean","description":"Return a json with the updates belonging to the group.","allowNo":false}},"args":[{"name":"groupId","description":"The ID of an update group.","required":true}]},"webhook:create":{"id":"webhook:create","description":"Create a webhook on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"event":{"name":"event","type":"option","description":"Event type that triggers the webhook","helpValue":"(BUILD|SUBMIT)","options":["BUILD","SUBMIT"]},"url":{"name":"url","type":"option","description":"Webhook URL"},"secret":{"name":"secret","type":"option","description":"Secret used to create a hash signature of the request payload, provided in the 'Expo-Signature' header."}},"args":[]},"webhook:delete":{"id":"webhook:delete","description":"Delete a webhook on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"ID","description":"ID of the webhook to delete","required":false}]},"webhook:list":{"id":"webhook:list","description":"List webhooks on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"event":{"name":"event","type":"option","description":"Event type that triggers the webhook","helpValue":"(BUILD|SUBMIT)","options":["BUILD","SUBMIT"]}},"args":[]},"webhook:update":{"id":"webhook:update","description":"Create a webhook on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{"id":{"name":"id","type":"option","description":"Webhook ID","required":true},"event":{"name":"event","type":"option","description":"Event type that triggers the webhook","helpValue":"(BUILD|SUBMIT)","options":["BUILD","SUBMIT"]},"url":{"name":"url","type":"option","description":"Webhook URL"},"secret":{"name":"secret","type":"option","description":"Secret used to create a hash signature of the request payload, provided in the 'Expo-Signature' header."}},"args":[]},"webhook:view":{"id":"webhook:view","description":"View a webhook on the current project.","pluginName":"eas-cli","pluginType":"core","aliases":[],"flags":{},"args":[{"name":"ID","description":"ID of the webhook to view","required":true}]}}}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "eas-cli",
3
3
  "description": "EAS command line tool",
4
- "version": "0.38.0",
4
+ "version": "0.39.0",
5
5
  "author": "Expo <support@expo.dev>",
6
6
  "bin": {
7
7
  "eas": "./bin/run"
@@ -9,18 +9,17 @@
9
9
  "bugs": "https://github.com/expo/eas-cli/issues",
10
10
  "dependencies": {
11
11
  "@expo/apple-utils": "0.0.0-alpha.26",
12
- "@expo/config": "6.0.7",
13
- "@expo/config-plugins": "4.0.7",
14
- "@expo/eas-build-job": "0.2.57",
15
- "@expo/eas-json": "^0.38.0",
16
- "@expo/json-file": "8.2.33",
17
- "@expo/pkcs12": "0.0.4",
18
- "@expo/plist": "0.0.14",
19
- "@expo/plugin-warn-if-update-available": "1.7.0",
20
- "@expo/prebuild-config": "3.0.7",
12
+ "@expo/config": "6.0.11",
13
+ "@expo/config-plugins": "4.0.11",
14
+ "@expo/eas-build-job": "0.2.61",
15
+ "@expo/eas-json": "^0.39.0",
16
+ "@expo/json-file": "8.2.34",
17
+ "@expo/pkcs12": "0.0.6",
18
+ "@expo/plist": "0.0.16",
19
+ "@expo/plugin-warn-if-update-available": "1.7.1",
20
+ "@expo/prebuild-config": "3.0.11",
21
21
  "@expo/results": "1.0.0",
22
22
  "@expo/rudder-sdk-node": "1.1.1",
23
- "@expo/sdk-runtime-versions": "1.0.0",
24
23
  "@expo/spawn-async": "1.5.0",
25
24
  "@expo/timeago.js": "1.0.0",
26
25
  "@oclif/command": "1.8.3",
@@ -96,7 +95,8 @@
96
95
  "mockdate": "^3.0.2",
97
96
  "nock": "^13.0.5",
98
97
  "tempy": "0.7.0",
99
- "ts-deepmerge": "1.0.8"
98
+ "ts-deepmerge": "1.0.8",
99
+ "typescript": "4.5.2"
100
100
  },
101
101
  "engines": {
102
102
  "node": ">=12.0.0"
@@ -179,5 +179,5 @@
179
179
  "generate-graphql-code": "graphql-codegen --config graphql-codegen.yml",
180
180
  "clean": "rm -rf dist build node_modules yarn-error.log"
181
181
  },
182
- "gitHead": "27c69ec8e1ce53f43c3ee04b0d35274a2afabab9"
182
+ "gitHead": "a344c11ba143819d4e3ac0b0ebcea1d69d7de2b5"
183
183
  }