eas-cli 0.30.1 → 0.31.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.
- package/README.md +26 -26
- package/build/build/android/prepareJob.js +1 -2
- package/build/build/ios/prepareJob.js +1 -13
- package/build/build/utils/printBuildInfo.js +1 -1
- package/build/credentials/android/credentials.d.ts +2 -0
- package/build/credentials/android/utils/googleServiceAccountKey.js +1 -0
- package/build/credentials/ios/actions/SetupAdhocProvisioningProfile.d.ts +1 -0
- package/build/credentials/ios/actions/SetupAdhocProvisioningProfile.js +48 -4
- package/build/credentials/ios/utils/printCredentials.js +12 -7
- package/build/submit/android/AndroidSubmitCommand.js +3 -8
- package/build/submit/android/AndroidSubmitter.js +31 -9
- package/build/submit/android/ServiceAccountSource.d.ts +24 -5
- package/build/submit/android/ServiceAccountSource.js +54 -74
- package/build/submit/context.d.ts +4 -0
- package/build/submit/context.js +7 -1
- package/oclif.manifest.json +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -73,7 +73,7 @@ ALIASES
|
|
|
73
73
|
$ eas login
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
_See code: [src/commands/account/login.js](https://github.com/expo/eas-cli/blob/v0.
|
|
76
|
+
_See code: [src/commands/account/login.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/account/login.js)_
|
|
77
77
|
|
|
78
78
|
## `eas account:logout`
|
|
79
79
|
|
|
@@ -87,7 +87,7 @@ ALIASES
|
|
|
87
87
|
$ eas logout
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
_See code: [src/commands/account/logout.js](https://github.com/expo/eas-cli/blob/v0.
|
|
90
|
+
_See code: [src/commands/account/logout.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/account/logout.js)_
|
|
91
91
|
|
|
92
92
|
## `eas account:view`
|
|
93
93
|
|
|
@@ -101,7 +101,7 @@ ALIASES
|
|
|
101
101
|
$ eas whoami
|
|
102
102
|
```
|
|
103
103
|
|
|
104
|
-
_See code: [src/commands/account/view.js](https://github.com/expo/eas-cli/blob/v0.
|
|
104
|
+
_See code: [src/commands/account/view.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/account/view.js)_
|
|
105
105
|
|
|
106
106
|
## `eas analytics [STATUS]`
|
|
107
107
|
|
|
@@ -112,7 +112,7 @@ USAGE
|
|
|
112
112
|
$ eas analytics [STATUS]
|
|
113
113
|
```
|
|
114
114
|
|
|
115
|
-
_See code: [src/commands/analytics.js](https://github.com/expo/eas-cli/blob/v0.
|
|
115
|
+
_See code: [src/commands/analytics.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/analytics.js)_
|
|
116
116
|
|
|
117
117
|
## `eas build`
|
|
118
118
|
|
|
@@ -145,7 +145,7 @@ OPTIONS
|
|
|
145
145
|
--[no-]wait Wait for build(s) to complete
|
|
146
146
|
```
|
|
147
147
|
|
|
148
|
-
_See code: [src/commands/build/index.js](https://github.com/expo/eas-cli/blob/v0.
|
|
148
|
+
_See code: [src/commands/build/index.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/build/index.js)_
|
|
149
149
|
|
|
150
150
|
## `eas build:cancel [BUILD_ID]`
|
|
151
151
|
|
|
@@ -156,7 +156,7 @@ USAGE
|
|
|
156
156
|
$ eas build:cancel [BUILD_ID]
|
|
157
157
|
```
|
|
158
158
|
|
|
159
|
-
_See code: [src/commands/build/cancel.js](https://github.com/expo/eas-cli/blob/v0.
|
|
159
|
+
_See code: [src/commands/build/cancel.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/build/cancel.js)_
|
|
160
160
|
|
|
161
161
|
## `eas build:configure`
|
|
162
162
|
|
|
@@ -170,7 +170,7 @@ OPTIONS
|
|
|
170
170
|
-p, --platform=(android|ios|all) Platform to configure
|
|
171
171
|
```
|
|
172
172
|
|
|
173
|
-
_See code: [src/commands/build/configure.js](https://github.com/expo/eas-cli/blob/v0.
|
|
173
|
+
_See code: [src/commands/build/configure.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/build/configure.js)_
|
|
174
174
|
|
|
175
175
|
## `eas build:list`
|
|
176
176
|
|
|
@@ -203,7 +203,7 @@ OPTIONS
|
|
|
203
203
|
--status=(new|in-queue|in-progress|errored|finished|canceled)
|
|
204
204
|
```
|
|
205
205
|
|
|
206
|
-
_See code: [src/commands/build/list.js](https://github.com/expo/eas-cli/blob/v0.
|
|
206
|
+
_See code: [src/commands/build/list.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/build/list.js)_
|
|
207
207
|
|
|
208
208
|
## `eas build:view [BUILD_ID]`
|
|
209
209
|
|
|
@@ -217,7 +217,7 @@ OPTIONS
|
|
|
217
217
|
--json Enable JSON output, non-JSON messages will be printed to stderr
|
|
218
218
|
```
|
|
219
219
|
|
|
220
|
-
_See code: [src/commands/build/view.js](https://github.com/expo/eas-cli/blob/v0.
|
|
220
|
+
_See code: [src/commands/build/view.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/build/view.js)_
|
|
221
221
|
|
|
222
222
|
## `eas config`
|
|
223
223
|
|
|
@@ -232,7 +232,7 @@ OPTIONS
|
|
|
232
232
|
--profile=profile
|
|
233
233
|
```
|
|
234
234
|
|
|
235
|
-
_See code: [src/commands/config.js](https://github.com/expo/eas-cli/blob/v0.
|
|
235
|
+
_See code: [src/commands/config.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/config.js)_
|
|
236
236
|
|
|
237
237
|
## `eas credentials`
|
|
238
238
|
|
|
@@ -243,7 +243,7 @@ USAGE
|
|
|
243
243
|
$ eas credentials
|
|
244
244
|
```
|
|
245
245
|
|
|
246
|
-
_See code: [src/commands/credentials.js](https://github.com/expo/eas-cli/blob/v0.
|
|
246
|
+
_See code: [src/commands/credentials.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/credentials.js)_
|
|
247
247
|
|
|
248
248
|
## `eas device:create`
|
|
249
249
|
|
|
@@ -254,7 +254,7 @@ USAGE
|
|
|
254
254
|
$ eas device:create
|
|
255
255
|
```
|
|
256
256
|
|
|
257
|
-
_See code: [src/commands/device/create.js](https://github.com/expo/eas-cli/blob/v0.
|
|
257
|
+
_See code: [src/commands/device/create.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/device/create.js)_
|
|
258
258
|
|
|
259
259
|
## `eas device:list`
|
|
260
260
|
|
|
@@ -268,7 +268,7 @@ OPTIONS
|
|
|
268
268
|
--apple-team-id=apple-team-id
|
|
269
269
|
```
|
|
270
270
|
|
|
271
|
-
_See code: [src/commands/device/list.js](https://github.com/expo/eas-cli/blob/v0.
|
|
271
|
+
_See code: [src/commands/device/list.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/device/list.js)_
|
|
272
272
|
|
|
273
273
|
## `eas device:view [UDID]`
|
|
274
274
|
|
|
@@ -279,7 +279,7 @@ USAGE
|
|
|
279
279
|
$ eas device:view [UDID]
|
|
280
280
|
```
|
|
281
281
|
|
|
282
|
-
_See code: [src/commands/device/view.js](https://github.com/expo/eas-cli/blob/v0.
|
|
282
|
+
_See code: [src/commands/device/view.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/device/view.js)_
|
|
283
283
|
|
|
284
284
|
## `eas diagnostics`
|
|
285
285
|
|
|
@@ -290,7 +290,7 @@ USAGE
|
|
|
290
290
|
$ eas diagnostics
|
|
291
291
|
```
|
|
292
292
|
|
|
293
|
-
_See code: [src/commands/diagnostics.js](https://github.com/expo/eas-cli/blob/v0.
|
|
293
|
+
_See code: [src/commands/diagnostics.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/diagnostics.js)_
|
|
294
294
|
|
|
295
295
|
## `eas help [COMMAND]`
|
|
296
296
|
|
|
@@ -318,7 +318,7 @@ USAGE
|
|
|
318
318
|
$ eas project:info
|
|
319
319
|
```
|
|
320
320
|
|
|
321
|
-
_See code: [src/commands/project/info.js](https://github.com/expo/eas-cli/blob/v0.
|
|
321
|
+
_See code: [src/commands/project/info.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/project/info.js)_
|
|
322
322
|
|
|
323
323
|
## `eas project:init`
|
|
324
324
|
|
|
@@ -332,7 +332,7 @@ ALIASES
|
|
|
332
332
|
$ eas init
|
|
333
333
|
```
|
|
334
334
|
|
|
335
|
-
_See code: [src/commands/project/init.js](https://github.com/expo/eas-cli/blob/v0.
|
|
335
|
+
_See code: [src/commands/project/init.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/project/init.js)_
|
|
336
336
|
|
|
337
337
|
## `eas secret:create`
|
|
338
338
|
|
|
@@ -349,7 +349,7 @@ OPTIONS
|
|
|
349
349
|
--value=value Value of the secret
|
|
350
350
|
```
|
|
351
351
|
|
|
352
|
-
_See code: [src/commands/secret/create.js](https://github.com/expo/eas-cli/blob/v0.
|
|
352
|
+
_See code: [src/commands/secret/create.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/secret/create.js)_
|
|
353
353
|
|
|
354
354
|
## `eas secret:delete`
|
|
355
355
|
|
|
@@ -366,7 +366,7 @@ DESCRIPTION
|
|
|
366
366
|
Unsure where to find the secret's ID? Run eas secrets:list
|
|
367
367
|
```
|
|
368
368
|
|
|
369
|
-
_See code: [src/commands/secret/delete.js](https://github.com/expo/eas-cli/blob/v0.
|
|
369
|
+
_See code: [src/commands/secret/delete.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/secret/delete.js)_
|
|
370
370
|
|
|
371
371
|
## `eas secret:list`
|
|
372
372
|
|
|
@@ -377,7 +377,7 @@ USAGE
|
|
|
377
377
|
$ eas secret:list
|
|
378
378
|
```
|
|
379
379
|
|
|
380
|
-
_See code: [src/commands/secret/list.js](https://github.com/expo/eas-cli/blob/v0.
|
|
380
|
+
_See code: [src/commands/secret/list.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/secret/list.js)_
|
|
381
381
|
|
|
382
382
|
## `eas submit`
|
|
383
383
|
|
|
@@ -410,7 +410,7 @@ ALIASES
|
|
|
410
410
|
$ eas build:submit
|
|
411
411
|
```
|
|
412
412
|
|
|
413
|
-
_See code: [src/commands/submit.js](https://github.com/expo/eas-cli/blob/v0.
|
|
413
|
+
_See code: [src/commands/submit.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/submit.js)_
|
|
414
414
|
|
|
415
415
|
## `eas webhook:create`
|
|
416
416
|
|
|
@@ -429,7 +429,7 @@ OPTIONS
|
|
|
429
429
|
--url=url Webhook URL
|
|
430
430
|
```
|
|
431
431
|
|
|
432
|
-
_See code: [src/commands/webhook/create.js](https://github.com/expo/eas-cli/blob/v0.
|
|
432
|
+
_See code: [src/commands/webhook/create.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/webhook/create.js)_
|
|
433
433
|
|
|
434
434
|
## `eas webhook:delete [ID]`
|
|
435
435
|
|
|
@@ -443,7 +443,7 @@ ARGUMENTS
|
|
|
443
443
|
ID ID of the webhook to delete
|
|
444
444
|
```
|
|
445
445
|
|
|
446
|
-
_See code: [src/commands/webhook/delete.js](https://github.com/expo/eas-cli/blob/v0.
|
|
446
|
+
_See code: [src/commands/webhook/delete.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/webhook/delete.js)_
|
|
447
447
|
|
|
448
448
|
## `eas webhook:list`
|
|
449
449
|
|
|
@@ -457,7 +457,7 @@ OPTIONS
|
|
|
457
457
|
--event=(BUILD) Event type that triggers the webhook
|
|
458
458
|
```
|
|
459
459
|
|
|
460
|
-
_See code: [src/commands/webhook/list.js](https://github.com/expo/eas-cli/blob/v0.
|
|
460
|
+
_See code: [src/commands/webhook/list.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/webhook/list.js)_
|
|
461
461
|
|
|
462
462
|
## `eas webhook:update`
|
|
463
463
|
|
|
@@ -477,7 +477,7 @@ OPTIONS
|
|
|
477
477
|
--url=url Webhook URL
|
|
478
478
|
```
|
|
479
479
|
|
|
480
|
-
_See code: [src/commands/webhook/update.js](https://github.com/expo/eas-cli/blob/v0.
|
|
480
|
+
_See code: [src/commands/webhook/update.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/webhook/update.js)_
|
|
481
481
|
|
|
482
482
|
## `eas webhook:view ID`
|
|
483
483
|
|
|
@@ -491,5 +491,5 @@ ARGUMENTS
|
|
|
491
491
|
ID ID of the webhook to view
|
|
492
492
|
```
|
|
493
493
|
|
|
494
|
-
_See code: [src/commands/webhook/view.js](https://github.com/expo/eas-cli/blob/v0.
|
|
494
|
+
_See code: [src/commands/webhook/view.js](https://github.com/expo/eas-cli/blob/v0.31.0/packages/eas-cli/src/commands/webhook/view.js)_
|
|
495
495
|
<!-- commandsstop -->
|
|
@@ -14,7 +14,6 @@ const cacheDefaults = {
|
|
|
14
14
|
cacheDefaultPaths: true,
|
|
15
15
|
};
|
|
16
16
|
async function prepareJobAsync(ctx, jobData) {
|
|
17
|
-
var _a;
|
|
18
17
|
const username = (0, projectUtils_1.getUsername)(ctx.exp, await (0, actions_1.ensureLoggedInAsync)());
|
|
19
18
|
const buildProfile = ctx.buildProfile;
|
|
20
19
|
const projectRootDirectory = (0, slash_1.default)(path_1.default.relative(await vcs_1.default.getRootPathAsync(), ctx.projectDir)) || '.';
|
|
@@ -41,7 +40,7 @@ async function prepareJobAsync(ctx, jobData) {
|
|
|
41
40
|
projectRootDirectory,
|
|
42
41
|
projectArchive: jobData.projectArchive,
|
|
43
42
|
builderEnvironment: {
|
|
44
|
-
image:
|
|
43
|
+
image: buildProfile.image,
|
|
45
44
|
node: buildProfile.node,
|
|
46
45
|
yarn: buildProfile.yarn,
|
|
47
46
|
ndk: buildProfile.ndk,
|
|
@@ -4,7 +4,6 @@ exports.prepareJobAsync = void 0;
|
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const eas_build_job_1 = require("@expo/eas-build-job");
|
|
6
6
|
const path_1 = (0, tslib_1.__importDefault)(require("path"));
|
|
7
|
-
const semver_1 = (0, tslib_1.__importDefault)(require("semver"));
|
|
8
7
|
const slash_1 = (0, tslib_1.__importDefault)(require("slash"));
|
|
9
8
|
const projectUtils_1 = require("../../project/projectUtils");
|
|
10
9
|
const actions_1 = require("../../user/actions");
|
|
@@ -31,7 +30,7 @@ async function prepareJobAsync(ctx, jobData) {
|
|
|
31
30
|
projectRootDirectory,
|
|
32
31
|
distribution: ctx.buildProfile.simulator ? 'simulator' : ctx.buildProfile.distribution,
|
|
33
32
|
builderEnvironment: {
|
|
34
|
-
image:
|
|
33
|
+
image: ctx.buildProfile.image,
|
|
35
34
|
node: ctx.buildProfile.node,
|
|
36
35
|
yarn: ctx.buildProfile.yarn,
|
|
37
36
|
bundler: ctx.buildProfile.bundler,
|
|
@@ -61,17 +60,6 @@ async function prepareJobAsync(ctx, jobData) {
|
|
|
61
60
|
return (0, eas_build_job_1.sanitizeJob)(job);
|
|
62
61
|
}
|
|
63
62
|
exports.prepareJobAsync = prepareJobAsync;
|
|
64
|
-
function resolveImage(ctx) {
|
|
65
|
-
var _a;
|
|
66
|
-
// see https://linear.app/expo/issue/ENG-1396/make-default-image-dependent-on-sdk-version
|
|
67
|
-
if (!ctx.buildProfile.image && ctx.exp.sdkVersion) {
|
|
68
|
-
const majorSdkVersion = semver_1.default.major(ctx.exp.sdkVersion);
|
|
69
|
-
if (majorSdkVersion <= 41) {
|
|
70
|
-
return 'macos-catalina-10.15-xcode-12.4';
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
return (_a = ctx.buildProfile.image) !== null && _a !== void 0 ? _a : 'default';
|
|
74
|
-
}
|
|
75
63
|
function prepareTargetCredentials(targetCredentials) {
|
|
76
64
|
return {
|
|
77
65
|
provisioningProfileBase64: targetCredentials.provisioningProfile,
|
|
@@ -18,7 +18,7 @@ function printLogsUrls(builds) {
|
|
|
18
18
|
else {
|
|
19
19
|
builds.forEach(build => {
|
|
20
20
|
const logsUrl = (0, url_1.getBuildLogsUrl)(build);
|
|
21
|
-
log_1.default.log(`${platform_1.appPlatformDisplayNames[build.platform]} build details: ${chalk_1.default.underline(logsUrl)}`);
|
|
21
|
+
log_1.default.log(`${platform_1.appPlatformEmojis[build.platform]} ${platform_1.appPlatformDisplayNames[build.platform]} build details: ${chalk_1.default.underline(logsUrl)}`);
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -15,6 +15,8 @@ export declare type KeystoreWithType = Keystore & {
|
|
|
15
15
|
export declare type GoogleServiceAccountKey = {
|
|
16
16
|
[key: string]: any;
|
|
17
17
|
private_key: string;
|
|
18
|
+
type: string;
|
|
19
|
+
client_email: string;
|
|
18
20
|
};
|
|
19
21
|
export declare type AndroidCredentials = {
|
|
20
22
|
experienceName: string;
|
|
@@ -13,6 +13,7 @@ const date_1 = require("../../../utils/date");
|
|
|
13
13
|
exports.MinimalGoogleServiceAccountKeySchema = joi_1.default.object({
|
|
14
14
|
type: joi_1.default.string().required(),
|
|
15
15
|
private_key: joi_1.default.string().required(),
|
|
16
|
+
client_email: joi_1.default.string().required(),
|
|
16
17
|
});
|
|
17
18
|
function fileIsServiceAccountKey(keyJsonPath) {
|
|
18
19
|
try {
|
|
@@ -8,6 +8,7 @@ export declare class SetupAdhocProvisioningProfile {
|
|
|
8
8
|
runWithDistributionCertificateAsync(ctx: CredentialsContext, distCert: AppleDistributionCertificateFragment): Promise<IosAppBuildCredentialsFragment>;
|
|
9
9
|
private areBuildCredentialsSetupAsync;
|
|
10
10
|
private shouldUseExistingProfileAsync;
|
|
11
|
+
private promptForReuseActionAsync;
|
|
11
12
|
private registerDevicesAsync;
|
|
12
13
|
}
|
|
13
14
|
export declare function doUDIDsMatch(udidsA: string[], udidsB: string[]): boolean;
|
|
@@ -16,6 +16,12 @@ const AppleTeamUtils_1 = require("./AppleTeamUtils");
|
|
|
16
16
|
const BuildCredentialsUtils_1 = require("./BuildCredentialsUtils");
|
|
17
17
|
const DeviceUtils_1 = require("./DeviceUtils");
|
|
18
18
|
const SetupDistributionCertificate_1 = require("./SetupDistributionCertificate");
|
|
19
|
+
var ReuseAction;
|
|
20
|
+
(function (ReuseAction) {
|
|
21
|
+
ReuseAction[ReuseAction["Yes"] = 0] = "Yes";
|
|
22
|
+
ReuseAction[ReuseAction["ShowDevices"] = 1] = "ShowDevices";
|
|
23
|
+
ReuseAction[ReuseAction["No"] = 2] = "No";
|
|
24
|
+
})(ReuseAction || (ReuseAction = {}));
|
|
19
25
|
class SetupAdhocProvisioningProfile {
|
|
20
26
|
constructor(app) {
|
|
21
27
|
this.app = app;
|
|
@@ -108,10 +114,23 @@ class SetupAdhocProvisioningProfile {
|
|
|
108
114
|
const provisionedDevices = provisioningProfile.appleDevices;
|
|
109
115
|
const allRegisteredDevicesAreProvisioned = doUDIDsMatch(registeredAppleDevices.map(({ identifier }) => identifier), provisionedDevices.map(({ identifier }) => identifier));
|
|
110
116
|
if (allRegisteredDevicesAreProvisioned) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
117
|
+
const reuseAction = await this.promptForReuseActionAsync();
|
|
118
|
+
if (reuseAction === ReuseAction.Yes) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
else if (reuseAction === ReuseAction.No) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
log_1.default.newLine();
|
|
126
|
+
log_1.default.log('Devices registered in the Provisioning Profile:');
|
|
127
|
+
for (const device of provisionedDevices) {
|
|
128
|
+
log_1.default.log(`- ${(0, DeviceUtils_1.formatDeviceLabel)(device)}`);
|
|
129
|
+
}
|
|
130
|
+
log_1.default.newLine();
|
|
131
|
+
return ((await this.promptForReuseActionAsync({ showShowDevicesOption: false })) ===
|
|
132
|
+
ReuseAction.Yes);
|
|
133
|
+
}
|
|
115
134
|
}
|
|
116
135
|
else {
|
|
117
136
|
const missingDevices = (0, differenceBy_1.default)(registeredAppleDevices, provisionedDevices, 'identifier');
|
|
@@ -125,6 +144,31 @@ class SetupAdhocProvisioningProfile {
|
|
|
125
144
|
}));
|
|
126
145
|
}
|
|
127
146
|
}
|
|
147
|
+
async promptForReuseActionAsync({ showShowDevicesOption = true, } = {}) {
|
|
148
|
+
const { selected } = await (0, prompts_1.promptAsync)({
|
|
149
|
+
type: 'select',
|
|
150
|
+
name: 'selected',
|
|
151
|
+
message: `${showShowDevicesOption
|
|
152
|
+
? 'All your registered devices are present in the Provisioning Profile. '
|
|
153
|
+
: ''}Would you like to reuse the profile?`,
|
|
154
|
+
choices: [
|
|
155
|
+
{ title: 'Yes', value: ReuseAction.Yes },
|
|
156
|
+
...(showShowDevicesOption
|
|
157
|
+
? [
|
|
158
|
+
{
|
|
159
|
+
title: 'Show devices and ask me again',
|
|
160
|
+
value: ReuseAction.ShowDevices,
|
|
161
|
+
},
|
|
162
|
+
]
|
|
163
|
+
: []),
|
|
164
|
+
{
|
|
165
|
+
title: 'No, let me choose devices again',
|
|
166
|
+
value: ReuseAction.No,
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
});
|
|
170
|
+
return selected;
|
|
171
|
+
}
|
|
128
172
|
async registerDevicesAsync(ctx, appleTeam) {
|
|
129
173
|
const action = new action_1.default(this.app.account, appleTeam);
|
|
130
174
|
const method = await action.runAsync();
|
|
@@ -99,10 +99,9 @@ function displayProjectCredentials(app, appBuildCredentials, targets) {
|
|
|
99
99
|
}, {});
|
|
100
100
|
const isMultitarget = targets.length > 1;
|
|
101
101
|
log_1.default.addNewLineIfNone();
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
];
|
|
102
|
+
log_1.default.log(chalk_1.default.cyan.bold('Project Credentials Configuration'));
|
|
103
|
+
log_1.default.newLine();
|
|
104
|
+
const fields = [{ label: 'Project', value: projectFullName }];
|
|
106
105
|
for (const [targetName, buildCredentials] of Object.entries(appBuildCredentials)) {
|
|
107
106
|
if (isMultitarget) {
|
|
108
107
|
fields.push({ label: '', value: '' });
|
|
@@ -115,10 +114,12 @@ function displayProjectCredentials(app, appBuildCredentials, targets) {
|
|
|
115
114
|
}
|
|
116
115
|
exports.displayProjectCredentials = displayProjectCredentials;
|
|
117
116
|
function displayIosAppBuildCredentials(buildCredentials, fields) {
|
|
117
|
+
fields.push({ label: '', value: '' });
|
|
118
118
|
fields.push({
|
|
119
119
|
label: `${prettyIosDistributionType(buildCredentials.iosDistributionType)} Configuration`,
|
|
120
120
|
value: '',
|
|
121
121
|
});
|
|
122
|
+
fields.push({ label: '', value: '' });
|
|
122
123
|
const maybeDistCert = buildCredentials.distributionCertificate;
|
|
123
124
|
fields.push({ label: 'Distribution Certificate', value: '' });
|
|
124
125
|
if (maybeDistCert) {
|
|
@@ -158,9 +159,13 @@ function displayIosAppBuildCredentials(buildCredentials, fields) {
|
|
|
158
159
|
});
|
|
159
160
|
}
|
|
160
161
|
if (appleDevices && appleDevices.length > 0) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
162
|
+
const [firstAppleDevice, ...rest] = appleDevices;
|
|
163
|
+
fields.push({
|
|
164
|
+
label: 'Provisioned devices',
|
|
165
|
+
value: `- ${formatAppleDevice(firstAppleDevice)}`,
|
|
166
|
+
});
|
|
167
|
+
for (const appleDevice of rest) {
|
|
168
|
+
fields.push({ label: '', value: `- ${formatAppleDevice(appleDevice)}` });
|
|
164
169
|
}
|
|
165
170
|
}
|
|
166
171
|
fields.push({ label: 'Updated', value: `${(0, date_1.fromNow)(new Date(updatedAt))} ago` });
|
|
@@ -120,14 +120,9 @@ class AndroidSubmitCommand {
|
|
|
120
120
|
path: serviceAccountKeyPath,
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
else {
|
|
127
|
-
return (0, results_1.result)({
|
|
128
|
-
sourceType: ServiceAccountSource_1.ServiceAccountSourceType.detect,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
123
|
+
return (0, results_1.result)({
|
|
124
|
+
sourceType: ServiceAccountSource_1.ServiceAccountSourceType.credentialsService,
|
|
125
|
+
});
|
|
131
126
|
}
|
|
132
127
|
}
|
|
133
128
|
exports.default = AndroidSubmitCommand;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
|
-
const
|
|
4
|
+
const chalk_1 = (0, tslib_1.__importDefault)(require("chalk"));
|
|
5
5
|
const SubmissionMutation_1 = require("../../graphql/mutations/SubmissionMutation");
|
|
6
|
+
const formatFields_1 = (0, tslib_1.__importDefault)(require("../../utils/formatFields"));
|
|
6
7
|
const ArchiveSource_1 = require("../ArchiveSource");
|
|
7
8
|
const BaseSubmitter_1 = (0, tslib_1.__importDefault)(require("../BaseSubmitter"));
|
|
8
9
|
const summary_1 = require("../utils/summary");
|
|
@@ -30,15 +31,14 @@ class AndroidSubmitter extends BaseSubmitter_1.default {
|
|
|
30
31
|
async resolveSourceOptionsAsync() {
|
|
31
32
|
const androidPackage = await (0, AndroidPackageSource_1.getAndroidPackageAsync)(this.options.androidPackageSource);
|
|
32
33
|
const archive = await (0, ArchiveSource_1.getArchiveAsync)(this.options.archiveSource);
|
|
33
|
-
const
|
|
34
|
+
const serviceAccountKeyResult = await (0, ServiceAccountSource_1.getServiceAccountKeyResultAsync)(this.ctx, this.options.serviceAccountSource, androidPackage);
|
|
34
35
|
return {
|
|
35
36
|
androidPackage,
|
|
36
37
|
archive,
|
|
37
|
-
|
|
38
|
+
serviceAccountKeyResult,
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
|
-
async formatSubmissionConfigAsync(options, { archive, androidPackage,
|
|
41
|
-
const serviceAccount = await fs_extra_1.default.readFile(serviceAccountPath, 'utf-8');
|
|
41
|
+
async formatSubmissionConfigAsync(options, { archive, androidPackage, serviceAccountKeyResult }) {
|
|
42
42
|
const { track, releaseStatus, changesNotSentForReview } = options;
|
|
43
43
|
return {
|
|
44
44
|
applicationIdentifier: androidPackage,
|
|
@@ -46,10 +46,10 @@ class AndroidSubmitter extends BaseSubmitter_1.default {
|
|
|
46
46
|
track,
|
|
47
47
|
changesNotSentForReview,
|
|
48
48
|
releaseStatus,
|
|
49
|
-
|
|
49
|
+
...serviceAccountKeyResult.result,
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
|
-
prepareSummaryData(options, { archive, androidPackage,
|
|
52
|
+
prepareSummaryData(options, { archive, androidPackage, serviceAccountKeyResult }) {
|
|
53
53
|
const { projectId, track, releaseStatus, changesNotSentForReview } = options;
|
|
54
54
|
// structuring order affects table rows order
|
|
55
55
|
return {
|
|
@@ -58,7 +58,7 @@ class AndroidSubmitter extends BaseSubmitter_1.default {
|
|
|
58
58
|
track,
|
|
59
59
|
changesNotSentForReview: changesNotSentForReview !== null && changesNotSentForReview !== void 0 ? changesNotSentForReview : undefined,
|
|
60
60
|
releaseStatus: releaseStatus !== null && releaseStatus !== void 0 ? releaseStatus : undefined,
|
|
61
|
-
|
|
61
|
+
formattedServiceAccount: formatServiceAccountSummary(serviceAccountKeyResult),
|
|
62
62
|
...(0, summary_1.formatArchiveSourceSummary)(archive),
|
|
63
63
|
};
|
|
64
64
|
}
|
|
@@ -70,8 +70,30 @@ const SummaryHumanReadableKeys = {
|
|
|
70
70
|
archiveUrl: 'Download URL',
|
|
71
71
|
changesNotSentForReview: 'Changes not sent for a review',
|
|
72
72
|
formattedBuild: 'Build',
|
|
73
|
+
formattedServiceAccount: 'Google Service Account Key',
|
|
73
74
|
projectId: 'Project ID',
|
|
74
75
|
releaseStatus: 'Release status',
|
|
75
|
-
serviceAccountPath: 'Google Service Key',
|
|
76
76
|
track: 'Release track',
|
|
77
77
|
};
|
|
78
|
+
function formatServiceAccountSummary({ summary }) {
|
|
79
|
+
const { email: serviceAccountEmail, path: serviceAccountKeyPath, source: serviceAccountKeySource, } = summary;
|
|
80
|
+
const fields = [
|
|
81
|
+
{
|
|
82
|
+
label: 'Key Source',
|
|
83
|
+
value: serviceAccountKeySource,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
label: 'Key Path',
|
|
87
|
+
value: serviceAccountKeyPath,
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
label: 'Account E-mail',
|
|
91
|
+
value: serviceAccountEmail,
|
|
92
|
+
},
|
|
93
|
+
];
|
|
94
|
+
const filteredFields = fields.filter(({ value }) => value !== undefined && value !== null);
|
|
95
|
+
return ('\n' +
|
|
96
|
+
(0, formatFields_1.default)(filteredFields, {
|
|
97
|
+
labelFormat: label => ` ${chalk_1.default.dim(label)}:`,
|
|
98
|
+
}));
|
|
99
|
+
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { Platform } from '@expo/eas-build-job';
|
|
2
|
+
import { SubmissionContext } from '../context';
|
|
1
3
|
export declare enum ServiceAccountSourceType {
|
|
2
4
|
path = 0,
|
|
3
5
|
prompt = 1,
|
|
4
|
-
|
|
6
|
+
credentialsService = 2
|
|
5
7
|
}
|
|
6
8
|
interface ServiceAccountSourceBase {
|
|
7
9
|
sourceType: ServiceAccountSourceType;
|
|
@@ -13,9 +15,26 @@ interface ServiceAccountPathSource extends ServiceAccountSourceBase {
|
|
|
13
15
|
interface ServiceAccountPromptSource extends ServiceAccountSourceBase {
|
|
14
16
|
sourceType: ServiceAccountSourceType.prompt;
|
|
15
17
|
}
|
|
16
|
-
interface
|
|
17
|
-
sourceType: ServiceAccountSourceType.
|
|
18
|
+
export interface ServiceAccountCredentialsServiceSource extends ServiceAccountSourceBase {
|
|
19
|
+
sourceType: ServiceAccountSourceType.credentialsService;
|
|
18
20
|
}
|
|
19
|
-
export declare type
|
|
20
|
-
|
|
21
|
+
export declare type ServiceAccountKeyResult = {
|
|
22
|
+
result: ServiceAccountKeyFile | ServiceAccountKeyFromExpoServers;
|
|
23
|
+
summary: ServiceAccountKeySummary;
|
|
24
|
+
};
|
|
25
|
+
declare type ServiceAccountKeySummary = {
|
|
26
|
+
source: 'local' | 'EAS servers';
|
|
27
|
+
path?: string;
|
|
28
|
+
email: string;
|
|
29
|
+
};
|
|
30
|
+
declare type ServiceAccountKeyFile = {
|
|
31
|
+
googleServiceAccountKeyJson: string;
|
|
32
|
+
};
|
|
33
|
+
declare type ServiceAccountKeyFromExpoServers = {
|
|
34
|
+
googleServiceAccountKeyId: string;
|
|
35
|
+
};
|
|
36
|
+
export declare type ServiceAccountSource = ServiceAccountPathSource | ServiceAccountPromptSource | ServiceAccountCredentialsServiceSource;
|
|
37
|
+
export declare function getServiceAccountKeyResultAsync(ctx: SubmissionContext<Platform.ANDROID>, source: ServiceAccountSource, androidApplicationIdentifier: string): Promise<ServiceAccountKeyResult>;
|
|
38
|
+
export declare function getServiceAccountKeyPathAsync(source: ServiceAccountSource): Promise<string>;
|
|
39
|
+
export declare function getServiceAccountFromCredentialsServiceAsync(ctx: SubmissionContext<Platform.ANDROID>, androidApplicationIdentifier: string): Promise<ServiceAccountKeyResult>;
|
|
21
40
|
export {};
|
|
@@ -1,66 +1,85 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getServiceAccountFromCredentialsServiceAsync = exports.getServiceAccountKeyPathAsync = exports.getServiceAccountKeyResultAsync = exports.ServiceAccountSourceType = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const chalk_1 = (0, tslib_1.__importDefault)(require("chalk"));
|
|
6
|
-
const fast_glob_1 = (0, tslib_1.__importDefault)(require("fast-glob"));
|
|
7
6
|
const fs_extra_1 = (0, tslib_1.__importDefault)(require("fs-extra"));
|
|
8
|
-
const
|
|
7
|
+
const nullthrows_1 = (0, tslib_1.__importDefault)(require("nullthrows"));
|
|
8
|
+
const SetupGoogleServiceAccountKey_1 = require("../../credentials/android/actions/SetupGoogleServiceAccountKey");
|
|
9
|
+
const googleServiceAccountKey_1 = require("../../credentials/android/utils/googleServiceAccountKey");
|
|
9
10
|
const log_1 = (0, tslib_1.__importStar)(require("../../log"));
|
|
10
|
-
const projectUtils_1 = require("../../project/projectUtils");
|
|
11
11
|
const prompts_1 = require("../../prompts");
|
|
12
|
-
const
|
|
12
|
+
const Account_1 = require("../../user/Account");
|
|
13
13
|
const files_1 = require("../utils/files");
|
|
14
14
|
var ServiceAccountSourceType;
|
|
15
15
|
(function (ServiceAccountSourceType) {
|
|
16
16
|
ServiceAccountSourceType[ServiceAccountSourceType["path"] = 0] = "path";
|
|
17
17
|
ServiceAccountSourceType[ServiceAccountSourceType["prompt"] = 1] = "prompt";
|
|
18
|
-
ServiceAccountSourceType[ServiceAccountSourceType["
|
|
19
|
-
// credentialsService,
|
|
20
|
-
// ...
|
|
18
|
+
ServiceAccountSourceType[ServiceAccountSourceType["credentialsService"] = 2] = "credentialsService";
|
|
21
19
|
})(ServiceAccountSourceType = exports.ServiceAccountSourceType || (exports.ServiceAccountSourceType = {}));
|
|
22
|
-
async function
|
|
20
|
+
async function getServiceAccountKeyResultAsync(ctx, source, androidApplicationIdentifier) {
|
|
21
|
+
if (source.sourceType === ServiceAccountSourceType.credentialsService) {
|
|
22
|
+
return await getServiceAccountFromCredentialsServiceAsync(ctx, androidApplicationIdentifier);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
return await getServiceAccountLocallyAsync(source);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.getServiceAccountKeyResultAsync = getServiceAccountKeyResultAsync;
|
|
29
|
+
async function getServiceAccountLocallyAsync(source) {
|
|
30
|
+
const serviceAccountKeyPath = await getServiceAccountKeyPathAsync(source);
|
|
31
|
+
const serviceAccountKey = (0, googleServiceAccountKey_1.readAndValidateServiceAccountKey)(serviceAccountKeyPath);
|
|
32
|
+
return {
|
|
33
|
+
result: { googleServiceAccountKeyJson: await fs_extra_1.default.readFile(serviceAccountKeyPath, 'utf-8') },
|
|
34
|
+
summary: {
|
|
35
|
+
source: 'local',
|
|
36
|
+
path: serviceAccountKeyPath,
|
|
37
|
+
email: serviceAccountKey.client_email,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
async function getServiceAccountKeyPathAsync(source) {
|
|
23
42
|
switch (source.sourceType) {
|
|
24
43
|
case ServiceAccountSourceType.path:
|
|
25
44
|
return await handlePathSourceAsync(source);
|
|
26
45
|
case ServiceAccountSourceType.prompt:
|
|
27
46
|
return await handlePromptSourceAsync(source);
|
|
28
|
-
case ServiceAccountSourceType.
|
|
29
|
-
|
|
47
|
+
case ServiceAccountSourceType.credentialsService: {
|
|
48
|
+
throw new Error(`ServiceAccountSource ${source} does not return a path.`);
|
|
49
|
+
}
|
|
30
50
|
}
|
|
31
51
|
}
|
|
32
|
-
exports.
|
|
52
|
+
exports.getServiceAccountKeyPathAsync = getServiceAccountKeyPathAsync;
|
|
53
|
+
async function getServiceAccountFromCredentialsServiceAsync(ctx, androidApplicationIdentifier) {
|
|
54
|
+
const appLookupParams = {
|
|
55
|
+
account: (0, nullthrows_1.default)((0, Account_1.findAccountByName)(ctx.user.accounts, ctx.accountName), `You do not have access to account: ${ctx.accountName}`),
|
|
56
|
+
projectName: ctx.projectName,
|
|
57
|
+
androidApplicationIdentifier,
|
|
58
|
+
};
|
|
59
|
+
const setupGoogleServiceAccountKeyAction = new SetupGoogleServiceAccountKey_1.SetupGoogleServiceAccountKey(appLookupParams);
|
|
60
|
+
const androidAppCredentials = await setupGoogleServiceAccountKeyAction.runAsync(ctx.credentialsCtx);
|
|
61
|
+
const googleServiceAccountKey = (0, nullthrows_1.default)(androidAppCredentials.googleServiceAccountKeyForSubmissions, 'Credentials Service must provide a valid GoogleServiceAccountKey');
|
|
62
|
+
return {
|
|
63
|
+
result: {
|
|
64
|
+
googleServiceAccountKeyId: googleServiceAccountKey.id,
|
|
65
|
+
},
|
|
66
|
+
summary: {
|
|
67
|
+
source: 'EAS servers',
|
|
68
|
+
email: googleServiceAccountKey.clientEmail,
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
exports.getServiceAccountFromCredentialsServiceAsync = getServiceAccountFromCredentialsServiceAsync;
|
|
33
73
|
async function handlePathSourceAsync(source) {
|
|
34
74
|
if (!(await (0, files_1.isExistingFileAsync)(source.path))) {
|
|
35
75
|
log_1.default.warn(`File ${source.path} doesn't exist.`);
|
|
36
|
-
return await
|
|
76
|
+
return await getServiceAccountKeyPathAsync({ sourceType: ServiceAccountSourceType.prompt });
|
|
37
77
|
}
|
|
38
78
|
return source.path;
|
|
39
79
|
}
|
|
40
|
-
async function handleDetectSourceAsync(_source) {
|
|
41
|
-
const projectDir = await (0, projectUtils_1.findProjectRootAsync)();
|
|
42
|
-
const foundFilePaths = await (0, fast_glob_1.default)('**/*.json', {
|
|
43
|
-
cwd: projectDir,
|
|
44
|
-
ignore: ['app.json', 'package*.json', 'tsconfig.json', 'node_modules'],
|
|
45
|
-
});
|
|
46
|
-
const googleServiceFiles = await (0, filterAsync_1.filterAsync)(foundFilePaths.map(file => path_1.default.join(projectDir, file)), fileIsGoogleServicesAsync);
|
|
47
|
-
if (googleServiceFiles.length > 1) {
|
|
48
|
-
const selectedPath = await displayPathChooserAsync(googleServiceFiles, projectDir);
|
|
49
|
-
if (selectedPath !== false) {
|
|
50
|
-
return selectedPath;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
else if (googleServiceFiles.length === 1) {
|
|
54
|
-
const [detectedPath] = googleServiceFiles;
|
|
55
|
-
if (await confirmDetectedPathAsync(detectedPath)) {
|
|
56
|
-
return detectedPath;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return await getServiceAccountAsync({ sourceType: ServiceAccountSourceType.prompt });
|
|
60
|
-
}
|
|
61
80
|
async function handlePromptSourceAsync(_source) {
|
|
62
81
|
const path = await askForServiceAccountPathAsync();
|
|
63
|
-
return await
|
|
82
|
+
return await getServiceAccountKeyPathAsync({
|
|
64
83
|
sourceType: ServiceAccountSourceType.path,
|
|
65
84
|
path,
|
|
66
85
|
});
|
|
@@ -89,42 +108,3 @@ async function askForServiceAccountPathAsync() {
|
|
|
89
108
|
});
|
|
90
109
|
return filePath;
|
|
91
110
|
}
|
|
92
|
-
async function displayPathChooserAsync(paths, projectDir) {
|
|
93
|
-
const choices = paths.map(f => ({
|
|
94
|
-
value: f,
|
|
95
|
-
title: f.startsWith(projectDir) ? path_1.default.relative(projectDir, f) : f,
|
|
96
|
-
}));
|
|
97
|
-
choices.push({
|
|
98
|
-
title: 'None of the above',
|
|
99
|
-
value: false,
|
|
100
|
-
});
|
|
101
|
-
log_1.default.log('Multiple Google Service Account JSON keys have been found inside your project directory.');
|
|
102
|
-
const { selectedPath } = await (0, prompts_1.promptAsync)({
|
|
103
|
-
name: 'selectedPath',
|
|
104
|
-
type: 'select',
|
|
105
|
-
message: 'Choose the key you want to use for this submission:',
|
|
106
|
-
choices,
|
|
107
|
-
});
|
|
108
|
-
log_1.default.addNewLineIfNone();
|
|
109
|
-
return selectedPath;
|
|
110
|
-
}
|
|
111
|
-
async function confirmDetectedPathAsync(path) {
|
|
112
|
-
log_1.default.log(`A Google Service Account JSON key has been found at\n ${chalk_1.default.underline(path)}`);
|
|
113
|
-
const { confirmed } = await (0, prompts_1.promptAsync)({
|
|
114
|
-
name: 'confirmed',
|
|
115
|
-
type: 'confirm',
|
|
116
|
-
message: 'Would you like to use this file?',
|
|
117
|
-
initial: true,
|
|
118
|
-
});
|
|
119
|
-
log_1.default.addNewLineIfNone();
|
|
120
|
-
return confirmed;
|
|
121
|
-
}
|
|
122
|
-
async function fileIsGoogleServicesAsync(path) {
|
|
123
|
-
try {
|
|
124
|
-
const jsonFile = await fs_extra_1.default.readJson(path);
|
|
125
|
-
return jsonFile.type === 'service_account';
|
|
126
|
-
}
|
|
127
|
-
catch (e) {
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
@@ -2,7 +2,9 @@ import { ExpoConfig } from '@expo/config';
|
|
|
2
2
|
import { Platform } from '@expo/eas-build-job';
|
|
3
3
|
import { SubmitProfile } from '@expo/eas-json';
|
|
4
4
|
import { CredentialsContext } from '../credentials/context';
|
|
5
|
+
import { Actor } from '../user/User';
|
|
5
6
|
export interface SubmissionContext<T extends Platform> {
|
|
7
|
+
accountName: string;
|
|
6
8
|
archiveFlags: SubmitArchiveFlags;
|
|
7
9
|
credentialsCtx: CredentialsContext;
|
|
8
10
|
exp: ExpoConfig;
|
|
@@ -11,6 +13,8 @@ export interface SubmissionContext<T extends Platform> {
|
|
|
11
13
|
profile: SubmitProfile<T>;
|
|
12
14
|
projectDir: string;
|
|
13
15
|
projectId: string;
|
|
16
|
+
projectName: string;
|
|
17
|
+
user: Actor;
|
|
14
18
|
}
|
|
15
19
|
export interface SubmitArchiveFlags {
|
|
16
20
|
latest?: boolean;
|
package/build/submit/context.js
CHANGED
|
@@ -3,20 +3,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createSubmissionContextAsync = void 0;
|
|
4
4
|
const context_1 = require("../credentials/context");
|
|
5
5
|
const expoConfig_1 = require("../project/expoConfig");
|
|
6
|
+
const projectUtils_1 = require("../project/projectUtils");
|
|
6
7
|
const actions_1 = require("../user/actions");
|
|
7
8
|
async function createSubmissionContextAsync(params) {
|
|
8
9
|
const { projectDir, nonInteractive } = params;
|
|
9
10
|
const exp = (0, expoConfig_1.getExpoConfig)(projectDir, { env: params.env });
|
|
10
11
|
const { env, ...rest } = params;
|
|
12
|
+
const user = await (0, actions_1.ensureLoggedInAsync)();
|
|
13
|
+
const projectName = exp.slug;
|
|
14
|
+
const accountName = (0, projectUtils_1.getProjectAccountName)(exp, user);
|
|
11
15
|
let credentialsCtx = params.credentialsCtx;
|
|
12
16
|
if (!credentialsCtx) {
|
|
13
|
-
const user = await (0, actions_1.ensureLoggedInAsync)();
|
|
14
17
|
credentialsCtx = new context_1.CredentialsContext({ projectDir, user, exp, nonInteractive });
|
|
15
18
|
}
|
|
16
19
|
return {
|
|
17
20
|
...rest,
|
|
21
|
+
accountName,
|
|
18
22
|
credentialsCtx,
|
|
19
23
|
exp,
|
|
24
|
+
projectName,
|
|
25
|
+
user,
|
|
20
26
|
};
|
|
21
27
|
}
|
|
22
28
|
exports.createSubmissionContextAsync = createSubmissionContextAsync;
|
package/oclif.manifest.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"0.30.1","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 \"release\" 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","helpValue":"PROFILE_NAME","default":"release"},"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 secrets: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)","options":["BUILD"],"default":"BUILD"},"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)","options":["BUILD"]}},"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)","options":["BUILD"],"default":"BUILD"},"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.31.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 \"release\" 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","helpValue":"PROFILE_NAME","default":"release"},"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 secrets: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)","options":["BUILD"],"default":"BUILD"},"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)","options":["BUILD"]}},"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)","options":["BUILD"],"default":"BUILD"},"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.
|
|
4
|
+
"version": "0.31.0",
|
|
5
5
|
"author": "Expo <support@expo.dev>",
|
|
6
6
|
"bin": {
|
|
7
7
|
"eas": "./bin/run"
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"@expo/apple-utils": "0.0.0-alpha.25",
|
|
12
12
|
"@expo/config": "6.0.2",
|
|
13
13
|
"@expo/config-plugins": "4.0.2",
|
|
14
|
-
"@expo/eas-build-job": "0.2.
|
|
15
|
-
"@expo/eas-json": "^0.
|
|
14
|
+
"@expo/eas-build-job": "0.2.52",
|
|
15
|
+
"@expo/eas-json": "^0.31.0",
|
|
16
16
|
"@expo/json-file": "8.2.33",
|
|
17
17
|
"@expo/pkcs12": "0.0.4",
|
|
18
18
|
"@expo/plist": "0.0.14",
|
|
@@ -179,5 +179,5 @@
|
|
|
179
179
|
"version": "yarn oclif-dev readme && node patch-readme && git add README.md",
|
|
180
180
|
"generate-graphql-code": "graphql-codegen --config graphql-codegen.yml"
|
|
181
181
|
},
|
|
182
|
-
"gitHead": "
|
|
182
|
+
"gitHead": "def91af01fe43106714f7782316d61270395a2ff"
|
|
183
183
|
}
|