eas-cli 18.0.4 → 18.0.6

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.
@@ -46,6 +46,11 @@ class SetUpAscApiKey {
46
46
  if (maybeAutoselectedKey) {
47
47
  return await new AssignAscApiKey_1.AssignAscApiKey(this.app).runAsync(ctx, maybeAutoselectedKey, this.purpose);
48
48
  }
49
+ // When auto-accepting credentials and no valid key was found, generate a new one without prompting
50
+ if (ctx.autoAcceptCredentialReuse) {
51
+ const ascApiKey = await new CreateAscApiKey_1.CreateAscApiKey(this.app.account).runAsync(ctx, this.purpose);
52
+ return await new AssignAscApiKey_1.AssignAscApiKey(this.app).runAsync(ctx, ascApiKey, this.purpose);
53
+ }
49
54
  const availableChoices = keysForAccount.length === 0
50
55
  ? this.choices.filter(choice => choice.value !== SetupAscApiKeyChoice.USE_EXISTING)
51
56
  : this.choices;
@@ -65,9 +70,10 @@ class SetUpAscApiKey {
65
70
  return null;
66
71
  }
67
72
  const [autoselectedKey] = (0, AscApiKeyUtils_1.sortAscApiKeysByUpdatedAtDesc)(validKeys);
68
- const useAutoselected = await (0, prompts_1.confirmAsync)({
69
- message: `Reuse this App Store Connect API Key?\n${(0, AscApiKeyUtils_1.formatAscApiKey)(autoselectedKey)}`,
70
- });
73
+ const useAutoselected = ctx.autoAcceptCredentialReuse ||
74
+ (await (0, prompts_1.confirmAsync)({
75
+ message: `Reuse this App Store Connect API Key?\n${(0, AscApiKeyUtils_1.formatAscApiKey)(autoselectedKey)}`,
76
+ }));
71
77
  if (useAutoselected) {
72
78
  log_1.default.log(`Using App Store Connect API Key with ID ${autoselectedKey.keyIdentifier}`);
73
79
  return autoselectedKey;
@@ -80,9 +80,10 @@ class SetUpDistributionCertificate {
80
80
  async createOrReuseDistCertAsync(ctx) {
81
81
  const validDistCerts = await this.getValidDistCertsAsync(ctx);
82
82
  const autoselectedDistCert = validDistCerts[0];
83
- const useAutoselected = await (0, prompts_1.confirmAsync)({
84
- message: `Reuse this distribution certificate?\n${(0, DistributionCertificateUtils_1.formatDistributionCertificate)(autoselectedDistCert)}`,
85
- });
83
+ const useAutoselected = ctx.autoAcceptCredentialReuse ||
84
+ (await (0, prompts_1.confirmAsync)({
85
+ message: `Reuse this distribution certificate?\n${(0, DistributionCertificateUtils_1.formatDistributionCertificate)(autoselectedDistCert)}`,
86
+ }));
86
87
  if (useAutoselected) {
87
88
  log_1.default.log(`Using distribution certificate with serial number ${autoselectedDistCert.serialNumber}`);
88
89
  return autoselectedDistCert;
@@ -73,7 +73,7 @@ class SetUpProvisioningProfile {
73
73
  return await this.assignNewAndDeleteOldProfileAsync(ctx, distCert, currentProfile);
74
74
  }
75
75
  const isNonInteractiveOrUserDidConfirmAsync = async () => {
76
- if (ctx.nonInteractive) {
76
+ if (ctx.nonInteractive || ctx.autoAcceptCredentialReuse) {
77
77
  return true;
78
78
  }
79
79
  return await (0, prompts_1.confirmAsync)({
@@ -46,15 +46,20 @@ class SetUpPushKey {
46
46
  : [];
47
47
  if (validPushKeys.length > 0) {
48
48
  const autoselectedPushKey = validPushKeys[0];
49
- const useAutoselected = await (0, prompts_1.confirmAsync)({
50
- message: `Reuse this Push Key?\n${(0, PushKeyUtils_1.formatPushKey)(autoselectedPushKey, validPushKeys.map(pushKey => pushKey.keyIdentifier))}`,
51
- });
49
+ const useAutoselected = ctx.autoAcceptCredentialReuse ||
50
+ (await (0, prompts_1.confirmAsync)({
51
+ message: `Reuse this Push Key?\n${(0, PushKeyUtils_1.formatPushKey)(autoselectedPushKey, validPushKeys.map(pushKey => pushKey.keyIdentifier))}`,
52
+ }));
52
53
  if (useAutoselected) {
53
54
  log_1.default.log(`Using push key with ID ${autoselectedPushKey.keyIdentifier}`);
54
55
  return autoselectedPushKey;
55
56
  }
56
57
  }
57
58
  }
59
+ // When auto-accepting and no valid push key was found, generate a new one without prompting
60
+ if (ctx.autoAcceptCredentialReuse) {
61
+ return await new CreatePushKey_1.CreatePushKey(this.app.account).runAsync(ctx);
62
+ }
58
63
  const { action } = await (0, prompts_1.promptAsync)({
59
64
  type: 'select',
60
65
  name: 'action',
@@ -1,5 +1,5 @@
1
1
  import { ExpoGraphqlClient } from '../../commandUtils/context/contextUtils/createGraphqlClient';
2
- import { WorkflowRevisionInput, WorkflowRunInput } from '../generated';
2
+ import { WorkflowProjectSourceInput, WorkflowRevisionInput, WorkflowRunInput } from '../generated';
3
3
  export declare namespace WorkflowRunMutation {
4
4
  function createWorkflowRunAsync(graphqlClient: ExpoGraphqlClient, { appId, workflowRevisionInput, workflowRunInput, }: {
5
5
  appId: string;
@@ -15,6 +15,12 @@ export declare namespace WorkflowRunMutation {
15
15
  }): Promise<{
16
16
  id: string;
17
17
  }>;
18
+ function createExpoGoRepackWorkflowRunAsync(graphqlClient: ExpoGraphqlClient, { appId, projectSource, }: {
19
+ appId: string;
20
+ projectSource: WorkflowProjectSourceInput;
21
+ }): Promise<{
22
+ id: string;
23
+ }>;
18
24
  function cancelWorkflowRunAsync(graphqlClient: ExpoGraphqlClient, { workflowRunId, }: {
19
25
  workflowRunId: string;
20
26
  }): Promise<void>;
@@ -60,6 +60,25 @@ var WorkflowRunMutation;
60
60
  return { id: data.workflowRun.createWorkflowRunFromGitRef.id };
61
61
  }
62
62
  WorkflowRunMutation.createWorkflowRunFromGitRefAsync = createWorkflowRunFromGitRefAsync;
63
+ async function createExpoGoRepackWorkflowRunAsync(graphqlClient, { appId, projectSource, }) {
64
+ const data = await (0, client_1.withErrorHandlingAsync)(graphqlClient
65
+ .mutation(
66
+ /* eslint-disable graphql/template-strings */
67
+ (0, graphql_tag_1.default) `
68
+ mutation CreateExpoGoRepackWorkflowRun($appId: ID!, $projectSource: WorkflowProjectSourceInput!) {
69
+ workflowRun {
70
+ createExpoGoRepackWorkflowRun(appId: $appId, projectSource: $projectSource) {
71
+ id
72
+ }
73
+ }
74
+ }
75
+ `,
76
+ /* eslint-enable graphql/template-strings */
77
+ { appId, projectSource })
78
+ .toPromise());
79
+ return { id: data.workflowRun.createExpoGoRepackWorkflowRun.id };
80
+ }
81
+ WorkflowRunMutation.createExpoGoRepackWorkflowRunAsync = createExpoGoRepackWorkflowRunAsync;
63
82
  async function cancelWorkflowRunAsync(graphqlClient, { workflowRunId, }) {
64
83
  await (0, client_1.withErrorHandlingAsync)(graphqlClient
65
84
  .mutation((0, graphql_tag_1.default) `
package/build/log.d.ts CHANGED
@@ -3,6 +3,12 @@ export default class Log {
3
3
  static log(...args: any[]): void;
4
4
  static newLine(): void;
5
5
  static addNewLineIfNone(): void;
6
+ /**
7
+ * Signal that the cursor is already at the start of a fresh line (e.g. after
8
+ * a spinner clears itself), so that the next `addNewLineIfNone()` call knows
9
+ * it doesn't need to emit an extra blank line.
10
+ */
11
+ static markFreshLine(): void;
6
12
  static error(...args: any[]): void;
7
13
  static warn(...args: any[]): void;
8
14
  static debug(...args: any[]): void;
package/build/log.js CHANGED
@@ -23,6 +23,14 @@ class Log {
23
23
  Log.newLine();
24
24
  }
25
25
  }
26
+ /**
27
+ * Signal that the cursor is already at the start of a fresh line (e.g. after
28
+ * a spinner clears itself), so that the next `addNewLineIfNone()` call knows
29
+ * it doesn't need to emit an extra blank line.
30
+ */
31
+ static markFreshLine() {
32
+ Log.isLastLineNewLine = true;
33
+ }
26
34
  static error(...args) {
27
35
  Log.consoleLog(...Log.withTextColor(args, chalk_1.default.red));
28
36
  }
@@ -58,3 +58,7 @@ export declare function isBundleDiffingEnabled(exp: ExpoConfig): boolean;
58
58
  export declare function prewarmDiffingAsync(graphqlClient: ExpoGraphqlClient, appId: string, newUpdates: UpdatePublishMutation['updateBranch']['publishUpdateGroups']): Promise<void>;
59
59
  export type UpdatePublishPlatform = 'ios' | 'android';
60
60
  export declare const updatePublishPlatformToAppPlatform: Record<UpdatePublishPlatform, AppPlatform>;
61
+ export declare function assertEnvironmentFlagForSdk55OrGreater({ sdkVersion, environment, }: {
62
+ sdkVersion: string | undefined;
63
+ environment: string | undefined;
64
+ }): void;
@@ -15,10 +15,13 @@ exports.getUpdateGroupDescriptionsWithBranch = getUpdateGroupDescriptionsWithBra
15
15
  exports.getBranchDescription = getBranchDescription;
16
16
  exports.isBundleDiffingEnabled = isBundleDiffingEnabled;
17
17
  exports.prewarmDiffingAsync = prewarmDiffingAsync;
18
+ exports.assertEnvironmentFlagForSdk55OrGreater = assertEnvironmentFlagForSdk55OrGreater;
18
19
  const tslib_1 = require("tslib");
20
+ const core_1 = require("@oclif/core");
19
21
  const timeago_js_1 = require("@expo/timeago.js");
20
22
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
21
23
  const dateformat_1 = tslib_1.__importDefault(require("dateformat"));
24
+ const semver_1 = tslib_1.__importDefault(require("semver"));
22
25
  const generated_1 = require("../graphql/generated");
23
26
  const AssetQuery_1 = require("../graphql/queries/AssetQuery");
24
27
  const BranchQuery_1 = require("../graphql/queries/BranchQuery");
@@ -240,3 +243,13 @@ exports.updatePublishPlatformToAppPlatform = {
240
243
  android: generated_1.AppPlatform.Android,
241
244
  ios: generated_1.AppPlatform.Ios,
242
245
  };
246
+ function assertEnvironmentFlagForSdk55OrGreater({ sdkVersion, environment, }) {
247
+ if (process.env.EAS_BUILD) {
248
+ return;
249
+ }
250
+ if (sdkVersion && semver_1.default.gte(sdkVersion, '55.0.0') && !environment) {
251
+ core_1.Errors.error('--environment flag is required for projects using Expo SDK 55 or greater', {
252
+ exit: 1,
253
+ });
254
+ }
255
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "18.0.4",
2
+ "version": "18.0.6",
3
3
  "commands": {
4
4
  "analytics": {
5
5
  "id": "analytics",
@@ -93,6 +93,43 @@
93
93
  "vcsClient": {}
94
94
  }
95
95
  },
96
+ "go": {
97
+ "id": "go",
98
+ "description": "Create a custom Expo Go and submit to TestFlight",
99
+ "strict": true,
100
+ "pluginName": "eas-cli",
101
+ "pluginAlias": "eas-cli",
102
+ "pluginType": "core",
103
+ "hidden": true,
104
+ "aliases": [],
105
+ "flags": {
106
+ "bundle-id": {
107
+ "name": "bundle-id",
108
+ "type": "option",
109
+ "description": "iOS bundle identifier (auto-generated if not provided)",
110
+ "required": false,
111
+ "multiple": false
112
+ },
113
+ "name": {
114
+ "name": "name",
115
+ "type": "option",
116
+ "description": "App name",
117
+ "multiple": false,
118
+ "default": "My Expo Go"
119
+ },
120
+ "credentials": {
121
+ "name": "credentials",
122
+ "type": "boolean",
123
+ "description": "Interactively select credentials (default: auto-select)",
124
+ "allowNo": false
125
+ }
126
+ },
127
+ "args": {},
128
+ "contextDefinition": {
129
+ "loggedIn": {},
130
+ "analytics": {}
131
+ }
132
+ },
96
133
  "open": {
97
134
  "id": "open",
98
135
  "description": "open the project page in a web browser",
@@ -3320,7 +3357,7 @@
3320
3357
  "environment": {
3321
3358
  "name": "environment",
3322
3359
  "type": "option",
3323
- "description": "Environment to use for the server-side defined EAS environment variables during command execution, e.g. \"production\", \"preview\", \"development\"",
3360
+ "description": "Environment to use for the server-side defined EAS environment variables during command execution, e.g. \"production\", \"preview\", \"development\". Required for projects using Expo SDK 55 or greater.",
3324
3361
  "required": false,
3325
3362
  "multiple": false
3326
3363
  },
@@ -3532,7 +3569,7 @@
3532
3569
  "environment": {
3533
3570
  "name": "environment",
3534
3571
  "type": "option",
3535
- "description": "Environment to use for the server-side defined EAS environment variables during command execution, e.g. \"production\", \"preview\", \"development\"",
3572
+ "description": "Environment to use for the server-side defined EAS environment variables during command execution, e.g. \"production\", \"preview\", \"development\". Required for projects using Expo SDK 55 or greater.",
3536
3573
  "required": false,
3537
3574
  "multiple": false
3538
3575
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eas-cli",
3
- "version": "18.0.4",
3
+ "version": "18.0.6",
4
4
  "description": "EAS command line tool",
5
5
  "keywords": [
6
6
  "cli",
@@ -243,5 +243,5 @@
243
243
  "engines": {
244
244
  "node": ">=20.0.0"
245
245
  },
246
- "gitHead": "56018338e7380005cb4e3e4489f970e4b977ce7c"
246
+ "gitHead": "df8ebc8f84809e52032661f9f08768650440e5c0"
247
247
  }