eas-cli 13.4.2 → 14.0.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 +73 -73
- package/build/ApiV2Error.js +5 -1
- package/build/analytics/AnalyticsManager.js +5 -4
- package/build/api.js +1 -0
- package/build/branch/actions/SelectBranch.js +1 -0
- package/build/branch/queries.d.ts +3 -3
- package/build/branch/queries.js +7 -5
- package/build/build/validate.js +6 -3
- package/build/channel/actions/SelectChannel.js +1 -0
- package/build/channel/queries.d.ts +0 -1
- package/build/channel/queries.js +11 -16
- package/build/commandUtils/EasCommand.js +100 -90
- package/build/commandUtils/builds.d.ts +1 -0
- package/build/commandUtils/builds.js +3 -0
- package/build/commandUtils/gating/FeatureGateEnvOverrides.js +1 -1
- package/build/commandUtils/gating/FeatureGating.js +2 -0
- package/build/commands/account/login.js +16 -18
- package/build/commands/account/logout.js +6 -8
- package/build/commands/account/view.js +8 -10
- package/build/commands/analytics.js +2 -2
- package/build/commands/branch/create.js +18 -20
- package/build/commands/branch/delete.js +17 -19
- package/build/commands/branch/list.js +11 -13
- package/build/commands/branch/publish.js +2 -2
- package/build/commands/branch/rename.js +18 -20
- package/build/commands/branch/view.js +19 -21
- package/build/commands/build/cancel.js +22 -24
- package/build/commands/build/configure.js +15 -17
- package/build/commands/build/delete.js +22 -24
- package/build/commands/build/index.js +81 -83
- package/build/commands/build/inspect.js +42 -44
- package/build/commands/build/internal.js +32 -34
- package/build/commands/build/list.js +58 -60
- package/build/commands/build/resign.js +36 -38
- package/build/commands/build/run.js +36 -38
- package/build/commands/build/version/get.js +21 -23
- package/build/commands/build/version/set.js +20 -22
- package/build/commands/build/version/sync.js +20 -22
- package/build/commands/build/view.js +12 -14
- package/build/commands/channel/create.js +17 -19
- package/build/commands/channel/delete.js +18 -20
- package/build/commands/channel/edit.js +20 -22
- package/build/commands/channel/list.js +12 -14
- package/build/commands/channel/pause.js +20 -22
- package/build/commands/channel/resume.js +20 -22
- package/build/commands/channel/rollout.js +74 -76
- package/build/commands/channel/view.js +18 -20
- package/build/commands/config.js +21 -23
- package/build/commands/credentials/configure-build.js +21 -23
- package/build/commands/credentials/index.js +13 -15
- package/build/commands/device/create.js +6 -8
- package/build/commands/device/delete.js +12 -14
- package/build/commands/device/list.js +12 -14
- package/build/commands/device/rename.js +13 -15
- package/build/commands/device/view.js +8 -10
- package/build/commands/diagnostics.js +6 -8
- package/build/commands/env/create.js +39 -41
- package/build/commands/env/delete.js +25 -27
- package/build/commands/env/exec.js +22 -24
- package/build/commands/env/get.js +26 -28
- package/build/commands/env/link.js +27 -29
- package/build/commands/env/list.js +27 -29
- package/build/commands/env/pull.js +23 -25
- package/build/commands/env/push.js +21 -23
- package/build/commands/env/unlink.js +23 -25
- package/build/commands/env/update.js +38 -40
- package/build/commands/fingerprint/compare.d.ts +28 -0
- package/build/commands/fingerprint/compare.js +324 -0
- package/build/commands/metadata/lint.js +18 -20
- package/build/commands/metadata/pull.js +15 -17
- package/build/commands/metadata/push.js +15 -17
- package/build/commands/open.js +6 -8
- package/build/commands/project/info.js +6 -8
- package/build/commands/project/init.js +26 -28
- package/build/commands/project/onboarding.js +10 -12
- package/build/commands/secret/create.js +30 -32
- package/build/commands/secret/delete.js +14 -16
- package/build/commands/secret/list.js +7 -9
- package/build/commands/secret/push.js +23 -25
- package/build/commands/submit/internal.js +23 -25
- package/build/commands/submit.js +54 -56
- package/build/commands/update/configure.js +18 -20
- package/build/commands/update/delete.js +16 -18
- package/build/commands/update/edit.js +25 -27
- package/build/commands/update/index.js +65 -67
- package/build/commands/update/list.js +21 -23
- package/build/commands/update/republish.js +45 -47
- package/build/commands/update/roll-back-to-embedded.d.ts +2 -1
- package/build/commands/update/roll-back-to-embedded.js +92 -84
- package/build/commands/update/rollback.js +7 -7
- package/build/commands/update/view.js +16 -18
- package/build/commands/webhook/create.js +20 -22
- package/build/commands/webhook/delete.js +17 -19
- package/build/commands/webhook/list.js +14 -16
- package/build/commands/webhook/update.js +23 -25
- package/build/commands/webhook/view.js +13 -15
- package/build/commands/worker/alias.js +30 -32
- package/build/commands/worker/deploy.js +38 -40
- package/build/commands/workflow/create.js +16 -18
- package/build/commands/workflow/run.js +13 -15
- package/build/commands/workflow/validate.js +18 -20
- package/build/credentials/android/AndroidCredentialsProvider.js +3 -1
- package/build/credentials/android/actions/AssignFcm.js +1 -0
- package/build/credentials/android/actions/AssignGoogleServiceAccountKeyForFcmV1.js +1 -0
- package/build/credentials/android/actions/AssignGoogleServiceAccountKeyForSubmissions.js +1 -0
- package/build/credentials/android/actions/CreateFcm.js +1 -0
- package/build/credentials/android/actions/CreateGoogleServiceAccountKey.js +1 -0
- package/build/credentials/android/actions/CreateKeystore.js +1 -0
- package/build/credentials/android/actions/DownloadKeystore.js +2 -0
- package/build/credentials/android/actions/RemoveFcm.js +1 -0
- package/build/credentials/android/actions/RemoveGoogleServiceAccountKey.js +2 -0
- package/build/credentials/android/actions/RemoveKeystore.js +1 -0
- package/build/credentials/android/actions/SetUpBuildCredentials.js +1 -0
- package/build/credentials/android/actions/SetUpBuildCredentialsFromCredentialsJson.js +1 -0
- package/build/credentials/android/actions/SetUpGoogleServiceAccountKeyForFcmV1.js +1 -0
- package/build/credentials/android/actions/SetUpGoogleServiceAccountKeyForSubmissions.js +1 -0
- package/build/credentials/android/actions/UseExistingGoogleServiceAccountKey.js +1 -0
- package/build/credentials/context.js +14 -5
- package/build/credentials/errors.js +1 -0
- package/build/credentials/ios/IosCredentialsProvider.js +3 -1
- package/build/credentials/ios/actions/AssignAscApiKey.js +1 -0
- package/build/credentials/ios/actions/AssignPushKey.js +1 -0
- package/build/credentials/ios/actions/ConfigureProvisioningProfile.js +4 -0
- package/build/credentials/ios/actions/CreateAscApiKey.js +1 -0
- package/build/credentials/ios/actions/CreateDistributionCertificate.js +1 -0
- package/build/credentials/ios/actions/CreateProvisioningProfile.js +3 -0
- package/build/credentials/ios/actions/CreatePushKey.js +1 -0
- package/build/credentials/ios/actions/RemoveAscApiKey.js +2 -0
- package/build/credentials/ios/actions/RemoveDistributionCertificate.js +3 -0
- package/build/credentials/ios/actions/RemoveProvisioningProfile.js +2 -0
- package/build/credentials/ios/actions/RemovePushKey.js +2 -0
- package/build/credentials/ios/actions/SetUpAdhocProvisioningProfile.js +1 -0
- package/build/credentials/ios/actions/SetUpAscApiKey.js +9 -7
- package/build/credentials/ios/actions/SetUpBuildCredentials.js +1 -0
- package/build/credentials/ios/actions/SetUpBuildCredentialsFromCredentialsJson.js +3 -0
- package/build/credentials/ios/actions/SetUpDistributionCertificate.js +3 -0
- package/build/credentials/ios/actions/SetUpInternalProvisioningProfile.js +1 -0
- package/build/credentials/ios/actions/SetUpProvisioningProfile.js +3 -0
- package/build/credentials/ios/actions/SetUpPushKey.js +1 -0
- package/build/credentials/ios/actions/SetUpTargetBuildCredentials.js +1 -0
- package/build/credentials/ios/actions/SetUpTargetBuildCredentialsFromCredentialsJson.js +3 -0
- package/build/credentials/ios/actions/UpdateCredentialsJson.js +3 -0
- package/build/credentials/ios/appstore/AppStoreApi.js +2 -0
- package/build/credentials/manager/CheckBuildProfileFlagAgainstEasJson.js +3 -0
- package/build/credentials/manager/CreateAndroidBuildCredentials.js +1 -0
- package/build/credentials/manager/ManageAndroid.js +2 -0
- package/build/credentials/manager/ManageIos.js +2 -0
- package/build/credentials/manager/SelectAndroidBuildCredentials.js +2 -0
- package/build/credentials/manager/SelectBuildProfileFromEasJson.js +2 -0
- package/build/credentials/manager/SelectIosDistributionTypeGraphqlFromBuildProfile.js +1 -0
- package/build/credentials/manager/SelectPlatform.js +7 -0
- package/build/credentials/manager/SetDefaultAndroidKeystore.js +1 -0
- package/build/credentials/manager/SetUpAndroidBuildCredentials.js +1 -0
- package/build/credentials/manager/SetUpBuildCredentialsCommandAction.js +9 -0
- package/build/credentials/manager/SetUpIosBuildCredentials.js +1 -0
- package/build/devices/actions/create/action.js +4 -0
- package/build/devices/manager.js +4 -0
- package/build/fetch.js +1 -0
- package/build/graphql/generated.d.ts +175 -0
- package/build/graphql/generated.js +8 -3
- package/build/graphql/queries/BuildQuery.d.ts +4 -1
- package/build/graphql/queries/BuildQuery.js +19 -0
- package/build/graphql/types/Build.d.ts +1 -0
- package/build/graphql/types/Build.js +15 -1
- package/build/graphql/types/Fingerprint.d.ts +1 -0
- package/build/graphql/types/Fingerprint.js +12 -0
- package/build/log.js +2 -2
- package/build/metadata/apple/config/reader.js +1 -0
- package/build/metadata/apple/config/writer.js +1 -0
- package/build/metadata/apple/tasks/age-rating.js +1 -4
- package/build/metadata/apple/tasks/app-info.js +1 -4
- package/build/metadata/apple/tasks/app-review-detail.js +1 -4
- package/build/metadata/apple/tasks/app-version.js +2 -1
- package/build/metadata/errors.js +5 -0
- package/build/rollout/actions/CreateRollout.d.ts +9 -10
- package/build/rollout/actions/CreateRollout.js +2 -0
- package/build/rollout/actions/EditRollout.d.ts +2 -3
- package/build/rollout/actions/EditRollout.js +2 -0
- package/build/rollout/actions/EndRollout.d.ts +4 -6
- package/build/rollout/actions/EndRollout.js +2 -0
- package/build/rollout/actions/ManageRollout.d.ts +2 -3
- package/build/rollout/actions/ManageRollout.js +2 -0
- package/build/rollout/actions/NonInteractiveRollout.d.ts +6 -27
- package/build/rollout/actions/NonInteractiveRollout.js +1 -0
- package/build/rollout/actions/RolloutMainMenu.d.ts +6 -7
- package/build/rollout/actions/RolloutMainMenu.js +1 -0
- package/build/rollout/actions/SelectRuntime.d.ts +6 -20
- package/build/rollout/actions/SelectRuntime.js +3 -0
- package/build/submit/BaseSubmitter.js +4 -0
- package/build/submit/android/AndroidSubmitCommand.js +1 -0
- package/build/submit/ios/IosSubmitCommand.js +1 -0
- package/build/update/getBranchFromChannelNameAndCreateAndLinkIfNotExistsAsync.js +3 -3
- package/build/user/SessionManager.js +2 -0
- package/build/utils/fingerprint.d.ts +97 -0
- package/build/utils/fingerprint.js +5 -0
- package/build/utils/fingerprintCli.d.ts +5 -7
- package/build/utils/fingerprintCli.js +11 -1
- package/build/utils/fingerprintDiff.d.ts +33 -0
- package/build/utils/fingerprintDiff.js +122 -0
- package/build/vcs/clients/git.js +1 -0
- package/build/vcs/local.js +2 -1
- package/oclif.manifest.json +51 -7
- package/package.json +9 -7
|
@@ -135,12 +135,13 @@ const RudderstackAnalyticsConfig = process.env.EXPO_STAGING || process.env.EXPO_
|
|
|
135
135
|
rudderstackDataPlaneURL: 'https://cdp.expo.dev',
|
|
136
136
|
};
|
|
137
137
|
class RudderstackAnalytics {
|
|
138
|
+
persistentDeviceId;
|
|
139
|
+
rudderstackClient = new rudder_sdk_node_1.default(RudderstackAnalyticsConfig.rudderstackWriteKey, new url_1.URL('/v1/batch', RudderstackAnalyticsConfig.rudderstackDataPlaneURL).toString(), {
|
|
140
|
+
flushInterval: 300,
|
|
141
|
+
});
|
|
142
|
+
identifiedActor = null;
|
|
138
143
|
constructor(persistentDeviceId) {
|
|
139
144
|
this.persistentDeviceId = persistentDeviceId;
|
|
140
|
-
this.rudderstackClient = new rudder_sdk_node_1.default(RudderstackAnalyticsConfig.rudderstackWriteKey, new url_1.URL('/v1/batch', RudderstackAnalyticsConfig.rudderstackDataPlaneURL).toString(), {
|
|
141
|
-
flushInterval: 300,
|
|
142
|
-
});
|
|
143
|
-
this.identifiedActor = null;
|
|
144
145
|
// identify once with just anonymous ID. Once the actor is fetched, re-indentify with
|
|
145
146
|
// both so that they can be associated
|
|
146
147
|
this.rudderstackClient.identify({
|
package/build/api.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ExpoGraphqlClient } from '../commandUtils/context/contextUtils/createGraphqlClient';
|
|
2
2
|
import { PaginatedQueryOptions } from '../commandUtils/pagination';
|
|
3
|
-
import { CreateUpdateBranchForAppMutationVariables,
|
|
3
|
+
import { CreateUpdateBranchForAppMutationVariables, UpdateBranchBasicInfoFragment, UpdateBranchFragment } from '../graphql/generated';
|
|
4
4
|
import { SelectPromptEntry } from '../utils/queries';
|
|
5
5
|
export declare const BRANCHES_LIMIT = 50;
|
|
6
6
|
export declare function selectBranchOnAppAsync(graphqlClient: ExpoGraphqlClient, { projectId, promptTitle, displayTextForListItem, paginatedQueryOptions, }: {
|
|
@@ -13,11 +13,11 @@ export declare function listAndRenderBranchesOnAppAsync(graphqlClient: ExpoGraph
|
|
|
13
13
|
projectId: string;
|
|
14
14
|
paginatedQueryOptions: PaginatedQueryOptions;
|
|
15
15
|
}): Promise<void>;
|
|
16
|
-
export declare function createUpdateBranchOnAppAsync(graphqlClient: ExpoGraphqlClient, { appId, name }: CreateUpdateBranchForAppMutationVariables): Promise<
|
|
16
|
+
export declare function createUpdateBranchOnAppAsync(graphqlClient: ExpoGraphqlClient, { appId, name }: CreateUpdateBranchForAppMutationVariables): Promise<UpdateBranchBasicInfoFragment>;
|
|
17
17
|
export declare function ensureBranchExistsAsync(graphqlClient: ExpoGraphqlClient, { appId, branchName, }: {
|
|
18
18
|
appId: string;
|
|
19
19
|
branchName: string;
|
|
20
20
|
}): Promise<{
|
|
21
|
-
|
|
21
|
+
branch: UpdateBranchBasicInfoFragment;
|
|
22
22
|
createdBranch: boolean;
|
|
23
23
|
}>;
|
package/build/branch/queries.js
CHANGED
|
@@ -3,10 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.ensureBranchExistsAsync = exports.createUpdateBranchOnAppAsync = exports.listAndRenderBranchesOnAppAsync = exports.selectBranchOnAppAsync = exports.BRANCHES_LIMIT = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
6
|
+
const graphql_1 = require("graphql");
|
|
6
7
|
const graphql_tag_1 = tslib_1.__importDefault(require("graphql-tag"));
|
|
7
8
|
const utils_1 = require("./utils");
|
|
8
9
|
const client_1 = require("../graphql/client");
|
|
9
10
|
const BranchQuery_1 = require("../graphql/queries/BranchQuery");
|
|
11
|
+
const UpdateBranchBasicInfo_1 = require("../graphql/types/UpdateBranchBasicInfo");
|
|
10
12
|
const log_1 = tslib_1.__importDefault(require("../log"));
|
|
11
13
|
const utils_2 = require("../update/utils");
|
|
12
14
|
const json_1 = require("../utils/json");
|
|
@@ -79,14 +81,15 @@ async function createUpdateBranchOnAppAsync(graphqlClient, { appId, name }) {
|
|
|
79
81
|
updateBranch {
|
|
80
82
|
createUpdateBranchForApp(appId: $appId, name: $name) {
|
|
81
83
|
id
|
|
82
|
-
|
|
84
|
+
...UpdateBranchBasicInfoFragment
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
}
|
|
88
|
+
${(0, graphql_1.print)(UpdateBranchBasicInfo_1.UpdateBranchBasicInfoFragmentNode)}
|
|
86
89
|
`, {
|
|
87
90
|
appId,
|
|
88
91
|
name,
|
|
89
|
-
})
|
|
92
|
+
}, { additionalTypenames: ['UpdateBranch'] })
|
|
90
93
|
.toPromise());
|
|
91
94
|
const newBranch = result.updateBranch.createUpdateBranchForApp;
|
|
92
95
|
if (!newBranch) {
|
|
@@ -101,8 +104,7 @@ async function ensureBranchExistsAsync(graphqlClient, { appId, branchName, }) {
|
|
|
101
104
|
appId,
|
|
102
105
|
name: branchName,
|
|
103
106
|
});
|
|
104
|
-
|
|
105
|
-
return { branchId: id, createdBranch: false };
|
|
107
|
+
return { branch: updateBranch, createdBranch: false };
|
|
106
108
|
}
|
|
107
109
|
catch (error) {
|
|
108
110
|
if (error instanceof utils_1.BranchNotFoundError) {
|
|
@@ -110,7 +112,7 @@ async function ensureBranchExistsAsync(graphqlClient, { appId, branchName, }) {
|
|
|
110
112
|
appId,
|
|
111
113
|
name: branchName,
|
|
112
114
|
});
|
|
113
|
-
return {
|
|
115
|
+
return { branch: newUpdateBranch, createdBranch: true };
|
|
114
116
|
}
|
|
115
117
|
else {
|
|
116
118
|
throw error;
|
package/build/build/validate.js
CHANGED
|
@@ -24,14 +24,17 @@ async function checkGoogleServicesFileAsync(ctx) {
|
|
|
24
24
|
if (!googleServicesFilePath) {
|
|
25
25
|
return;
|
|
26
26
|
}
|
|
27
|
+
const googleServicesEnvVar = ctx.platform === eas_build_job_1.Platform.ANDROID
|
|
28
|
+
? ctx.env.GOOGLE_SERVICES_JSON
|
|
29
|
+
: ctx.env.GOOGLE_SERVICES_INFO_PLIST;
|
|
27
30
|
const rootDir = path_1.default.normalize(await ctx.vcsClient.getRootPathAsync());
|
|
28
31
|
const absGoogleServicesFilePath = path_1.default.resolve(ctx.projectDir, googleServicesFilePath);
|
|
29
32
|
if ((await fs_extra_1.default.pathExists(absGoogleServicesFilePath)) &&
|
|
30
33
|
(!isInsideDirectory(absGoogleServicesFilePath, rootDir) ||
|
|
31
|
-
(await ctx.vcsClient.isFileIgnoredAsync(path_1.default.relative(rootDir, absGoogleServicesFilePath))))
|
|
34
|
+
(await ctx.vcsClient.isFileIgnoredAsync(path_1.default.relative(rootDir, absGoogleServicesFilePath)))) &&
|
|
35
|
+
!googleServicesEnvVar) {
|
|
32
36
|
log_1.default.warn(`File specified via "${ctx.platform}.googleServicesFile" field in your app.json is not checked in to your repository and won't be uploaded to the builder.`);
|
|
33
|
-
log_1.default.warn(`Use EAS
|
|
34
|
-
log_1.default.warn(`If you are using that file for compatibility with the classic build service (expo build) you can silence this warning by setting your build profile's env.GOOGLE_SERVICES_FILE in eas.json to any non-empty string.`);
|
|
37
|
+
log_1.default.warn(`Use EAS file environment variables with secret or sensitive visibility to pass all values that you don't want to include in your version control to build process. ${(0, log_1.learnMore)('https://docs.expo.dev/eas/environment-variables/#file-environment-variables')}`);
|
|
35
38
|
log_1.default.newLine();
|
|
36
39
|
}
|
|
37
40
|
}
|
|
@@ -33,7 +33,6 @@ export declare function doesChannelExistAsync(graphqlClient: ExpoGraphqlClient,
|
|
|
33
33
|
channelName: string;
|
|
34
34
|
}): Promise<boolean>;
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
36
|
* Creates a channel and links it to a branch with the same name.
|
|
38
37
|
*
|
|
39
38
|
* @param appId the app ID, also known as the project ID
|
package/build/channel/queries.js
CHANGED
|
@@ -13,7 +13,7 @@ const client_1 = require("../graphql/client");
|
|
|
13
13
|
const BranchQuery_1 = require("../graphql/queries/BranchQuery");
|
|
14
14
|
const ChannelQuery_1 = require("../graphql/queries/ChannelQuery");
|
|
15
15
|
const UpdateChannelBasicInfo_1 = require("../graphql/types/UpdateChannelBasicInfo");
|
|
16
|
-
const log_1 = tslib_1.
|
|
16
|
+
const log_1 = tslib_1.__importStar(require("../log"));
|
|
17
17
|
const projectUtils_1 = require("../project/projectUtils");
|
|
18
18
|
const formatFields_1 = tslib_1.__importDefault(require("../utils/formatFields"));
|
|
19
19
|
const json_1 = require("../utils/json");
|
|
@@ -209,7 +209,6 @@ async function doesChannelExistAsync(graphqlClient, { appId, channelName }) {
|
|
|
209
209
|
}
|
|
210
210
|
exports.doesChannelExistAsync = doesChannelExistAsync;
|
|
211
211
|
/**
|
|
212
|
-
*
|
|
213
212
|
* Creates a channel and links it to a branch with the same name.
|
|
214
213
|
*
|
|
215
214
|
* @param appId the app ID, also known as the project ID
|
|
@@ -218,14 +217,13 @@ exports.doesChannelExistAsync = doesChannelExistAsync;
|
|
|
218
217
|
*/
|
|
219
218
|
async function createAndLinkChannelAsync(graphqlClient, { appId, channelName, shouldPrintJson, }) {
|
|
220
219
|
let branchId;
|
|
221
|
-
let
|
|
220
|
+
let hasCreatedBranch = false;
|
|
222
221
|
try {
|
|
223
222
|
const branch = await BranchQuery_1.BranchQuery.getBranchByNameAsync(graphqlClient, {
|
|
224
223
|
appId,
|
|
225
224
|
name: channelName,
|
|
226
225
|
});
|
|
227
226
|
branchId = branch.id;
|
|
228
|
-
branchMessage = `We found a branch with the same name`;
|
|
229
227
|
}
|
|
230
228
|
catch (error) {
|
|
231
229
|
if (error instanceof utils_1.BranchNotFoundError) {
|
|
@@ -234,7 +232,7 @@ async function createAndLinkChannelAsync(graphqlClient, { appId, channelName, sh
|
|
|
234
232
|
name: channelName,
|
|
235
233
|
});
|
|
236
234
|
branchId = newBranch.id;
|
|
237
|
-
|
|
235
|
+
hasCreatedBranch = true;
|
|
238
236
|
}
|
|
239
237
|
else {
|
|
240
238
|
throw error;
|
|
@@ -252,18 +250,15 @@ async function createAndLinkChannelAsync(graphqlClient, { appId, channelName, sh
|
|
|
252
250
|
(0, json_1.printJsonOnlyOutput)(newChannel);
|
|
253
251
|
}
|
|
254
252
|
else {
|
|
253
|
+
const projectDisplayName = await (0, projectUtils_1.getDisplayNameForProjectIdAsync)(graphqlClient, appId);
|
|
254
|
+
const learnMoreLink = (0, log_1.learnMore)('https://docs.expo.dev/eas-update/eas-cli/');
|
|
255
255
|
log_1.default.addNewLineIfNone();
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
log_1.default.withTick(`${branchMessage} and have pointed the channel at it.`);
|
|
263
|
-
log_1.default.log((0, formatFields_1.default)([
|
|
264
|
-
{ label: 'Name', value: newChannel.name },
|
|
265
|
-
{ label: 'ID', value: branchId },
|
|
266
|
-
]));
|
|
256
|
+
if (hasCreatedBranch) {
|
|
257
|
+
log_1.default.withTick(`Created update channel ${chalk_1.default.bold(`"${newChannel.name}"`)} and branch ${chalk_1.default.bold(`"${newChannel.name}"`)} on ${chalk_1.default.bold(projectDisplayName)} project. ${learnMoreLink}`);
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
log_1.default.withTick(`Created update channel ${chalk_1.default.bold(`"${newChannel.name}"`)} on ${chalk_1.default.bold(projectDisplayName)} project and connected it with existing ${chalk_1.default.bold(`"${newChannel.name}"`)} branch. ${learnMoreLink}`);
|
|
261
|
+
}
|
|
267
262
|
}
|
|
268
263
|
return newChannel;
|
|
269
264
|
}
|
|
@@ -23,6 +23,106 @@ const log_1 = tslib_1.__importDefault(require("../log"));
|
|
|
23
23
|
const SessionManager_1 = tslib_1.__importDefault(require("../user/SessionManager"));
|
|
24
24
|
const BASE_GRAPHQL_ERROR_MESSAGE = 'GraphQL request failed.';
|
|
25
25
|
class EasCommand extends core_1.Command {
|
|
26
|
+
static ContextOptions = {
|
|
27
|
+
/**
|
|
28
|
+
* Require this command to be run when logged-in. Returns the logged-in actor and a logged-in
|
|
29
|
+
* graphql client in the context.
|
|
30
|
+
*/
|
|
31
|
+
LoggedIn: {
|
|
32
|
+
loggedIn: new LoggedInContextField_1.default(),
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* Do not require this command to be run when logged-in, but if it is get the logged-in actor and a
|
|
36
|
+
* maybe-logged-in graphql client.
|
|
37
|
+
*/
|
|
38
|
+
MaybeLoggedIn: {
|
|
39
|
+
maybeLoggedIn: new MaybeLoggedInContextField_1.default(),
|
|
40
|
+
},
|
|
41
|
+
/**
|
|
42
|
+
* Specify this context if the logged-in requirement is only necessary in a particular execution of the command.
|
|
43
|
+
*/
|
|
44
|
+
DynamicLoggedIn: {
|
|
45
|
+
// eslint-disable-next-line async-protect/async-suffix
|
|
46
|
+
getDynamicLoggedInAsync: new DynamicLoggedInContextField_1.default(),
|
|
47
|
+
},
|
|
48
|
+
/**
|
|
49
|
+
* Specify this context requirement if the command needs to mutate the user session.
|
|
50
|
+
* @deprecated Should not be used outside of session management commands, which currently only includes `login` and `logout`.
|
|
51
|
+
*/
|
|
52
|
+
SessionManagment: {
|
|
53
|
+
sessionManager: new SessionManagementContextField_1.default(),
|
|
54
|
+
},
|
|
55
|
+
/**
|
|
56
|
+
* Require the project to be identified and registered on server if this command is being
|
|
57
|
+
* run within a project directory, null otherwise.
|
|
58
|
+
*/
|
|
59
|
+
OptionalProjectConfig: {
|
|
60
|
+
optionalPrivateProjectConfig: new OptionalPrivateProjectConfigContextField_1.OptionalPrivateProjectConfigContextField(),
|
|
61
|
+
},
|
|
62
|
+
/**
|
|
63
|
+
* Require this command to be run in a project directory. Return the project directory in the context.
|
|
64
|
+
*/
|
|
65
|
+
ProjectDir: {
|
|
66
|
+
projectDir: new ProjectDirContextField_1.default(),
|
|
67
|
+
},
|
|
68
|
+
/**
|
|
69
|
+
* Provides functions to load the project config when dynamic config options are needed (custom Env for example).
|
|
70
|
+
*/
|
|
71
|
+
DynamicProjectConfig: {
|
|
72
|
+
// eslint-disable-next-line async-protect/async-suffix
|
|
73
|
+
getDynamicPublicProjectConfigAsync: new DynamicProjectConfigContextField_1.DynamicPublicProjectConfigContextField(),
|
|
74
|
+
// eslint-disable-next-line async-protect/async-suffix
|
|
75
|
+
getDynamicPrivateProjectConfigAsync: new DynamicProjectConfigContextField_1.DynamicPrivateProjectConfigContextField(),
|
|
76
|
+
},
|
|
77
|
+
/**
|
|
78
|
+
* Require the project to be identified and registered on server. Returns the project config in the context.
|
|
79
|
+
* This also requires the user to be logged in (getProjectIdAsync requires logged in), so also expose that context.
|
|
80
|
+
* Exposing the loggedIn context here helps us guarantee user identification for logging purposes.
|
|
81
|
+
*/
|
|
82
|
+
ProjectConfig: {
|
|
83
|
+
loggedIn: new LoggedInContextField_1.default(),
|
|
84
|
+
privateProjectConfig: new PrivateProjectConfigContextField_1.PrivateProjectConfigContextField(),
|
|
85
|
+
},
|
|
86
|
+
/**
|
|
87
|
+
* Analytics manager. Returns the analytics manager in the context for use by the command.
|
|
88
|
+
*/
|
|
89
|
+
Analytics: {
|
|
90
|
+
analytics: new AnalyticsContextField_1.default(),
|
|
91
|
+
},
|
|
92
|
+
Vcs: {
|
|
93
|
+
vcsClient: new VcsClientContextField_1.default(),
|
|
94
|
+
},
|
|
95
|
+
ServerSideEnvironmentVariables: {
|
|
96
|
+
// eslint-disable-next-line async-protect/async-suffix
|
|
97
|
+
getServerSideEnvironmentVariablesAsync: new ServerSideEnvironmentVariablesContextField_1.ServerSideEnvironmentVariablesContextField(),
|
|
98
|
+
},
|
|
99
|
+
/**
|
|
100
|
+
* Require the project to be identified and registered on server. Returns the project ID evaluated from the app config.
|
|
101
|
+
*/
|
|
102
|
+
ProjectId: {
|
|
103
|
+
projectId: new ProjectIdContextField_1.ProjectIdContextField(),
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* Context allows for subclasses (commands) to declare their prerequisites in a type-safe manner.
|
|
108
|
+
* These declarative definitions each output a context property that is the result of the prerequisite being
|
|
109
|
+
* satisfied. These allow a unified common interface to be shared amongst commands in order to provide a more
|
|
110
|
+
* consistent CLI experience.
|
|
111
|
+
*
|
|
112
|
+
* For example, let's say a command needs the EAS project ID to make a GraphQL mutation. It should declare that
|
|
113
|
+
* it requires the `ProjectConfig` context, and then call `getContextAsync` to get the project ID.
|
|
114
|
+
*/
|
|
115
|
+
static contextDefinition = {};
|
|
116
|
+
/**
|
|
117
|
+
* The user session manager. Responsible for coordinating all user session related state.
|
|
118
|
+
* If needed in a subclass, use the SessionManager ContextOption.
|
|
119
|
+
*/
|
|
120
|
+
sessionManagerInternal;
|
|
121
|
+
/**
|
|
122
|
+
* The analytics manager. Used for logging analytics.
|
|
123
|
+
* It is set up here to ensure a consistent setup.
|
|
124
|
+
*/
|
|
125
|
+
analyticsInternal;
|
|
26
126
|
/**
|
|
27
127
|
* Execute the context in the contextDefinition to satisfy command prerequisites.
|
|
28
128
|
*/
|
|
@@ -106,94 +206,4 @@ class EasCommand extends core_1.Command {
|
|
|
106
206
|
throw sanitizedError;
|
|
107
207
|
}
|
|
108
208
|
}
|
|
109
|
-
EasCommand.ContextOptions = {
|
|
110
|
-
/**
|
|
111
|
-
* Require this command to be run when logged-in. Returns the logged-in actor and a logged-in
|
|
112
|
-
* graphql client in the context.
|
|
113
|
-
*/
|
|
114
|
-
LoggedIn: {
|
|
115
|
-
loggedIn: new LoggedInContextField_1.default(),
|
|
116
|
-
},
|
|
117
|
-
/**
|
|
118
|
-
* Do not require this command to be run when logged-in, but if it is get the logged-in actor and a
|
|
119
|
-
* maybe-logged-in graphql client.
|
|
120
|
-
*/
|
|
121
|
-
MaybeLoggedIn: {
|
|
122
|
-
maybeLoggedIn: new MaybeLoggedInContextField_1.default(),
|
|
123
|
-
},
|
|
124
|
-
/**
|
|
125
|
-
* Specify this context if the logged-in requirement is only necessary in a particular execution of the command.
|
|
126
|
-
*/
|
|
127
|
-
DynamicLoggedIn: {
|
|
128
|
-
// eslint-disable-next-line async-protect/async-suffix
|
|
129
|
-
getDynamicLoggedInAsync: new DynamicLoggedInContextField_1.default(),
|
|
130
|
-
},
|
|
131
|
-
/**
|
|
132
|
-
* Specify this context requirement if the command needs to mutate the user session.
|
|
133
|
-
* @deprecated Should not be used outside of session management commands, which currently only includes `login` and `logout`.
|
|
134
|
-
*/
|
|
135
|
-
SessionManagment: {
|
|
136
|
-
sessionManager: new SessionManagementContextField_1.default(),
|
|
137
|
-
},
|
|
138
|
-
/**
|
|
139
|
-
* Require the project to be identified and registered on server if this command is being
|
|
140
|
-
* run within a project directory, null otherwise.
|
|
141
|
-
*/
|
|
142
|
-
OptionalProjectConfig: {
|
|
143
|
-
optionalPrivateProjectConfig: new OptionalPrivateProjectConfigContextField_1.OptionalPrivateProjectConfigContextField(),
|
|
144
|
-
},
|
|
145
|
-
/**
|
|
146
|
-
* Require this command to be run in a project directory. Return the project directory in the context.
|
|
147
|
-
*/
|
|
148
|
-
ProjectDir: {
|
|
149
|
-
projectDir: new ProjectDirContextField_1.default(),
|
|
150
|
-
},
|
|
151
|
-
/**
|
|
152
|
-
* Provides functions to load the project config when dynamic config options are needed (custom Env for example).
|
|
153
|
-
*/
|
|
154
|
-
DynamicProjectConfig: {
|
|
155
|
-
// eslint-disable-next-line async-protect/async-suffix
|
|
156
|
-
getDynamicPublicProjectConfigAsync: new DynamicProjectConfigContextField_1.DynamicPublicProjectConfigContextField(),
|
|
157
|
-
// eslint-disable-next-line async-protect/async-suffix
|
|
158
|
-
getDynamicPrivateProjectConfigAsync: new DynamicProjectConfigContextField_1.DynamicPrivateProjectConfigContextField(),
|
|
159
|
-
},
|
|
160
|
-
/**
|
|
161
|
-
* Require the project to be identified and registered on server. Returns the project config in the context.
|
|
162
|
-
* This also requires the user to be logged in (getProjectIdAsync requires logged in), so also expose that context.
|
|
163
|
-
* Exposing the loggedIn context here helps us guarantee user identification for logging purposes.
|
|
164
|
-
*/
|
|
165
|
-
ProjectConfig: {
|
|
166
|
-
loggedIn: new LoggedInContextField_1.default(),
|
|
167
|
-
privateProjectConfig: new PrivateProjectConfigContextField_1.PrivateProjectConfigContextField(),
|
|
168
|
-
},
|
|
169
|
-
/**
|
|
170
|
-
* Analytics manager. Returns the analytics manager in the context for use by the command.
|
|
171
|
-
*/
|
|
172
|
-
Analytics: {
|
|
173
|
-
analytics: new AnalyticsContextField_1.default(),
|
|
174
|
-
},
|
|
175
|
-
Vcs: {
|
|
176
|
-
vcsClient: new VcsClientContextField_1.default(),
|
|
177
|
-
},
|
|
178
|
-
ServerSideEnvironmentVariables: {
|
|
179
|
-
// eslint-disable-next-line async-protect/async-suffix
|
|
180
|
-
getServerSideEnvironmentVariablesAsync: new ServerSideEnvironmentVariablesContextField_1.ServerSideEnvironmentVariablesContextField(),
|
|
181
|
-
},
|
|
182
|
-
/**
|
|
183
|
-
* Require the project to be identified and registered on server. Returns the project ID evaluated from the app config.
|
|
184
|
-
*/
|
|
185
|
-
ProjectId: {
|
|
186
|
-
projectId: new ProjectIdContextField_1.ProjectIdContextField(),
|
|
187
|
-
},
|
|
188
|
-
};
|
|
189
|
-
/**
|
|
190
|
-
* Context allows for subclasses (commands) to declare their prerequisites in a type-safe manner.
|
|
191
|
-
* These declarative definitions each output a context property that is the result of the prerequisite being
|
|
192
|
-
* satisfied. These allow a unified common interface to be shared amongst commands in order to provide a more
|
|
193
|
-
* consistent CLI experience.
|
|
194
|
-
*
|
|
195
|
-
* For example, let's say a command needs the EAS project ID to make a GraphQL mutation. It should declare that
|
|
196
|
-
* it requires the `ProjectConfig` context, and then call `getContextAsync` to get the project ID.
|
|
197
|
-
*/
|
|
198
|
-
EasCommand.contextDefinition = {};
|
|
199
209
|
exports.default = EasCommand;
|
|
@@ -9,6 +9,7 @@ export declare function fetchBuildsAsync({ graphqlClient, projectId, filters, }:
|
|
|
9
9
|
statuses?: BuildStatus[];
|
|
10
10
|
platform?: RequestedPlatform;
|
|
11
11
|
profile?: string;
|
|
12
|
+
hasFingerprint?: boolean;
|
|
12
13
|
};
|
|
13
14
|
}): Promise<BuildFragment[]>;
|
|
14
15
|
export declare function formatBuild(build: Pick<Build, 'id' | 'platform' | 'status' | 'createdAt'>): string;
|
|
@@ -28,6 +28,9 @@ async function fetchBuildsAsync({ graphqlClient, projectId, filters, }) {
|
|
|
28
28
|
if (filters?.profile) {
|
|
29
29
|
queryFilters['buildProfile'] = filters.profile;
|
|
30
30
|
}
|
|
31
|
+
if (filters?.hasFingerprint) {
|
|
32
|
+
queryFilters['hasFingerprint'] = filters.hasFingerprint;
|
|
33
|
+
}
|
|
31
34
|
if (!filters?.statuses) {
|
|
32
35
|
builds = await BuildQuery_1.BuildQuery.viewBuildsOnAppAsync(graphqlClient, {
|
|
33
36
|
appId: projectId,
|
|
@@ -10,8 +10,8 @@ function parseFeatureGateEnvVariableValue(value) {
|
|
|
10
10
|
return value.split(',').map(v => v.trim());
|
|
11
11
|
}
|
|
12
12
|
class FeatureGateEnvOverrides {
|
|
13
|
+
map = new Map();
|
|
13
14
|
constructor() {
|
|
14
|
-
this.map = new Map();
|
|
15
15
|
const overrideEnableGateKeys = new Set(parseFeatureGateEnvVariableValue(env_1.default.featureGateEnable));
|
|
16
16
|
const overrideDisableGateKeys = new Set(parseFeatureGateEnvVariableValue(env_1.default.featureGateDisable));
|
|
17
17
|
for (const overrideEnableKey of overrideEnableGateKeys) {
|
|
@@ -4,6 +4,8 @@ const tslib_1 = require("tslib");
|
|
|
4
4
|
const FeatureGateKey_1 = require("./FeatureGateKey");
|
|
5
5
|
const FeatureGateTestOverrides = tslib_1.__importStar(require("./FeatureGateTestOverrides"));
|
|
6
6
|
class FeatureGating {
|
|
7
|
+
serverValues;
|
|
8
|
+
envOverrides;
|
|
7
9
|
constructor(serverValues, envOverrides) {
|
|
8
10
|
this.serverValues = serverValues;
|
|
9
11
|
this.envOverrides = envOverrides;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
const tslib_1 = require("tslib");
|
|
5
4
|
const core_1 = require("@oclif/core");
|
|
@@ -9,9 +8,23 @@ const log_1 = tslib_1.__importDefault(require("../../log"));
|
|
|
9
8
|
const prompts_1 = require("../../prompts");
|
|
10
9
|
const User_1 = require("../../user/User");
|
|
11
10
|
class AccountLogin extends EasCommand_1.default {
|
|
11
|
+
static description = 'log in with your Expo account';
|
|
12
|
+
static aliases = ['login'];
|
|
13
|
+
static flags = {
|
|
14
|
+
// can pass either --sso or -s
|
|
15
|
+
sso: core_1.Flags.boolean({
|
|
16
|
+
description: 'Login with SSO',
|
|
17
|
+
char: 's',
|
|
18
|
+
default: false,
|
|
19
|
+
}),
|
|
20
|
+
};
|
|
21
|
+
static contextDefinition = {
|
|
22
|
+
...this.ContextOptions.MaybeLoggedIn,
|
|
23
|
+
...this.ContextOptions.SessionManagment,
|
|
24
|
+
};
|
|
12
25
|
async runAsync() {
|
|
13
|
-
const { flags: { sso }, } = await this.parse(
|
|
14
|
-
const { sessionManager, maybeLoggedIn: { actor }, } = await this.getContextAsync(
|
|
26
|
+
const { flags: { sso }, } = await this.parse(AccountLogin);
|
|
27
|
+
const { sessionManager, maybeLoggedIn: { actor }, } = await this.getContextAsync(AccountLogin, { nonInteractive: false });
|
|
15
28
|
if (sessionManager.getAccessToken()) {
|
|
16
29
|
throw new Error('EXPO_TOKEN is set in your environment, and is being used for all EAS authentication. To use username/password authentication, unset EXPO_TOKEN in your environment and re-run the command.');
|
|
17
30
|
}
|
|
@@ -28,19 +41,4 @@ class AccountLogin extends EasCommand_1.default {
|
|
|
28
41
|
log_1.default.log('Logged in');
|
|
29
42
|
}
|
|
30
43
|
}
|
|
31
|
-
_a = AccountLogin;
|
|
32
|
-
AccountLogin.description = 'log in with your Expo account';
|
|
33
|
-
AccountLogin.aliases = ['login'];
|
|
34
|
-
AccountLogin.flags = {
|
|
35
|
-
// can pass either --sso or -s
|
|
36
|
-
sso: core_1.Flags.boolean({
|
|
37
|
-
description: 'Login with SSO',
|
|
38
|
-
char: 's',
|
|
39
|
-
default: false,
|
|
40
|
-
}),
|
|
41
|
-
};
|
|
42
|
-
AccountLogin.contextDefinition = {
|
|
43
|
-
..._a.ContextOptions.MaybeLoggedIn,
|
|
44
|
-
..._a.ContextOptions.SessionManagment,
|
|
45
|
-
};
|
|
46
44
|
exports.default = AccountLogin;
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
const tslib_1 = require("tslib");
|
|
5
4
|
const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
|
|
6
5
|
const log_1 = tslib_1.__importDefault(require("../../log"));
|
|
7
6
|
class AccountLogout extends EasCommand_1.default {
|
|
7
|
+
static description = 'log out';
|
|
8
|
+
static aliases = ['logout'];
|
|
9
|
+
static contextDefinition = {
|
|
10
|
+
...this.ContextOptions.SessionManagment,
|
|
11
|
+
};
|
|
8
12
|
async runAsync() {
|
|
9
|
-
const { sessionManager } = await this.getContextAsync(
|
|
13
|
+
const { sessionManager } = await this.getContextAsync(AccountLogout, { nonInteractive: false });
|
|
10
14
|
await sessionManager.logoutAsync();
|
|
11
15
|
log_1.default.log('Logged out');
|
|
12
16
|
}
|
|
13
17
|
}
|
|
14
|
-
_a = AccountLogout;
|
|
15
|
-
AccountLogout.description = 'log out';
|
|
16
|
-
AccountLogout.aliases = ['logout'];
|
|
17
|
-
AccountLogout.contextDefinition = {
|
|
18
|
-
..._a.ContextOptions.SessionManagment,
|
|
19
|
-
};
|
|
20
18
|
exports.default = AccountLogout;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
const tslib_1 = require("tslib");
|
|
5
4
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
@@ -9,8 +8,13 @@ const generated_1 = require("../../graphql/generated");
|
|
|
9
8
|
const log_1 = tslib_1.__importDefault(require("../../log"));
|
|
10
9
|
const User_1 = require("../../user/User");
|
|
11
10
|
class AccountView extends EasCommand_1.default {
|
|
11
|
+
static description = 'show the username you are logged in as';
|
|
12
|
+
static aliases = ['whoami'];
|
|
13
|
+
static contextDefinition = {
|
|
14
|
+
...this.ContextOptions.MaybeLoggedIn,
|
|
15
|
+
};
|
|
12
16
|
async runAsync() {
|
|
13
|
-
const { maybeLoggedIn: { actor, authenticationInfo }, } = await this.getContextAsync(
|
|
17
|
+
const { maybeLoggedIn: { actor, authenticationInfo }, } = await this.getContextAsync(AccountView, { nonInteractive: true });
|
|
14
18
|
if (actor) {
|
|
15
19
|
const loggedInAs = authenticationInfo.accessToken
|
|
16
20
|
? `${(0, User_1.getActorDisplayName)(actor)} (authenticated using EXPO_TOKEN)`
|
|
@@ -23,8 +27,8 @@ class AccountView extends EasCommand_1.default {
|
|
|
23
27
|
log_1.default.newLine();
|
|
24
28
|
log_1.default.log('Accounts:');
|
|
25
29
|
actor.accounts.forEach(account => {
|
|
26
|
-
const roleOnAccount =
|
|
27
|
-
log_1.default.log(`• ${account.name} (Role: ${
|
|
30
|
+
const roleOnAccount = AccountView.getRoleOnAccount(actor, account);
|
|
31
|
+
log_1.default.log(`• ${account.name} (Role: ${AccountView.getLabelForRole(roleOnAccount)})`);
|
|
28
32
|
});
|
|
29
33
|
}
|
|
30
34
|
}
|
|
@@ -56,10 +60,4 @@ class AccountView extends EasCommand_1.default {
|
|
|
56
60
|
}
|
|
57
61
|
}
|
|
58
62
|
}
|
|
59
|
-
_a = AccountView;
|
|
60
|
-
AccountView.description = 'show the username you are logged in as';
|
|
61
|
-
AccountView.aliases = ['whoami'];
|
|
62
|
-
AccountView.contextDefinition = {
|
|
63
|
-
..._a.ContextOptions.MaybeLoggedIn,
|
|
64
|
-
};
|
|
65
63
|
exports.default = AccountView;
|
|
@@ -5,6 +5,8 @@ const AnalyticsManager_1 = require("../analytics/AnalyticsManager");
|
|
|
5
5
|
const EasCommand_1 = tslib_1.__importDefault(require("../commandUtils/EasCommand"));
|
|
6
6
|
const log_1 = tslib_1.__importDefault(require("../log"));
|
|
7
7
|
class AnalyticsView extends EasCommand_1.default {
|
|
8
|
+
static description = 'display or change analytics settings';
|
|
9
|
+
static args = [{ name: 'STATUS', options: ['on', 'off'] }];
|
|
8
10
|
async runAsync() {
|
|
9
11
|
const { STATUS: status } = (await this.parse(AnalyticsView)).args;
|
|
10
12
|
if (status) {
|
|
@@ -17,6 +19,4 @@ class AnalyticsView extends EasCommand_1.default {
|
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
}
|
|
20
|
-
AnalyticsView.description = 'display or change analytics settings';
|
|
21
|
-
AnalyticsView.args = [{ name: 'STATUS', options: ['on', 'off'] }];
|
|
22
22
|
exports.default = AnalyticsView;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
const tslib_1 = require("tslib");
|
|
5
4
|
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
@@ -12,9 +11,25 @@ const projectUtils_1 = require("../../project/projectUtils");
|
|
|
12
11
|
const prompts_1 = require("../../prompts");
|
|
13
12
|
const json_1 = require("../../utils/json");
|
|
14
13
|
class BranchCreate extends EasCommand_1.default {
|
|
14
|
+
static description = 'create a branch';
|
|
15
|
+
static args = [
|
|
16
|
+
{
|
|
17
|
+
name: 'name',
|
|
18
|
+
required: false,
|
|
19
|
+
description: 'Name of the branch to create',
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
static flags = {
|
|
23
|
+
...flags_1.EasNonInteractiveAndJsonFlags,
|
|
24
|
+
};
|
|
25
|
+
static contextDefinition = {
|
|
26
|
+
...this.ContextOptions.ProjectId,
|
|
27
|
+
...this.ContextOptions.LoggedIn,
|
|
28
|
+
...this.ContextOptions.Vcs,
|
|
29
|
+
};
|
|
15
30
|
async runAsync() {
|
|
16
|
-
let { args: { name }, flags: { json: jsonFlag, 'non-interactive': nonInteractive }, } = await this.parse(
|
|
17
|
-
const { projectId, loggedIn: { graphqlClient }, vcsClient, } = await this.getContextAsync(
|
|
31
|
+
let { args: { name }, flags: { json: jsonFlag, 'non-interactive': nonInteractive }, } = await this.parse(BranchCreate);
|
|
32
|
+
const { projectId, loggedIn: { graphqlClient }, vcsClient, } = await this.getContextAsync(BranchCreate, {
|
|
18
33
|
nonInteractive,
|
|
19
34
|
});
|
|
20
35
|
if (jsonFlag) {
|
|
@@ -43,21 +58,4 @@ class BranchCreate extends EasCommand_1.default {
|
|
|
43
58
|
}
|
|
44
59
|
}
|
|
45
60
|
}
|
|
46
|
-
_a = BranchCreate;
|
|
47
|
-
BranchCreate.description = 'create a branch';
|
|
48
|
-
BranchCreate.args = [
|
|
49
|
-
{
|
|
50
|
-
name: 'name',
|
|
51
|
-
required: false,
|
|
52
|
-
description: 'Name of the branch to create',
|
|
53
|
-
},
|
|
54
|
-
];
|
|
55
|
-
BranchCreate.flags = {
|
|
56
|
-
...flags_1.EasNonInteractiveAndJsonFlags,
|
|
57
|
-
};
|
|
58
|
-
BranchCreate.contextDefinition = {
|
|
59
|
-
..._a.ContextOptions.ProjectId,
|
|
60
|
-
..._a.ContextOptions.LoggedIn,
|
|
61
|
-
..._a.ContextOptions.Vcs,
|
|
62
|
-
};
|
|
63
61
|
exports.default = BranchCreate;
|