eas-cli 18.0.6 → 18.2.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 (184) hide show
  1. package/README.md +521 -507
  2. package/bin/dev +6 -13
  3. package/bin/run +4 -4
  4. package/build/commandUtils/flags.d.ts +16 -6
  5. package/build/commandUtils/flags.js +21 -9
  6. package/build/commandUtils/pagination.d.ts +4 -4
  7. package/build/commandUtils/pagination.js +4 -2
  8. package/build/commandUtils/workflow/inputs.js +2 -2
  9. package/build/commandUtils/workflow/parse.d.ts +3 -0
  10. package/build/commandUtils/workflow/parse.js +12 -0
  11. package/build/commandUtils/workflow/validation.d.ts +0 -3
  12. package/build/commandUtils/workflow/validation.js +2 -6
  13. package/build/commands/account/usage.d.ts +2 -3
  14. package/build/commands/account/usage.js +5 -5
  15. package/build/commands/analytics.d.ts +2 -3
  16. package/build/commands/analytics.js +6 -1
  17. package/build/commands/branch/create.d.ts +2 -4
  18. package/build/commands/branch/create.js +10 -6
  19. package/build/commands/branch/delete.d.ts +2 -4
  20. package/build/commands/branch/delete.js +6 -6
  21. package/build/commands/branch/list.d.ts +1 -1
  22. package/build/commands/branch/list.js +2 -1
  23. package/build/commands/branch/rename.d.ts +2 -2
  24. package/build/commands/branch/rename.js +2 -1
  25. package/build/commands/branch/view.d.ts +3 -5
  26. package/build/commands/branch/view.js +6 -6
  27. package/build/commands/build/cancel.d.ts +4 -4
  28. package/build/commands/build/cancel.js +6 -4
  29. package/build/commands/build/configure.d.ts +1 -1
  30. package/build/commands/build/configure.js +2 -2
  31. package/build/commands/build/delete.d.ts +4 -4
  32. package/build/commands/build/delete.js +6 -4
  33. package/build/commands/build/dev.d.ts +2 -2
  34. package/build/commands/build/dev.js +2 -2
  35. package/build/commands/build/download.d.ts +2 -2
  36. package/build/commands/build/download.js +4 -3
  37. package/build/commands/build/index.d.ts +8 -8
  38. package/build/commands/build/index.js +8 -11
  39. package/build/commands/build/inspect.d.ts +4 -4
  40. package/build/commands/build/inspect.js +4 -4
  41. package/build/commands/build/internal.d.ts +3 -3
  42. package/build/commands/build/internal.js +2 -2
  43. package/build/commands/build/list.d.ts +13 -13
  44. package/build/commands/build/list.js +8 -7
  45. package/build/commands/build/resign.d.ts +5 -5
  46. package/build/commands/build/resign.js +4 -4
  47. package/build/commands/build/run.d.ts +6 -6
  48. package/build/commands/build/run.js +2 -2
  49. package/build/commands/build/version/get.d.ts +2 -2
  50. package/build/commands/build/version/get.js +8 -7
  51. package/build/commands/build/version/set.d.ts +2 -2
  52. package/build/commands/build/version/set.js +2 -2
  53. package/build/commands/build/version/sync.d.ts +2 -2
  54. package/build/commands/build/version/sync.js +2 -2
  55. package/build/commands/build/view.d.ts +2 -2
  56. package/build/commands/build/view.js +4 -1
  57. package/build/commands/channel/create.d.ts +2 -4
  58. package/build/commands/channel/create.js +10 -6
  59. package/build/commands/channel/delete.d.ts +2 -4
  60. package/build/commands/channel/delete.js +7 -6
  61. package/build/commands/channel/edit.d.ts +3 -5
  62. package/build/commands/channel/edit.js +6 -6
  63. package/build/commands/channel/list.d.ts +1 -1
  64. package/build/commands/channel/list.js +1 -1
  65. package/build/commands/channel/pause.d.ts +3 -5
  66. package/build/commands/channel/pause.js +6 -6
  67. package/build/commands/channel/resume.d.ts +3 -5
  68. package/build/commands/channel/resume.js +6 -6
  69. package/build/commands/channel/rollout.d.ts +8 -9
  70. package/build/commands/channel/rollout.js +9 -11
  71. package/build/commands/channel/view.d.ts +3 -5
  72. package/build/commands/channel/view.js +6 -6
  73. package/build/commands/config.d.ts +2 -2
  74. package/build/commands/config.js +6 -5
  75. package/build/commands/credentials/configure-build.d.ts +2 -2
  76. package/build/commands/credentials/configure-build.js +2 -2
  77. package/build/commands/credentials/index.d.ts +1 -1
  78. package/build/commands/credentials/index.js +1 -1
  79. package/build/commands/deploy/alias/delete.d.ts +2 -2
  80. package/build/commands/deploy/alias/delete.js +7 -3
  81. package/build/commands/deploy/alias/index.d.ts +2 -2
  82. package/build/commands/deploy/alias/index.js +3 -2
  83. package/build/commands/deploy/delete.d.ts +2 -2
  84. package/build/commands/deploy/delete.js +7 -3
  85. package/build/commands/deploy/index.d.ts +5 -4
  86. package/build/commands/deploy/index.js +12 -3
  87. package/build/commands/device/delete.d.ts +2 -2
  88. package/build/commands/device/list.d.ts +2 -2
  89. package/build/commands/device/rename.d.ts +3 -3
  90. package/build/commands/device/view.d.ts +2 -2
  91. package/build/commands/device/view.js +4 -1
  92. package/build/commands/env/create.d.ts +8 -11
  93. package/build/commands/env/create.js +6 -7
  94. package/build/commands/env/delete.d.ts +5 -8
  95. package/build/commands/env/delete.js +4 -5
  96. package/build/commands/env/exec.d.ts +3 -4
  97. package/build/commands/env/exec.js +7 -8
  98. package/build/commands/env/get.d.ts +6 -9
  99. package/build/commands/env/get.js +4 -5
  100. package/build/commands/env/list.d.ts +5 -8
  101. package/build/commands/env/list.js +4 -5
  102. package/build/commands/env/pull.d.ts +4 -6
  103. package/build/commands/env/pull.js +4 -5
  104. package/build/commands/env/push.d.ts +7 -7
  105. package/build/commands/env/push.js +4 -5
  106. package/build/commands/env/update.d.ts +10 -13
  107. package/build/commands/env/update.js +6 -7
  108. package/build/commands/fingerprint/compare.d.ts +6 -7
  109. package/build/commands/fingerprint/compare.js +10 -11
  110. package/build/commands/fingerprint/generate.d.ts +3 -3
  111. package/build/commands/fingerprint/generate.js +4 -3
  112. package/build/commands/go.d.ts +2 -2
  113. package/build/commands/go.js +1 -2
  114. package/build/commands/metadata/lint.d.ts +1 -1
  115. package/build/commands/metadata/pull.d.ts +1 -1
  116. package/build/commands/metadata/push.d.ts +1 -1
  117. package/build/commands/project/init.d.ts +1 -1
  118. package/build/commands/project/new.d.ts +3 -5
  119. package/build/commands/project/new.js +6 -7
  120. package/build/commands/project/onboarding.d.ts +2 -2
  121. package/build/commands/project/onboarding.js +4 -1
  122. package/build/commands/secret/create.d.ts +4 -4
  123. package/build/commands/secret/create.js +7 -6
  124. package/build/commands/secret/delete.d.ts +1 -1
  125. package/build/commands/secret/push.d.ts +2 -2
  126. package/build/commands/secret/push.js +2 -2
  127. package/build/commands/submit/internal.d.ts +3 -3
  128. package/build/commands/submit/internal.js +2 -2
  129. package/build/commands/submit.d.ts +7 -7
  130. package/build/commands/submit.js +2 -2
  131. package/build/commands/update/configure.d.ts +2 -2
  132. package/build/commands/update/configure.js +2 -7
  133. package/build/commands/update/delete.d.ts +2 -4
  134. package/build/commands/update/delete.js +7 -6
  135. package/build/commands/update/edit.d.ts +4 -5
  136. package/build/commands/update/edit.js +7 -6
  137. package/build/commands/update/index.d.ts +9 -9
  138. package/build/commands/update/index.js +30 -14
  139. package/build/commands/update/list.d.ts +4 -4
  140. package/build/commands/update/list.js +4 -3
  141. package/build/commands/update/republish.d.ts +9 -9
  142. package/build/commands/update/republish.js +4 -4
  143. package/build/commands/update/revert-update-rollout.d.ts +5 -5
  144. package/build/commands/update/revert-update-rollout.js +2 -2
  145. package/build/commands/update/roll-back-to-embedded.d.ts +6 -6
  146. package/build/commands/update/roll-back-to-embedded.js +4 -4
  147. package/build/commands/update/rollback.d.ts +1 -1
  148. package/build/commands/update/view.d.ts +2 -4
  149. package/build/commands/update/view.js +5 -5
  150. package/build/commands/upload.d.ts +3 -3
  151. package/build/commands/upload.js +4 -3
  152. package/build/commands/webhook/create.d.ts +3 -3
  153. package/build/commands/webhook/create.js +2 -2
  154. package/build/commands/webhook/delete.d.ts +2 -4
  155. package/build/commands/webhook/delete.js +8 -6
  156. package/build/commands/webhook/list.d.ts +1 -1
  157. package/build/commands/webhook/list.js +2 -2
  158. package/build/commands/webhook/update.d.ts +4 -4
  159. package/build/commands/webhook/update.js +2 -2
  160. package/build/commands/webhook/view.d.ts +2 -4
  161. package/build/commands/webhook/view.js +5 -5
  162. package/build/commands/workflow/create.d.ts +2 -4
  163. package/build/commands/workflow/create.js +4 -5
  164. package/build/commands/workflow/logs.d.ts +2 -3
  165. package/build/commands/workflow/logs.js +5 -3
  166. package/build/commands/workflow/run.d.ts +4 -5
  167. package/build/commands/workflow/run.js +6 -1
  168. package/build/commands/workflow/runs.d.ts +2 -2
  169. package/build/commands/workflow/runs.js +2 -2
  170. package/build/commands/workflow/status.d.ts +2 -3
  171. package/build/commands/workflow/status.js +7 -5
  172. package/build/commands/workflow/validate.d.ts +2 -4
  173. package/build/commands/workflow/validate.js +5 -5
  174. package/build/commands/workflow/view.d.ts +2 -3
  175. package/build/commands/workflow/view.js +6 -1
  176. package/build/credentials/android/actions/BuildCredentialsUtils.js +0 -1
  177. package/build/credentials/android/actions/CreateKeystore.js +9 -10
  178. package/build/credentials/android/actions/SetUpBuildCredentials.js +0 -4
  179. package/build/update/utils.d.ts +2 -2
  180. package/build/update/utils.js +21 -10
  181. package/build/worker/assets.d.ts +3 -1
  182. package/build/worker/assets.js +4 -1
  183. package/oclif.manifest.json +7133 -2227
  184. package/package.json +7 -7
@@ -33,6 +33,7 @@ const uniqBy_1 = tslib_1.__importDefault(require("../../utils/expodash/uniqBy"))
33
33
  const formatFields_1 = tslib_1.__importDefault(require("../../utils/formatFields"));
34
34
  const json_1 = require("../../utils/json");
35
35
  const statuspageService_1 = require("../../utils/statuspageService");
36
+ const prompts_1 = require("../../utils/prompts");
36
37
  /**
37
38
  * Preprocess argv to handle --source-maps with optional value.
38
39
  * If --source-maps is followed by another flag (starts with -) or end of args,
@@ -102,12 +103,12 @@ class UpdatePublish extends EasCommand_1.default {
102
103
  min: 0,
103
104
  max: 100,
104
105
  }),
105
- platform: core_1.Flags.enum({
106
+ platform: core_1.Flags.option({
106
107
  char: 'p',
107
108
  options: Object.values(platform_1.RequestedPlatform), // TODO: Add web when it's fully supported
108
109
  default: platform_1.RequestedPlatform.All,
109
110
  required: false,
110
- }),
111
+ })(),
111
112
  auto: core_1.Flags.boolean({
112
113
  description: 'Use the current git branch and commit message for the EAS branch and update message',
113
114
  default: false,
@@ -116,7 +117,7 @@ class UpdatePublish extends EasCommand_1.default {
116
117
  description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory. Only relevant if you are using code signing: https://docs.expo.dev/eas-update/code-signing/`,
117
118
  required: false,
118
119
  }),
119
- ...flags_1.EasUpdateEnvironmentFlag,
120
+ ...flags_1.EasUpdateEnvironmentRequiredFlag,
120
121
  ...flags_1.EasNonInteractiveAndJsonFlags,
121
122
  };
122
123
  static contextDefinition = {
@@ -130,10 +131,10 @@ class UpdatePublish extends EasCommand_1.default {
130
131
  const preprocessedArgv = preprocessSourceMapsArg(this.argv);
131
132
  const { flags: rawFlags } = await this.parse(UpdatePublish, preprocessedArgv);
132
133
  const paginatedQueryOptions = (0, pagination_1.getPaginatedQueryOptions)(rawFlags);
133
- const { auto: autoFlag, platform: requestedPlatform, channelName: channelNameArg, updateMessage: updateMessageArg, inputDir, skipBundler, clearCache, noBytecode, sourceMaps, privateKeyPath, json: jsonFlag, nonInteractive, branchName: branchNameArg, emitMetadata, rolloutPercentage, environment, } = this.sanitizeFlags(rawFlags);
134
+ const { auto: autoFlag, platform: requestedPlatform, channelName: channelNameArg, updateMessage: updateMessageArg, inputDir, skipBundler, clearCache, noBytecode, sourceMaps, privateKeyPath, json: jsonFlag, nonInteractive, branchName: branchNameArg, emitMetadata, rolloutPercentage, environment: environmentFromFlags, } = this.sanitizeFlags(rawFlags);
134
135
  const { getDynamicPublicProjectConfigAsync, getDynamicPrivateProjectConfigAsync, loggedIn: { graphqlClient }, vcsClient, getServerSideEnvironmentVariablesAsync, } = await this.getContextAsync(UpdatePublish, {
135
136
  nonInteractive,
136
- withServerSideEnvironment: environment ?? null,
137
+ withServerSideEnvironment: environmentFromFlags ?? null,
137
138
  });
138
139
  if (jsonFlag) {
139
140
  (0, json_1.enableJsonOutput)();
@@ -141,10 +142,20 @@ class UpdatePublish extends EasCommand_1.default {
141
142
  await vcsClient.ensureRepoExistsAsync();
142
143
  await (0, repository_1.ensureRepoIsCleanAsync)(vcsClient, nonInteractive);
143
144
  const { exp: expPossiblyWithoutEasUpdateConfigured, projectId, projectDir, } = await getDynamicPublicProjectConfigAsync();
144
- (0, utils_1.assertEnvironmentFlagForSdk55OrGreater)({
145
- sdkVersion: expPossiblyWithoutEasUpdateConfigured.sdkVersion,
146
- environment,
147
- });
145
+ let environment = environmentFromFlags;
146
+ // Environment handling
147
+ if (!autoFlag &&
148
+ (0, utils_1.environmentFlagNeededForSdk550OrGreater)({
149
+ sdkVersion: expPossiblyWithoutEasUpdateConfigured.sdkVersion,
150
+ environment: environmentFromFlags,
151
+ })) {
152
+ environment = await (0, prompts_1.promptVariableEnvironmentAsync)({
153
+ multiple: false,
154
+ graphqlClient,
155
+ nonInteractive,
156
+ projectId,
157
+ });
158
+ }
148
159
  await (0, statuspageService_1.maybeWarnAboutEasOutagesAsync)(graphqlClient, [generated_1.StatuspageServiceName.EasUpdate]);
149
160
  const easJsonAccessor = eas_json_1.EasJsonAccessor.fromProjectPath(projectDir);
150
161
  const easJsonCliConfig = (await eas_json_1.EasJsonUtils.getCliConfigAsync(easJsonAccessor)) ?? {};
@@ -176,8 +187,11 @@ class UpdatePublish extends EasCommand_1.default {
176
187
  nonInteractive,
177
188
  jsonFlag,
178
189
  });
179
- const maybeServerEnv = environment
180
- ? { ...(await getServerSideEnvironmentVariablesAsync()), EXPO_NO_DOTENV: '1' }
190
+ const maybeServerEnv = environmentFromFlags
191
+ ? {
192
+ ...(await getServerSideEnvironmentVariablesAsync()),
193
+ EXPO_NO_DOTENV: '1',
194
+ }
181
195
  : {};
182
196
  // build bundle and upload assets for a new publish
183
197
  if (!skipBundler) {
@@ -201,7 +215,9 @@ class UpdatePublish extends EasCommand_1.default {
201
215
  }
202
216
  }
203
217
  // After possibly bundling, assert that the input directory can be found.
204
- const distRoot = await (0, publish_1.resolveInputDirectoryAsync)(inputDir, { skipBundler });
218
+ const distRoot = await (0, publish_1.resolveInputDirectoryAsync)(inputDir, {
219
+ skipBundler,
220
+ });
205
221
  const assetSpinner = (0, ora_1.ora)().start('Uploading...');
206
222
  let unsortedUpdateInfoGroups = {};
207
223
  let uploadedAssetCount = 0;
@@ -495,7 +511,7 @@ class UpdatePublish extends EasCommand_1.default {
495
511
  }
496
512
  }
497
513
  sanitizeFlags(flags) {
498
- const nonInteractive = flags['non-interactive'] ?? false;
514
+ const { json, nonInteractive } = (0, flags_1.resolveNonInteractiveAndJsonFlags)(flags);
499
515
  const { auto, branch: branchName, channel: channelName, message: updateMessage } = flags;
500
516
  if (nonInteractive && !auto && !(updateMessage && (branchName || channelName))) {
501
517
  core_1.Errors.error('--branch and --message, or --channel and --message are required when updating in non-interactive mode unless --auto is specified', { exit: 1 });
@@ -521,7 +537,7 @@ class UpdatePublish extends EasCommand_1.default {
521
537
  rolloutPercentage: flags['rollout-percentage'],
522
538
  nonInteractive,
523
539
  emitMetadata,
524
- json: flags.json ?? false,
540
+ json,
525
541
  environment: flags['environment'],
526
542
  };
527
543
  }
@@ -6,11 +6,11 @@ export default class UpdateList extends EasCommand {
6
6
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
7
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
8
  limit: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined>;
9
- offset: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined>;
10
- branch: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
9
+ offset: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ branch: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  all: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
- platform: import("@oclif/core/lib/interfaces").OptionFlag<RequestedPlatform | undefined>;
13
- 'runtime-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
12
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<RequestedPlatform | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ 'runtime-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
14
14
  };
15
15
  static contextDefinition: {
16
16
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
@@ -22,11 +22,11 @@ class UpdateList extends EasCommand_1.default {
22
22
  exclusive: ['branch'],
23
23
  default: false,
24
24
  }),
25
- platform: core_1.Flags.enum({
25
+ platform: core_1.Flags.option({
26
26
  options: Object.values(platform_1.RequestedPlatform),
27
27
  char: 'p',
28
28
  description: 'Filter updates by platform',
29
- }),
29
+ })(),
30
30
  'runtime-version': core_1.Flags.string({
31
31
  description: 'Filter updates by runtime version',
32
32
  }),
@@ -40,7 +40,8 @@ class UpdateList extends EasCommand_1.default {
40
40
  };
41
41
  async runAsync() {
42
42
  const { flags } = await this.parse(UpdateList);
43
- const { branch: branchFlag, all, json: jsonFlag, 'non-interactive': nonInteractive, platform: requestedPlatform, } = flags;
43
+ const { branch: branchFlag, all, platform: requestedPlatform } = flags;
44
+ const { json: jsonFlag, nonInteractive } = (0, flags_1.resolveNonInteractiveAndJsonFlags)(flags);
44
45
  const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(UpdateList, {
45
46
  nonInteractive,
46
47
  });
@@ -4,15 +4,15 @@ export default class UpdateRepublish extends EasCommand {
4
4
  static flags: {
5
5
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
6
6
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
- channel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
8
- branch: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
9
- group: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
10
- 'destination-channel': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
11
- 'destination-branch': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
12
- message: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
13
- platform: import("@oclif/core/lib/interfaces").OptionFlag<string>;
14
- 'private-key-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
15
- 'rollout-percentage': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined>;
7
+ channel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ branch: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ group: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ 'destination-channel': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ 'destination-branch': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ message: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<"android" | "ios" | "all" | "web", import("@oclif/core/lib/interfaces").CustomOptions>;
14
+ 'private-key-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
15
+ 'rollout-percentage': import("@oclif/core/lib/interfaces").OptionFlag<number | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
16
16
  };
17
17
  static contextDefinition: {
18
18
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
@@ -39,12 +39,12 @@ class UpdateRepublish extends EasCommand_1.default {
39
39
  description: 'Short message describing the republished update group',
40
40
  required: false,
41
41
  }),
42
- platform: core_1.Flags.enum({
42
+ platform: core_1.Flags.option({
43
43
  char: 'p',
44
44
  options: [...defaultRepublishPlatforms, 'all'],
45
45
  default: 'all',
46
46
  required: false,
47
- }),
47
+ })(),
48
48
  'private-key-path': core_1.Flags.string({
49
49
  description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory. Only relevant if you are using code signing: https://docs.expo.dev/eas-update/code-signing/`,
50
50
  required: false,
@@ -105,12 +105,12 @@ class UpdateRepublish extends EasCommand_1.default {
105
105
  });
106
106
  }
107
107
  sanitizeFlags(rawFlags) {
108
+ const { json, nonInteractive } = (0, flags_1.resolveNonInteractiveAndJsonFlags)(rawFlags);
108
109
  const branchName = rawFlags.branch;
109
110
  const channelName = rawFlags.channel;
110
111
  const groupId = rawFlags.group;
111
112
  const destinationChannelName = rawFlags['destination-channel'];
112
113
  const destinationBranchName = rawFlags['destination-branch'];
113
- const nonInteractive = rawFlags['non-interactive'];
114
114
  const privateKeyPath = rawFlags['private-key-path'];
115
115
  if (nonInteractive && !groupId) {
116
116
  throw new Error('Only --group can be used in non-interactive mode');
@@ -126,7 +126,7 @@ class UpdateRepublish extends EasCommand_1.default {
126
126
  updateMessage: rawFlags.message,
127
127
  privateKeyPath,
128
128
  rolloutPercentage: rawFlags['rollout-percentage'],
129
- json: rawFlags.json ?? false,
129
+ json,
130
130
  nonInteractive,
131
131
  };
132
132
  }
@@ -5,11 +5,11 @@ export default class UpdateRevertUpdateRollout extends EasCommand {
5
5
  static flags: {
6
6
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
7
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
- channel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
9
- branch: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
10
- group: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
11
- message: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
12
- 'private-key-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
8
+ channel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ branch: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ group: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ message: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ 'private-key-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
13
  };
14
14
  static contextDefinition: {
15
15
  vcsClient: import("../../commandUtils/context/VcsClientContextField").default;
@@ -219,10 +219,10 @@ class UpdateRevertUpdateRollout extends EasCommand_1.default {
219
219
  log_1.default.debug('Rollout update group deletion result', { successfulReceipt });
220
220
  }
221
221
  sanitizeFlags(rawFlags) {
222
+ const { json, nonInteractive } = (0, flags_1.resolveNonInteractiveAndJsonFlags)(rawFlags);
222
223
  const branchName = rawFlags.branch;
223
224
  const channelName = rawFlags.channel;
224
225
  const groupId = rawFlags.group;
225
- const nonInteractive = rawFlags['non-interactive'];
226
226
  const privateKeyPath = rawFlags['private-key-path'];
227
227
  if (nonInteractive && !groupId) {
228
228
  throw new Error('Only --group can be used in non-interactive mode');
@@ -233,7 +233,7 @@ class UpdateRevertUpdateRollout extends EasCommand_1.default {
233
233
  groupId,
234
234
  updateMessage: rawFlags.message,
235
235
  privateKeyPath,
236
- json: rawFlags.json ?? false,
236
+ json,
237
237
  nonInteractive,
238
238
  };
239
239
  }
@@ -4,12 +4,12 @@ export default class UpdateRollBackToEmbedded extends EasCommand {
4
4
  static flags: {
5
5
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
6
6
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
- branch: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
8
- channel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
9
- 'runtime-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
10
- message: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
11
- platform: import("@oclif/core/lib/interfaces").OptionFlag<string>;
12
- 'private-key-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
7
+ branch: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ channel: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'runtime-version': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ message: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<"android" | "ios" | "all", import("@oclif/core/lib/interfaces").CustomOptions>;
12
+ 'private-key-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
13
13
  };
14
14
  static contextDefinition: {
15
15
  vcsClient: import("../../commandUtils/context/VcsClientContextField").default;
@@ -35,7 +35,7 @@ class UpdateRollBackToEmbedded extends EasCommand_1.default {
35
35
  description: 'A short message describing the rollback to embedded update',
36
36
  required: false,
37
37
  }),
38
- platform: core_1.Flags.enum({
38
+ platform: core_1.Flags.option({
39
39
  char: 'p',
40
40
  options: [
41
41
  // TODO: Add web when it's fully supported
@@ -44,7 +44,7 @@ class UpdateRollBackToEmbedded extends EasCommand_1.default {
44
44
  ],
45
45
  default: 'all',
46
46
  required: false,
47
- }),
47
+ })(),
48
48
  'private-key-path': core_1.Flags.string({
49
49
  description: `File containing the PEM-encoded private key corresponding to the certificate in expo-updates' configuration. Defaults to a file named "private-key.pem" in the certificate's directory. Only relevant if you are using code signing: https://docs.expo.dev/eas-update/code-signing/`,
50
50
  required: false,
@@ -127,7 +127,7 @@ class UpdateRollBackToEmbedded extends EasCommand_1.default {
127
127
  });
128
128
  }
129
129
  sanitizeFlags(flags) {
130
- const nonInteractive = flags['non-interactive'] ?? false;
130
+ const { json, nonInteractive } = (0, flags_1.resolveNonInteractiveAndJsonFlags)(flags);
131
131
  const { branch: branchName, channel: channelName, message: updateMessage, 'runtime-version': runtimeVersion, } = flags;
132
132
  if (nonInteractive && !(updateMessage && (branchName || channelName))) {
133
133
  core_1.Errors.error('--branch and --message, or --channel and --message are required in non-interactive mode', { exit: 1 });
@@ -143,7 +143,7 @@ class UpdateRollBackToEmbedded extends EasCommand_1.default {
143
143
  platform: flags.platform,
144
144
  privateKeyPath: flags['private-key-path'],
145
145
  nonInteractive,
146
- json: flags.json ?? false,
146
+ json,
147
147
  };
148
148
  }
149
149
  }
@@ -2,7 +2,7 @@ import EasCommand from '../../commandUtils/EasCommand';
2
2
  export default class UpdateRollback extends EasCommand {
3
3
  static description: string;
4
4
  static flags: {
5
- 'private-key-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
5
+ 'private-key-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
6
6
  };
7
7
  runAsync(): Promise<void>;
8
8
  }
@@ -2,10 +2,8 @@ import EasCommand from '../../commandUtils/EasCommand';
2
2
  export default class UpdateView extends EasCommand {
3
3
  static description: string;
4
4
  static args: {
5
- name: string;
6
- required: boolean;
7
- description: string;
8
- }[];
5
+ groupId: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
9
7
  static flags: {
10
8
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
9
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const core_1 = require("@oclif/core");
4
5
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
5
6
  const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
6
7
  const flags_1 = require("../../commandUtils/flags");
@@ -10,13 +11,12 @@ const utils_1 = require("../../update/utils");
10
11
  const json_1 = require("../../utils/json");
11
12
  class UpdateView extends EasCommand_1.default {
12
13
  static description = 'update group details';
13
- static args = [
14
- {
15
- name: 'groupId',
14
+ static args = {
15
+ groupId: core_1.Args.string({
16
16
  required: true,
17
17
  description: 'The ID of an update group.',
18
- },
19
- ];
18
+ }),
19
+ };
20
20
  static flags = {
21
21
  ...flags_1.EasJsonOnlyFlag,
22
22
  };
@@ -5,9 +5,9 @@ export default class BuildUpload extends EasCommand {
5
5
  static flags: {
6
6
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
7
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
8
- platform: import("@oclif/core/lib/interfaces").OptionFlag<Platform | undefined>;
9
- 'build-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
10
- fingerprint: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
8
+ platform: import("@oclif/core/lib/interfaces").OptionFlag<Platform | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ 'build-path': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ fingerprint: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  };
12
12
  static contextDefinition: {
13
13
  loggedIn: import("../commandUtils/context/LoggedInContextField").default;
@@ -29,10 +29,10 @@ const progress_1 = require("../utils/progress");
29
29
  class BuildUpload extends EasCommand_1.default {
30
30
  static description = 'upload a local build and generate a sharable link';
31
31
  static flags = {
32
- platform: core_1.Flags.enum({
32
+ platform: core_1.Flags.option({
33
33
  char: 'p',
34
34
  options: [eas_build_job_1.Platform.IOS, eas_build_job_1.Platform.ANDROID],
35
- }),
35
+ })(),
36
36
  'build-path': core_1.Flags.string({
37
37
  description: 'Path for the local build',
38
38
  }),
@@ -47,7 +47,8 @@ class BuildUpload extends EasCommand_1.default {
47
47
  };
48
48
  async runAsync() {
49
49
  const { flags } = await this.parse(BuildUpload);
50
- const { 'build-path': buildPath, fingerprint: manualFingerprintHash, json: jsonFlag, 'non-interactive': nonInteractive, } = flags;
50
+ const { 'build-path': buildPath, fingerprint: manualFingerprintHash } = flags;
51
+ const { json: jsonFlag, nonInteractive } = (0, flags_1.resolveNonInteractiveAndJsonFlags)(flags);
51
52
  const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(BuildUpload, {
52
53
  nonInteractive,
53
54
  });
@@ -4,9 +4,9 @@ export default class WebhookCreate extends EasCommand {
4
4
  static description: string;
5
5
  static flags: {
6
6
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
- event: import("@oclif/core/lib/interfaces").OptionFlag<WebhookType | undefined>;
8
- url: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
9
- secret: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
7
+ event: import("@oclif/core/lib/interfaces").OptionFlag<WebhookType | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ url: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ secret: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
10
  };
11
11
  static contextDefinition: {
12
12
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
@@ -11,10 +11,10 @@ const input_1 = require("../../webhooks/input");
11
11
  class WebhookCreate extends EasCommand_1.default {
12
12
  static description = 'create a webhook';
13
13
  static flags = {
14
- event: core_1.Flags.enum({
14
+ event: core_1.Flags.option({
15
15
  description: 'Event type that triggers the webhook',
16
16
  options: [generated_1.WebhookType.Build, generated_1.WebhookType.Submit],
17
- }),
17
+ })(),
18
18
  url: core_1.Flags.string({
19
19
  description: 'Webhook URL',
20
20
  }),
@@ -2,10 +2,8 @@ import EasCommand from '../../commandUtils/EasCommand';
2
2
  export default class WebhookDelete extends EasCommand {
3
3
  static description: string;
4
4
  static args: {
5
- name: string;
6
- required: boolean;
7
- description: string;
8
- }[];
5
+ ID: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
6
+ };
9
7
  static flags: {
10
8
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
9
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const core_1 = require("@oclif/core");
4
5
  const assert_1 = tslib_1.__importDefault(require("assert"));
5
6
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
6
7
  const nullthrows_1 = tslib_1.__importDefault(require("nullthrows"));
@@ -14,13 +15,12 @@ const prompts_1 = require("../../prompts");
14
15
  const formatWebhook_1 = require("../../webhooks/formatWebhook");
15
16
  class WebhookDelete extends EasCommand_1.default {
16
17
  static description = 'delete a webhook';
17
- static args = [
18
- {
19
- name: 'ID',
18
+ static args = {
19
+ ID: core_1.Args.string({
20
20
  required: false,
21
21
  description: 'ID of the webhook to delete',
22
- },
23
- ];
22
+ }),
23
+ };
24
24
  static flags = {
25
25
  ...flags_1.EASNonInteractiveFlag,
26
26
  };
@@ -33,7 +33,9 @@ class WebhookDelete extends EasCommand_1.default {
33
33
  const { projectId, loggedIn: { graphqlClient }, } = await this.getContextAsync(WebhookDelete, {
34
34
  nonInteractive,
35
35
  });
36
- let webhook = webhookId && (await WebhookQuery_1.WebhookQuery.byIdAsync(graphqlClient, webhookId));
36
+ let webhook = webhookId
37
+ ? await WebhookQuery_1.WebhookQuery.byIdAsync(graphqlClient, webhookId)
38
+ : undefined;
37
39
  if (!webhookId) {
38
40
  const webhooks = await fetchWebhooksByAppIdAsync(graphqlClient, projectId);
39
41
  if (webhooks.length === 0) {
@@ -4,7 +4,7 @@ export default class WebhookList extends EasCommand {
4
4
  static description: string;
5
5
  static flags: {
6
6
  json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
- event: import("@oclif/core/lib/interfaces").OptionFlag<WebhookType | undefined>;
7
+ event: import("@oclif/core/lib/interfaces").OptionFlag<WebhookType | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
8
8
  };
9
9
  static contextDefinition: {
10
10
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
@@ -15,10 +15,10 @@ const formatWebhook_1 = require("../../webhooks/formatWebhook");
15
15
  class WebhookList extends EasCommand_1.default {
16
16
  static description = 'list webhooks';
17
17
  static flags = {
18
- event: core_1.Flags.enum({
18
+ event: core_1.Flags.option({
19
19
  description: 'Event type that triggers the webhook',
20
20
  options: [generated_1.WebhookType.Build, generated_1.WebhookType.Submit],
21
- }),
21
+ })(),
22
22
  ...flags_1.EasJsonOnlyFlag,
23
23
  };
24
24
  static contextDefinition = {
@@ -4,10 +4,10 @@ export default class WebhookUpdate extends EasCommand {
4
4
  static description: string;
5
5
  static flags: {
6
6
  'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
- id: import("@oclif/core/lib/interfaces").OptionFlag<string>;
8
- event: import("@oclif/core/lib/interfaces").OptionFlag<WebhookType | undefined>;
9
- url: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
10
- secret: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
7
+ id: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
8
+ event: import("@oclif/core/lib/interfaces").OptionFlag<WebhookType | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
9
+ url: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
10
+ secret: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
11
11
  };
12
12
  static contextDefinition: {
13
13
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
@@ -17,10 +17,10 @@ class WebhookUpdate extends EasCommand_1.default {
17
17
  description: 'Webhook ID',
18
18
  required: true,
19
19
  }),
20
- event: core_1.Flags.enum({
20
+ event: core_1.Flags.option({
21
21
  description: 'Event type that triggers the webhook',
22
22
  options: [generated_1.WebhookType.Build, generated_1.WebhookType.Submit],
23
- }),
23
+ })(),
24
24
  url: core_1.Flags.string({
25
25
  description: 'Webhook URL',
26
26
  }),
@@ -2,10 +2,8 @@ import EasCommand from '../../commandUtils/EasCommand';
2
2
  export default class WebhookView extends EasCommand {
3
3
  static description: string;
4
4
  static args: {
5
- name: string;
6
- required: boolean;
7
- description: string;
8
- }[];
5
+ ID: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
6
+ };
9
7
  static contextDefinition: {
10
8
  loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
11
9
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const core_1 = require("@oclif/core");
4
5
  const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
5
6
  const WebhookQuery_1 = require("../../graphql/queries/WebhookQuery");
6
7
  const log_1 = tslib_1.__importDefault(require("../../log"));
@@ -8,13 +9,12 @@ const ora_1 = require("../../ora");
8
9
  const formatWebhook_1 = require("../../webhooks/formatWebhook");
9
10
  class WebhookView extends EasCommand_1.default {
10
11
  static description = 'view a webhook';
11
- static args = [
12
- {
13
- name: 'ID',
12
+ static args = {
13
+ ID: core_1.Args.string({
14
14
  required: true,
15
15
  description: 'ID of the webhook to view',
16
- },
17
- ];
16
+ }),
17
+ };
18
18
  static contextDefinition = {
19
19
  ...this.ContextOptions.LoggedIn,
20
20
  };
@@ -2,10 +2,8 @@ import EasCommand from '../../commandUtils/EasCommand';
2
2
  export declare class WorkflowCreate extends EasCommand {
3
3
  static description: string;
4
4
  static args: {
5
- name: string;
6
- description: string;
7
- required: boolean;
8
- }[];
5
+ name: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
6
+ };
9
7
  static flags: {
10
8
  'skip-validation': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
11
9
  };
@@ -17,13 +17,12 @@ const formatFields_1 = tslib_1.__importDefault(require("../../utils/formatFields
17
17
  const workflowFile_1 = require("../../utils/workflowFile");
18
18
  class WorkflowCreate extends EasCommand_1.default {
19
19
  static description = 'create a new workflow configuration YAML file';
20
- static args = [
21
- {
22
- name: 'name',
20
+ static args = {
21
+ name: core_1.Args.string({
23
22
  description: 'Name of the workflow file (must end with .yml or .yaml)',
24
23
  required: false,
25
- },
26
- ];
24
+ }),
25
+ };
27
26
  static flags = {
28
27
  'skip-validation': core_1.Flags.boolean({
29
28
  description: 'If set, the workflow file will not be validated before being created',