eas-cli 10.2.3 → 11.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.
Files changed (216) hide show
  1. package/README.md +63 -65
  2. package/build/branch/actions/SelectBranch.d.ts +1 -1
  3. package/build/branch/actions/SelectBranch.js +2 -2
  4. package/build/branch/queries.js +3 -1
  5. package/build/build/android/build.js +1 -1
  6. package/build/build/android/version.js +1 -1
  7. package/build/build/build.js +21 -10
  8. package/build/build/context.d.ts +1 -0
  9. package/build/build/createContext.d.ts +2 -1
  10. package/build/build/createContext.js +6 -3
  11. package/build/build/evaluateConfigWithEnvVarsAsync.d.ts +16 -0
  12. package/build/build/evaluateConfigWithEnvVarsAsync.js +44 -0
  13. package/build/build/ios/build.js +4 -4
  14. package/build/build/local.d.ts +1 -1
  15. package/build/build/local.js +3 -2
  16. package/build/build/queries.js +3 -1
  17. package/build/build/runBuildAndSubmit.d.ts +2 -0
  18. package/build/build/runBuildAndSubmit.js +14 -7
  19. package/build/build/utils/printBuildInfo.js +6 -2
  20. package/build/build/validate.js +2 -2
  21. package/build/channel/actions/SelectChannel.d.ts +1 -1
  22. package/build/channel/actions/SelectChannel.js +2 -2
  23. package/build/channel/queries.js +6 -2
  24. package/build/commandUtils/EasCommand.js +2 -2
  25. package/build/commandUtils/context/contextUtils/createGraphqlClient.js +1 -1
  26. package/build/commandUtils/flags.d.ts +16 -0
  27. package/build/commandUtils/flags.js +61 -1
  28. package/build/commandUtils/gating/FeatureGating.js +6 -2
  29. package/build/commands/analytics.js +1 -1
  30. package/build/commands/build/index.d.ts +4 -1
  31. package/build/commands/build/index.js +3 -0
  32. package/build/commands/build/resign.d.ts +4 -1
  33. package/build/commands/build/resign.js +12 -3
  34. package/build/commands/build/version/get.d.ts +1 -0
  35. package/build/commands/build/version/get.js +9 -2
  36. package/build/commands/build/version/set.d.ts +1 -0
  37. package/build/commands/build/version/set.js +11 -1
  38. package/build/commands/build/version/sync.d.ts +1 -0
  39. package/build/commands/build/version/sync.js +13 -5
  40. package/build/commands/config.d.ts +2 -0
  41. package/build/commands/config.js +10 -3
  42. package/build/commands/device/delete.js +1 -1
  43. package/build/commands/device/rename.js +1 -1
  44. package/build/commands/env/create.d.ts +23 -0
  45. package/build/commands/env/create.js +169 -0
  46. package/build/commands/env/delete.d.ts +18 -0
  47. package/build/commands/env/delete.js +95 -0
  48. package/build/commands/env/get.d.ts +19 -0
  49. package/build/commands/env/get.js +100 -0
  50. package/build/commands/env/link.d.ts +15 -0
  51. package/build/commands/env/link.js +59 -0
  52. package/build/commands/env/list.d.ts +18 -0
  53. package/build/commands/env/list.js +82 -0
  54. package/build/commands/env/pull.d.ts +15 -0
  55. package/build/commands/env/pull.js +64 -0
  56. package/build/commands/env/push.d.ts +17 -0
  57. package/build/commands/env/push.js +148 -0
  58. package/build/commands/env/unlink.d.ts +15 -0
  59. package/build/commands/env/unlink.js +65 -0
  60. package/build/commands/env/update.d.ts +21 -0
  61. package/build/commands/env/update.js +135 -0
  62. package/build/commands/metadata/lint.js +4 -2
  63. package/build/commands/project/onboarding.js +1 -1
  64. package/build/commands/update/edit.d.ts +19 -0
  65. package/build/commands/update/edit.js +102 -0
  66. package/build/commands/update/index.d.ts +1 -2
  67. package/build/commands/update/index.js +53 -25
  68. package/build/commands/update/list.js +6 -3
  69. package/build/commands/update/roll-back-to-embedded.js +1 -1
  70. package/build/credentials/android/AndroidCredentialsProvider.d.ts +2 -2
  71. package/build/credentials/android/actions/AssignFcm.d.ts +1 -1
  72. package/build/credentials/android/actions/AssignGoogleServiceAccountKeyForFcmV1.d.ts +1 -1
  73. package/build/credentials/android/actions/AssignGoogleServiceAccountKeyForSubmissions.d.ts +1 -1
  74. package/build/credentials/android/actions/CreateFcm.d.ts +1 -1
  75. package/build/credentials/android/actions/CreateGoogleServiceAccountKey.d.ts +1 -1
  76. package/build/credentials/android/actions/CreateKeystore.d.ts +1 -1
  77. package/build/credentials/android/actions/DownloadKeystore.d.ts +2 -2
  78. package/build/credentials/android/actions/RemoveFcm.d.ts +1 -1
  79. package/build/credentials/android/actions/RemoveGoogleServiceAccountKey.d.ts +2 -2
  80. package/build/credentials/android/actions/RemoveKeystore.d.ts +1 -1
  81. package/build/credentials/android/actions/SetUpBuildCredentials.d.ts +1 -1
  82. package/build/credentials/android/actions/SetUpBuildCredentialsFromCredentialsJson.d.ts +1 -1
  83. package/build/credentials/android/actions/SetUpGoogleServiceAccountKeyForFcmV1.d.ts +1 -1
  84. package/build/credentials/android/actions/SetUpGoogleServiceAccountKeyForSubmissions.d.ts +1 -1
  85. package/build/credentials/android/actions/UseExistingGoogleServiceAccountKey.d.ts +1 -1
  86. package/build/credentials/android/api/GraphqlClient.js +3 -3
  87. package/build/credentials/context.d.ts +2 -2
  88. package/build/credentials/context.js +1 -1
  89. package/build/credentials/ios/IosCredentialsProvider.d.ts +2 -2
  90. package/build/credentials/ios/IosCredentialsProvider.js +1 -1
  91. package/build/credentials/ios/actions/AscApiKeyUtils.js +1 -1
  92. package/build/credentials/ios/actions/AssignAscApiKey.d.ts +1 -1
  93. package/build/credentials/ios/actions/AssignPushKey.d.ts +1 -1
  94. package/build/credentials/ios/actions/ConfigureProvisioningProfile.d.ts +4 -4
  95. package/build/credentials/ios/actions/CreateAscApiKey.d.ts +1 -1
  96. package/build/credentials/ios/actions/CreateDistributionCertificate.d.ts +1 -1
  97. package/build/credentials/ios/actions/CreateProvisioningProfile.d.ts +3 -3
  98. package/build/credentials/ios/actions/CreatePushKey.d.ts +1 -1
  99. package/build/credentials/ios/actions/DistributionCertificateUtils.js +5 -5
  100. package/build/credentials/ios/actions/ProvisioningProfileUtils.js +1 -1
  101. package/build/credentials/ios/actions/PushKeyUtils.js +2 -2
  102. package/build/credentials/ios/actions/RemoveAscApiKey.d.ts +2 -2
  103. package/build/credentials/ios/actions/RemoveDistributionCertificate.d.ts +3 -3
  104. package/build/credentials/ios/actions/RemoveProvisioningProfile.d.ts +2 -2
  105. package/build/credentials/ios/actions/RemovePushKey.d.ts +2 -2
  106. package/build/credentials/ios/actions/SetUpAdhocProvisioningProfile.d.ts +1 -1
  107. package/build/credentials/ios/actions/SetUpAdhocProvisioningProfile.js +1 -1
  108. package/build/credentials/ios/actions/SetUpAscApiKey.d.ts +2 -2
  109. package/build/credentials/ios/actions/SetUpBuildCredentials.d.ts +1 -1
  110. package/build/credentials/ios/actions/SetUpBuildCredentialsFromCredentialsJson.d.ts +3 -3
  111. package/build/credentials/ios/actions/SetUpDistributionCertificate.d.ts +2 -2
  112. package/build/credentials/ios/actions/SetUpDistributionCertificate.js +1 -1
  113. package/build/credentials/ios/actions/SetUpInternalProvisioningProfile.d.ts +1 -1
  114. package/build/credentials/ios/actions/SetUpProvisioningProfile.d.ts +3 -3
  115. package/build/credentials/ios/actions/SetUpProvisioningProfile.js +1 -1
  116. package/build/credentials/ios/actions/SetUpPushKey.d.ts +1 -1
  117. package/build/credentials/ios/actions/SetUpTargetBuildCredentials.d.ts +1 -1
  118. package/build/credentials/ios/actions/SetUpTargetBuildCredentialsFromCredentialsJson.d.ts +3 -3
  119. package/build/credentials/ios/actions/UpdateCredentialsJson.d.ts +3 -3
  120. package/build/credentials/ios/api/GraphqlClient.js +4 -4
  121. package/build/credentials/ios/appstore/AppStoreApi.js +4 -4
  122. package/build/credentials/ios/appstore/authenticate.js +1 -1
  123. package/build/credentials/ios/appstore/bundleId.js +1 -1
  124. package/build/credentials/ios/appstore/bundleIdCapabilities.js +1 -1
  125. package/build/credentials/ios/appstore/ensureAppExists.js +1 -1
  126. package/build/credentials/ios/appstore/keychain.js +8 -6
  127. package/build/credentials/ios/appstore/provisioningProfile.js +1 -1
  128. package/build/credentials/ios/appstore/pushKey.js +1 -1
  129. package/build/credentials/ios/appstore/resolveCredentials.js +2 -2
  130. package/build/credentials/ios/credentials.js +1 -1
  131. package/build/credentials/ios/utils/convertHTMLToASCII.js +1 -1
  132. package/build/credentials/ios/validators/validateProvisioningProfile.js +2 -4
  133. package/build/credentials/manager/CheckBuildProfileFlagAgainstEasJson.d.ts +3 -3
  134. package/build/credentials/manager/CreateAndroidBuildCredentials.d.ts +1 -1
  135. package/build/credentials/manager/ManageAndroid.js +2 -1
  136. package/build/credentials/manager/ManageIos.js +3 -2
  137. package/build/credentials/manager/SelectAndroidBuildCredentials.d.ts +2 -2
  138. package/build/credentials/manager/SelectBuildProfileFromEasJson.d.ts +2 -2
  139. package/build/credentials/manager/SelectIosDistributionTypeGraphqlFromBuildProfile.d.ts +1 -1
  140. package/build/credentials/manager/SelectIosDistributionTypeGraphqlFromBuildProfile.js +1 -1
  141. package/build/credentials/manager/SelectPlatform.js +3 -2
  142. package/build/credentials/manager/SetDefaultAndroidKeystore.d.ts +1 -1
  143. package/build/credentials/manager/SetUpAndroidBuildCredentials.d.ts +1 -1
  144. package/build/credentials/manager/SetUpBuildCredentialsCommandAction.js +3 -2
  145. package/build/credentials/manager/SetUpIosBuildCredentials.d.ts +1 -1
  146. package/build/devices/actions/create/action.d.ts +4 -4
  147. package/build/devices/actions/create/registrationUrlMethod.js +3 -1
  148. package/build/devices/manager.d.ts +4 -4
  149. package/build/devices/queries.js +3 -1
  150. package/build/easMultiselect.js +6 -2
  151. package/build/graphql/generated.d.ts +874 -62
  152. package/build/graphql/generated.js +92 -2
  153. package/build/graphql/mutations/EnvironmentVariableMutation.d.ts +39 -0
  154. package/build/graphql/mutations/EnvironmentVariableMutation.js +133 -0
  155. package/build/graphql/mutations/PublishMutation.d.ts +1 -0
  156. package/build/graphql/mutations/PublishMutation.js +16 -0
  157. package/build/graphql/queries/BranchQuery.d.ts +7 -1
  158. package/build/graphql/queries/BranchQuery.js +42 -0
  159. package/build/graphql/queries/EnvironmentVariablesQuery.d.ts +22 -0
  160. package/build/graphql/queries/EnvironmentVariablesQuery.js +106 -0
  161. package/build/graphql/types/EnvironmentVariable.d.ts +1 -0
  162. package/build/graphql/types/EnvironmentVariable.js +16 -0
  163. package/build/graphql/types/Update.js +4 -0
  164. package/build/metadata/apple/config/reader.js +1 -1
  165. package/build/metadata/apple/tasks/age-rating.js +1 -1
  166. package/build/metadata/apple/tasks/app-review-detail.js +2 -1
  167. package/build/metadata/apple/tasks/app-version.d.ts +1 -1
  168. package/build/metadata/config/resolve.js +2 -1
  169. package/build/metadata/errors.js +2 -1
  170. package/build/metadata/utils/log.js +1 -1
  171. package/build/metadata/utils/retry.js +1 -1
  172. package/build/onboarding/runCommand.js +1 -1
  173. package/build/ora.js +12 -4
  174. package/build/project/android/applicationId.js +1 -1
  175. package/build/project/applicationIdentifier.d.ts +3 -2
  176. package/build/project/applicationIdentifier.js +2 -2
  177. package/build/project/expoConfig.js +2 -2
  178. package/build/project/ios/entitlements.js +1 -1
  179. package/build/project/publish.d.ts +31 -18
  180. package/build/project/publish.js +61 -37
  181. package/build/project/resolveRuntimeVersionAsync.d.ts +4 -1
  182. package/build/project/resolveRuntimeVersionAsync.js +9 -3
  183. package/build/rollout/actions/CreateRollout.d.ts +2 -2
  184. package/build/rollout/actions/EditRollout.d.ts +2 -2
  185. package/build/rollout/actions/EndRollout.d.ts +2 -2
  186. package/build/rollout/actions/ManageRollout.d.ts +2 -2
  187. package/build/rollout/actions/NonInteractiveRollout.d.ts +1 -1
  188. package/build/rollout/actions/RolloutMainMenu.d.ts +1 -1
  189. package/build/rollout/actions/SelectRuntime.d.ts +3 -3
  190. package/build/run/android/adb.js +1 -1
  191. package/build/run/ios/simctl.js +1 -1
  192. package/build/run/ios/systemRequirements.js +1 -1
  193. package/build/submit/ArchiveSource.js +15 -15
  194. package/build/submit/BaseSubmitter.js +2 -2
  195. package/build/submit/submit.js +1 -1
  196. package/build/update/android/UpdatesModule.js +1 -1
  197. package/build/update/configure.d.ts +1 -1
  198. package/build/update/queries.js +8 -3
  199. package/build/update/republish.js +2 -1
  200. package/build/update/utils.d.ts +1 -0
  201. package/build/update/utils.js +7 -0
  202. package/build/user/expoSsoLauncher.js +1 -1
  203. package/build/utils/download.js +2 -2
  204. package/build/utils/filterAsync.js +1 -1
  205. package/build/utils/formatVariable.d.ts +2 -0
  206. package/build/utils/formatVariable.js +16 -0
  207. package/build/utils/image.js +2 -2
  208. package/build/utils/progress.js +1 -1
  209. package/build/utils/promise.js +1 -1
  210. package/build/utils/prompts.d.ts +9 -0
  211. package/build/utils/prompts.js +68 -0
  212. package/build/utils/queries.js +2 -2
  213. package/build/vcs/clients/git.d.ts +1 -1
  214. package/build/vcs/local.d.ts +1 -1
  215. package/oclif.manifest.json +627 -22
  216. package/package.json +15 -15
@@ -0,0 +1,95 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
7
+ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
8
+ const flags_1 = require("../../commandUtils/flags");
9
+ const generated_1 = require("../../graphql/generated");
10
+ const EnvironmentVariableMutation_1 = require("../../graphql/mutations/EnvironmentVariableMutation");
11
+ const EnvironmentVariablesQuery_1 = require("../../graphql/queries/EnvironmentVariablesQuery");
12
+ const log_1 = tslib_1.__importDefault(require("../../log"));
13
+ const prompts_1 = require("../../prompts");
14
+ const prompts_2 = require("../../utils/prompts");
15
+ class EnvironmentVariableDelete extends EasCommand_1.default {
16
+ async runAsync() {
17
+ const { flags } = await this.parse(_a);
18
+ let { name, environment, 'non-interactive': nonInteractive, scope } = this.validateFlags(flags);
19
+ const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
20
+ nonInteractive,
21
+ });
22
+ if (scope === generated_1.EnvironmentVariableScope.Project) {
23
+ if (!environment) {
24
+ environment = await (0, prompts_2.promptVariableEnvironmentAsync)(nonInteractive);
25
+ }
26
+ }
27
+ const variables = scope === generated_1.EnvironmentVariableScope.Project && environment
28
+ ? await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.byAppIdAsync(graphqlClient, {
29
+ appId: projectId,
30
+ environment,
31
+ })
32
+ : await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.sharedAsync(graphqlClient, { appId: projectId });
33
+ if (!name) {
34
+ ({ name } = await (0, prompts_1.promptAsync)({
35
+ type: 'select',
36
+ name: 'name',
37
+ message: 'Pick the variable to be deleted:',
38
+ choices: variables
39
+ .filter(({ scope: variableScope }) => scope === variableScope)
40
+ .map(variable => ({
41
+ title: variable.name,
42
+ value: variable.name,
43
+ })),
44
+ }));
45
+ if (!name) {
46
+ throw new Error(`Environment variable wasn't selected. Run the command again and select existing variable or run it with ${chalk_1.default.bold('--name VARIABLE_NAME')} flag to fix the issue.`);
47
+ }
48
+ }
49
+ const selectedVariable = variables.find(variable => variable.name === name);
50
+ if (!selectedVariable) {
51
+ throw new Error(`Variable "${name}" not found.`);
52
+ }
53
+ if (!nonInteractive) {
54
+ log_1.default.addNewLineIfNone();
55
+ log_1.default.warn(`You are about to permanently delete variable ${selectedVariable.name}.`);
56
+ log_1.default.warn('This action is irreversible.');
57
+ log_1.default.newLine();
58
+ const confirmed = await (0, prompts_1.toggleConfirmAsync)({
59
+ message: `Are you sure you wish to proceed?${selectedVariable.scope === generated_1.EnvironmentVariableScope.Shared
60
+ ? ' This variable is applied across your whole account and may affect multiple apps.'
61
+ : ''}`,
62
+ });
63
+ if (!confirmed) {
64
+ log_1.default.error(`Canceled deletion of variable ${selectedVariable.name}.`);
65
+ throw new Error(`Variable "${name}" not deleted.`);
66
+ }
67
+ }
68
+ await EnvironmentVariableMutation_1.EnvironmentVariableMutation.deleteAsync(graphqlClient, selectedVariable.id);
69
+ log_1.default.withTick(`️Deleted variable ${selectedVariable.name}".`);
70
+ }
71
+ validateFlags(flags) {
72
+ if (flags['non-interactive']) {
73
+ if (!flags.name) {
74
+ throw new Error(`Environment variable needs 'name' to be specified when running in non-interactive mode. Run the command with ${chalk_1.default.bold('--name VARIABLE_NAME')} flag to fix the issue`);
75
+ }
76
+ }
77
+ return flags;
78
+ }
79
+ }
80
+ _a = EnvironmentVariableDelete;
81
+ EnvironmentVariableDelete.description = 'delete an environment variable by name';
82
+ EnvironmentVariableDelete.hidden = true;
83
+ EnvironmentVariableDelete.flags = {
84
+ name: core_1.Flags.string({
85
+ description: 'Name of the variable to delete',
86
+ }),
87
+ ...flags_1.EASVariableScopeFlag,
88
+ ...flags_1.EASEnvironmentFlag,
89
+ ...flags_1.EASNonInteractiveFlag,
90
+ };
91
+ EnvironmentVariableDelete.contextDefinition = {
92
+ ..._a.ContextOptions.ProjectConfig,
93
+ ..._a.ContextOptions.LoggedIn,
94
+ };
95
+ exports.default = EnvironmentVariableDelete;
@@ -0,0 +1,19 @@
1
+ import EasCommand from '../../commandUtils/EasCommand';
2
+ import { EnvironmentVariableEnvironment, EnvironmentVariableScope } from '../../graphql/generated';
3
+ export default class EnvironmentVariableGet extends EasCommand {
4
+ static description: string;
5
+ static hidden: boolean;
6
+ static contextDefinition: {
7
+ loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
8
+ privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
9
+ };
10
+ static flags: {
11
+ environment: import("@oclif/core/lib/interfaces").OptionFlag<EnvironmentVariableEnvironment | undefined>;
12
+ 'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
13
+ scope: import("@oclif/core/lib/interfaces").OptionFlag<EnvironmentVariableScope>;
14
+ format: import("@oclif/core/lib/interfaces").OptionFlag<string>;
15
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
16
+ };
17
+ runAsync(): Promise<void>;
18
+ private validateFlags;
19
+ }
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
7
+ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
8
+ const flags_1 = require("../../commandUtils/flags");
9
+ const generated_1 = require("../../graphql/generated");
10
+ const EnvironmentVariablesQuery_1 = require("../../graphql/queries/EnvironmentVariablesQuery");
11
+ const log_1 = tslib_1.__importDefault(require("../../log"));
12
+ const formatVariable_1 = require("../../utils/formatVariable");
13
+ const prompts_1 = require("../../utils/prompts");
14
+ class EnvironmentVariableGet extends EasCommand_1.default {
15
+ async runAsync() {
16
+ const { flags } = await this.parse(_a);
17
+ let { environment, name, 'non-interactive': nonInteractive, format, scope, } = this.validateFlags(flags);
18
+ const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
19
+ nonInteractive,
20
+ });
21
+ if (!name) {
22
+ name = await (0, prompts_1.promptVariableNameAsync)(nonInteractive);
23
+ }
24
+ if (!environment && scope === generated_1.EnvironmentVariableScope.Project) {
25
+ environment = await (0, prompts_1.promptVariableEnvironmentAsync)(nonInteractive);
26
+ }
27
+ const variable = await getVariableAsync(graphqlClient, scope, projectId, name, environment);
28
+ if (!variable) {
29
+ log_1.default.error(`Variable with name "${name}" not found`);
30
+ return;
31
+ }
32
+ if (!variable.value) {
33
+ throw new Error(`${chalk_1.default.bold(variable.name)} is a secret variable and cannot be displayed once it has been created.`);
34
+ }
35
+ if (format === 'short') {
36
+ log_1.default.log(`${chalk_1.default.bold(variable.name)}=${variable.value}`);
37
+ }
38
+ else {
39
+ log_1.default.log((0, formatVariable_1.formatVariable)(variable));
40
+ }
41
+ }
42
+ validateFlags(flags) {
43
+ if (flags.environment && flags.scope === generated_1.EnvironmentVariableScope.Shared) {
44
+ throw new Error(`Unexpected argument: --environment can only be used with project variables`);
45
+ }
46
+ if (flags['non-interactive']) {
47
+ if (!flags.name) {
48
+ throw new Error('Variable name is required. Run the command with --name flag.');
49
+ }
50
+ if (!flags.scope) {
51
+ throw new Error('Scope is required. Run the command with --scope flag.');
52
+ }
53
+ if (!flags.environment && flags.scope === generated_1.EnvironmentVariableScope.Project) {
54
+ throw new Error('Environment is required.');
55
+ }
56
+ }
57
+ return flags;
58
+ }
59
+ }
60
+ _a = EnvironmentVariableGet;
61
+ EnvironmentVariableGet.description = 'get environment variable';
62
+ EnvironmentVariableGet.hidden = true;
63
+ EnvironmentVariableGet.contextDefinition = {
64
+ ..._a.ContextOptions.ProjectConfig,
65
+ ..._a.ContextOptions.LoggedIn,
66
+ };
67
+ EnvironmentVariableGet.flags = {
68
+ name: core_1.Flags.string({
69
+ description: 'Name of the variable',
70
+ }),
71
+ ...flags_1.EASVariableFormatFlag,
72
+ ...flags_1.EASVariableScopeFlag,
73
+ ...flags_1.EASNonInteractiveFlag,
74
+ ...flags_1.EASEnvironmentFlag,
75
+ };
76
+ exports.default = EnvironmentVariableGet;
77
+ async function getVariableAsync(graphqlClient, scope, projectId, name, environment) {
78
+ if (!environment && scope === generated_1.EnvironmentVariableScope.Project) {
79
+ throw new Error('Environment is required.');
80
+ }
81
+ if (!name) {
82
+ throw new Error("Variable name is required. Run the command with '--name VARIABLE_NAME' flag.");
83
+ }
84
+ if (environment && scope === generated_1.EnvironmentVariableScope.Project) {
85
+ const appVariables = await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.byAppIdWithSensitiveAsync(graphqlClient, {
86
+ appId: projectId,
87
+ environment,
88
+ filterNames: [name],
89
+ });
90
+ return appVariables[0];
91
+ }
92
+ if (scope === generated_1.EnvironmentVariableScope.Shared) {
93
+ const sharedVariables = await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.sharedWithSensitiveAsync(graphqlClient, {
94
+ appId: projectId,
95
+ filterNames: [name],
96
+ });
97
+ return sharedVariables[0];
98
+ }
99
+ return null;
100
+ }
@@ -0,0 +1,15 @@
1
+ import EasCommand from '../../commandUtils/EasCommand';
2
+ export default class EnvironmentVariableLink extends EasCommand {
3
+ static description: string;
4
+ static hidden: boolean;
5
+ static flags: {
6
+ 'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
+ environment: import("@oclif/core/lib/interfaces").OptionFlag<import("../../graphql/generated").EnvironmentVariableEnvironment | undefined>;
8
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
9
+ };
10
+ static contextDefinition: {
11
+ loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
12
+ privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
13
+ };
14
+ runAsync(): Promise<void>;
15
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
7
+ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
8
+ const flags_1 = require("../../commandUtils/flags");
9
+ const EnvironmentVariableMutation_1 = require("../../graphql/mutations/EnvironmentVariableMutation");
10
+ const EnvironmentVariablesQuery_1 = require("../../graphql/queries/EnvironmentVariablesQuery");
11
+ const log_1 = tslib_1.__importDefault(require("../../log"));
12
+ const projectUtils_1 = require("../../project/projectUtils");
13
+ const prompts_1 = require("../../prompts");
14
+ const prompts_2 = require("../../utils/prompts");
15
+ class EnvironmentVariableLink extends EasCommand_1.default {
16
+ async runAsync() {
17
+ let { flags: { name, 'non-interactive': nonInteractive, environment }, } = await this.parse(_a);
18
+ const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
19
+ nonInteractive,
20
+ });
21
+ const projectDisplayName = await (0, projectUtils_1.getDisplayNameForProjectIdAsync)(graphqlClient, projectId);
22
+ const variables = await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.sharedAsync(graphqlClient, {
23
+ appId: projectId,
24
+ });
25
+ if (!name) {
26
+ name = await (0, prompts_1.selectAsync)('Select shared variable', variables.map(variable => ({
27
+ title: variable.name,
28
+ value: variable.name,
29
+ })));
30
+ }
31
+ const selectedVariable = variables.find(variable => variable.name === name);
32
+ if (!selectedVariable) {
33
+ throw new Error(`Shared variable ${name} doesn't exist`);
34
+ }
35
+ if (!environment) {
36
+ environment = await (0, prompts_2.promptVariableEnvironmentAsync)(nonInteractive);
37
+ }
38
+ const linkedVariable = await EnvironmentVariableMutation_1.EnvironmentVariableMutation.linkSharedEnvironmentVariableAsync(graphqlClient, selectedVariable.id, projectId, environment);
39
+ if (!linkedVariable) {
40
+ throw new Error(`Could not link variable with name ${selectedVariable.name} to project with id ${projectId}`);
41
+ }
42
+ log_1.default.withTick(`Linked variable ${chalk_1.default.bold(linkedVariable.name)} to project ${chalk_1.default.bold(projectDisplayName)}.`);
43
+ }
44
+ }
45
+ _a = EnvironmentVariableLink;
46
+ EnvironmentVariableLink.description = 'link a shared environment variable to the current project';
47
+ EnvironmentVariableLink.hidden = true;
48
+ EnvironmentVariableLink.flags = {
49
+ name: core_1.Flags.string({
50
+ description: 'Name of the variable',
51
+ }),
52
+ ...flags_1.EASEnvironmentFlag,
53
+ ...flags_1.EASNonInteractiveFlag,
54
+ };
55
+ EnvironmentVariableLink.contextDefinition = {
56
+ ..._a.ContextOptions.ProjectConfig,
57
+ ..._a.ContextOptions.LoggedIn,
58
+ };
59
+ exports.default = EnvironmentVariableLink;
@@ -0,0 +1,18 @@
1
+ import EasCommand from '../../commandUtils/EasCommand';
2
+ import { EnvironmentVariableEnvironment, EnvironmentVariableScope } from '../../graphql/generated';
3
+ export default class EnvironmentValueList extends EasCommand {
4
+ static description: string;
5
+ static hidden: boolean;
6
+ static contextDefinition: {
7
+ loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
8
+ privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
9
+ };
10
+ static flags: {
11
+ environment: import("@oclif/core/lib/interfaces").OptionFlag<EnvironmentVariableEnvironment | undefined>;
12
+ scope: import("@oclif/core/lib/interfaces").OptionFlag<EnvironmentVariableScope>;
13
+ format: import("@oclif/core/lib/interfaces").OptionFlag<string>;
14
+ 'include-sensitive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
15
+ };
16
+ runAsync(): Promise<void>;
17
+ private getVariablesForScopeAsync;
18
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ const chalk_1 = tslib_1.__importDefault(require("chalk"));
7
+ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
8
+ const flags_1 = require("../../commandUtils/flags");
9
+ const generated_1 = require("../../graphql/generated");
10
+ const EnvironmentVariablesQuery_1 = require("../../graphql/queries/EnvironmentVariablesQuery");
11
+ const log_1 = tslib_1.__importDefault(require("../../log"));
12
+ const formatVariable_1 = require("../../utils/formatVariable");
13
+ const prompts_1 = require("../../utils/prompts");
14
+ class EnvironmentValueList extends EasCommand_1.default {
15
+ async runAsync() {
16
+ let { flags: { environment, format, scope, 'include-sensitive': includeSensitive }, } = await this.parse(_a);
17
+ const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
18
+ nonInteractive: true,
19
+ });
20
+ if (scope === generated_1.EnvironmentVariableScope.Project && !environment) {
21
+ environment = await (0, prompts_1.promptVariableEnvironmentAsync)(false);
22
+ }
23
+ const variables = await this.getVariablesForScopeAsync(graphqlClient, {
24
+ scope,
25
+ includingSensitive: includeSensitive,
26
+ environment,
27
+ projectId,
28
+ });
29
+ if (format === 'short') {
30
+ for (const variable of variables) {
31
+ // TODO: Add Learn more link
32
+ log_1.default.log(`${chalk_1.default.bold(variable.name)}=${variable.value ??
33
+ "***** (This is a secret env variable that can only be accessed on EAS builder and can't be read in any UI. Learn more.)"}`);
34
+ }
35
+ }
36
+ else {
37
+ if (scope === generated_1.EnvironmentVariableScope.Shared) {
38
+ log_1.default.log(chalk_1.default.bold('Shared variables for this account:'));
39
+ }
40
+ else {
41
+ log_1.default.log(chalk_1.default.bold(`Variables for this project for environment ${environment}:`));
42
+ }
43
+ log_1.default.log(variables.map(variable => (0, formatVariable_1.formatVariable)(variable)).join(`\n\n${chalk_1.default.dim('———')}\n\n`));
44
+ }
45
+ }
46
+ async getVariablesForScopeAsync(graphqlClient, { scope, includingSensitive, environment, projectId, }) {
47
+ if (scope === generated_1.EnvironmentVariableScope.Project && environment) {
48
+ if (includingSensitive) {
49
+ return await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.byAppIdWithSensitiveAsync(graphqlClient, {
50
+ appId: projectId,
51
+ environment,
52
+ });
53
+ }
54
+ return await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.byAppIdAsync(graphqlClient, {
55
+ appId: projectId,
56
+ environment,
57
+ });
58
+ }
59
+ return includingSensitive
60
+ ? await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.sharedWithSensitiveAsync(graphqlClient, {
61
+ appId: projectId,
62
+ })
63
+ : await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.sharedAsync(graphqlClient, { appId: projectId });
64
+ }
65
+ }
66
+ _a = EnvironmentValueList;
67
+ EnvironmentValueList.description = 'list environment variables for the current project';
68
+ EnvironmentValueList.hidden = true;
69
+ EnvironmentValueList.contextDefinition = {
70
+ ..._a.ContextOptions.ProjectConfig,
71
+ ..._a.ContextOptions.LoggedIn,
72
+ };
73
+ EnvironmentValueList.flags = {
74
+ 'include-sensitive': core_1.Flags.boolean({
75
+ description: 'Display sensitive values in the output',
76
+ default: false,
77
+ }),
78
+ ...flags_1.EASVariableFormatFlag,
79
+ ...flags_1.EASVariableScopeFlag,
80
+ ...flags_1.EASEnvironmentFlag,
81
+ };
82
+ exports.default = EnvironmentValueList;
@@ -0,0 +1,15 @@
1
+ import EasCommand from '../../commandUtils/EasCommand';
2
+ export default class EnvironmentValuePull extends EasCommand {
3
+ static description: string;
4
+ static hidden: boolean;
5
+ static contextDefinition: {
6
+ loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
7
+ privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
8
+ };
9
+ static flags: {
10
+ path: import("@oclif/core/lib/interfaces").OptionFlag<string>;
11
+ 'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
12
+ environment: import("@oclif/core/lib/interfaces").OptionFlag<import("../../graphql/generated").EnvironmentVariableEnvironment | undefined>;
13
+ };
14
+ runAsync(): Promise<void>;
15
+ }
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ const fs = tslib_1.__importStar(require("fs-extra"));
7
+ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
8
+ const flags_1 = require("../../commandUtils/flags");
9
+ const EnvironmentVariablesQuery_1 = require("../../graphql/queries/EnvironmentVariablesQuery");
10
+ const log_1 = tslib_1.__importDefault(require("../../log"));
11
+ const prompts_1 = require("../../prompts");
12
+ const prompts_2 = require("../../utils/prompts");
13
+ class EnvironmentValuePull extends EasCommand_1.default {
14
+ async runAsync() {
15
+ let { flags: { environment, path: targetPath, 'non-interactive': nonInteractive }, } = await this.parse(_a);
16
+ if (!environment) {
17
+ environment = await (0, prompts_2.promptVariableEnvironmentAsync)(nonInteractive);
18
+ }
19
+ const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
20
+ nonInteractive,
21
+ });
22
+ targetPath = targetPath ?? '.env.local';
23
+ const environmentVariables = await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.byAppIdWithSensitiveAsync(graphqlClient, {
24
+ appId: projectId,
25
+ environment,
26
+ });
27
+ if (!nonInteractive && (await fs.exists(targetPath))) {
28
+ const result = await (0, prompts_1.confirmAsync)({
29
+ message: `File ${targetPath} already exists. Do you want to overwrite it?`,
30
+ });
31
+ if (!result) {
32
+ log_1.default.log('Aborting...');
33
+ throw new Error(`File ${targetPath} already exists.`);
34
+ }
35
+ }
36
+ const filePrefix = `# Environment: ${environment}\n\n`;
37
+ const envFileContent = environmentVariables
38
+ .map((variable) => {
39
+ if (variable.value === null) {
40
+ return `# ${variable.name}=***** (secret variables are not available for reading)`;
41
+ }
42
+ return `${variable.name}=${variable.value}`;
43
+ })
44
+ .join('\n');
45
+ await fs.writeFile(targetPath, filePrefix + envFileContent);
46
+ log_1.default.log(`Pulled environment variables from ${environment} environment to ${targetPath}.`);
47
+ }
48
+ }
49
+ _a = EnvironmentValuePull;
50
+ EnvironmentValuePull.description = 'pull env file';
51
+ EnvironmentValuePull.hidden = true;
52
+ EnvironmentValuePull.contextDefinition = {
53
+ ..._a.ContextOptions.ProjectConfig,
54
+ ..._a.ContextOptions.LoggedIn,
55
+ };
56
+ EnvironmentValuePull.flags = {
57
+ ...flags_1.EASEnvironmentFlag,
58
+ ...flags_1.EASNonInteractiveFlag,
59
+ path: core_1.Flags.string({
60
+ description: 'Path to the result `.env` file',
61
+ default: '.env.local',
62
+ }),
63
+ };
64
+ exports.default = EnvironmentValuePull;
@@ -0,0 +1,17 @@
1
+ import EasCommand from '../../commandUtils/EasCommand';
2
+ import { EnvironmentVariableEnvironment } from '../../graphql/generated';
3
+ export default class EnvironmentVariablePush extends EasCommand {
4
+ static description: string;
5
+ static hidden: boolean;
6
+ static contextDefinition: {
7
+ loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
8
+ privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
9
+ };
10
+ static flags: {
11
+ path: import("@oclif/core/lib/interfaces").OptionFlag<string>;
12
+ environment: import("@oclif/core/lib/interfaces").OptionFlag<EnvironmentVariableEnvironment | undefined>;
13
+ };
14
+ runAsync(): Promise<void>;
15
+ private parseEnvFileAsync;
16
+ private validateFlags;
17
+ }
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const tslib_1 = require("tslib");
5
+ const core_1 = require("@oclif/core");
6
+ const dotenv_1 = tslib_1.__importDefault(require("dotenv"));
7
+ const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
8
+ const EasCommand_1 = tslib_1.__importDefault(require("../../commandUtils/EasCommand"));
9
+ const flags_1 = require("../../commandUtils/flags");
10
+ const generated_1 = require("../../graphql/generated");
11
+ const EnvironmentVariableMutation_1 = require("../../graphql/mutations/EnvironmentVariableMutation");
12
+ const EnvironmentVariablesQuery_1 = require("../../graphql/queries/EnvironmentVariablesQuery");
13
+ const log_1 = tslib_1.__importDefault(require("../../log"));
14
+ const prompts_1 = require("../../prompts");
15
+ class EnvironmentVariablePush extends EasCommand_1.default {
16
+ async runAsync() {
17
+ const { flags } = await this.parse(_a);
18
+ const { environment, path: envPath } = this.validateFlags(flags);
19
+ const { privateProjectConfig: { projectId }, loggedIn: { graphqlClient }, } = await this.getContextAsync(_a, {
20
+ nonInteractive: false,
21
+ });
22
+ const updateVariables = await this.parseEnvFileAsync(envPath, environment);
23
+ const variableNames = Object.keys(updateVariables);
24
+ const existingVariables = await EnvironmentVariablesQuery_1.EnvironmentVariablesQuery.byAppIdAsync(graphqlClient, {
25
+ appId: projectId,
26
+ environment,
27
+ filterNames: variableNames,
28
+ });
29
+ const existingDifferentVariables = [];
30
+ // Remove variables that are the same as the ones in the environment
31
+ existingVariables.forEach(variable => {
32
+ const existingVariableUpdate = updateVariables[variable.name];
33
+ if (existingVariableUpdate && existingVariableUpdate.value !== variable.value) {
34
+ existingDifferentVariables.push(variable);
35
+ }
36
+ else {
37
+ delete updateVariables[variable.name];
38
+ }
39
+ });
40
+ const existingDifferentSharedVariables = existingDifferentVariables.filter(variable => variable.scope === generated_1.EnvironmentVariableScope.Shared);
41
+ if (existingDifferentSharedVariables.length > 0) {
42
+ const existingDifferentSharedVariablesNames = existingDifferentSharedVariables.map(variable => variable.name);
43
+ log_1.default.error('Shared variables cannot be overwritten by eas env:push command.');
44
+ log_1.default.error('Remove them from the env file or unlink them from the project to continue:');
45
+ existingDifferentSharedVariablesNames.forEach(name => {
46
+ log_1.default.error(`- ${name}`);
47
+ });
48
+ throw new Error('Shared variables cannot be overwritten by eas env:push command');
49
+ }
50
+ if (existingDifferentVariables.length > 0) {
51
+ log_1.default.warn('Some variables already exist in the environment.');
52
+ const variableNames = existingDifferentVariables.map(variable => variable.name);
53
+ const confirmationMessage = variableNames.length > 1
54
+ ? `The ${variableNames.join(', ')} environment variables already exist in ${environment} environment. Do you want to override them all?`
55
+ : `The ${variableNames[0]} environment variable already exists in ${environment} environment. Do you want to override it?`;
56
+ const confirm = await (0, prompts_1.confirmAsync)({
57
+ message: confirmationMessage,
58
+ });
59
+ let variablesToOverwrite = [];
60
+ if (!confirm && existingDifferentVariables.length === 1) {
61
+ throw new Error('No new variables to push.');
62
+ }
63
+ if (confirm) {
64
+ variablesToOverwrite = existingDifferentVariables.map(variable => variable.name);
65
+ }
66
+ else {
67
+ const promptResult = await (0, prompts_1.promptAsync)({
68
+ type: 'multiselect',
69
+ name: 'variablesToOverwrite',
70
+ message: 'Select variables to overwrite:',
71
+ // @ts-expect-error property missing from `@types/prompts`
72
+ optionsPerPage: 20,
73
+ choices: existingDifferentVariables.map(variable => ({
74
+ title: `${variable.name}: ${updateVariables[variable.name].value} (was ${variable.value ?? '(secret)'})`,
75
+ value: variable.name,
76
+ })),
77
+ });
78
+ variablesToOverwrite = promptResult.variablesToOverwrite;
79
+ }
80
+ for (const existingVariable of existingVariables) {
81
+ const name = existingVariable.name;
82
+ if (variablesToOverwrite.includes(name)) {
83
+ updateVariables[name]['overwrite'] = true;
84
+ }
85
+ else {
86
+ delete updateVariables[name];
87
+ }
88
+ }
89
+ }
90
+ // Check if any of the sensitive variables already exist in the environment. Prompt the user to overwrite them.
91
+ const existingSensitiveVariables = existingVariables.filter(variable => variable.value === null);
92
+ if (existingSensitiveVariables.length > 0) {
93
+ const existingSensitiveVariablesNames = existingSensitiveVariables.map(variable => `- ${variable.name}`);
94
+ const confirm = await (0, prompts_1.confirmAsync)({
95
+ message: `You are about to overwrite sensitive variables.\n${existingSensitiveVariablesNames.join('\n')}\n Do you want to continue?`,
96
+ });
97
+ if (!confirm) {
98
+ throw new Error('Aborting...');
99
+ }
100
+ }
101
+ const variablesToPush = Object.values(updateVariables);
102
+ if (variablesToPush.length === 0) {
103
+ log_1.default.log('No new variables to push.');
104
+ return;
105
+ }
106
+ await EnvironmentVariableMutation_1.EnvironmentVariableMutation.createBulkEnvironmentVariablesForAppAsync(graphqlClient, variablesToPush, projectId);
107
+ log_1.default.log(`Uploaded env file to ${environment} environment.`);
108
+ }
109
+ async parseEnvFileAsync(envPath, environment) {
110
+ if (!(await fs_extra_1.default.exists(envPath))) {
111
+ throw new Error(`File ${envPath} does not exist.`);
112
+ }
113
+ const pushInput = {};
114
+ const variables = dotenv_1.default.parse(await fs_extra_1.default.readFile(envPath, 'utf8'));
115
+ for (const [name, value] of Object.entries(variables)) {
116
+ pushInput[name] = {
117
+ name,
118
+ value,
119
+ environment,
120
+ visibility: name.startsWith('EXPO_SENSITIVE')
121
+ ? generated_1.EnvironmentVariableVisibility.Sensitive
122
+ : generated_1.EnvironmentVariableVisibility.Public,
123
+ };
124
+ }
125
+ return pushInput;
126
+ }
127
+ validateFlags(flags) {
128
+ if (!flags.environment) {
129
+ throw new Error('Please provide an environment to push the env file to.');
130
+ }
131
+ return { ...flags, environment: flags.environment };
132
+ }
133
+ }
134
+ _a = EnvironmentVariablePush;
135
+ EnvironmentVariablePush.description = 'push env file';
136
+ EnvironmentVariablePush.hidden = true;
137
+ EnvironmentVariablePush.contextDefinition = {
138
+ ..._a.ContextOptions.ProjectConfig,
139
+ ..._a.ContextOptions.LoggedIn,
140
+ };
141
+ EnvironmentVariablePush.flags = {
142
+ ...flags_1.EASEnvironmentFlag,
143
+ path: core_1.Flags.string({
144
+ description: 'Path to the input `.env` file',
145
+ default: '.env.local',
146
+ }),
147
+ };
148
+ exports.default = EnvironmentVariablePush;
@@ -0,0 +1,15 @@
1
+ import EasCommand from '../../commandUtils/EasCommand';
2
+ export default class EnvironmentVariableUnlink extends EasCommand {
3
+ static description: string;
4
+ static hidden: boolean;
5
+ static flags: {
6
+ 'non-interactive': import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
7
+ environment: import("@oclif/core/lib/interfaces").OptionFlag<import("../../graphql/generated").EnvironmentVariableEnvironment | undefined>;
8
+ name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined>;
9
+ };
10
+ static contextDefinition: {
11
+ loggedIn: import("../../commandUtils/context/LoggedInContextField").default;
12
+ privateProjectConfig: import("../../commandUtils/context/PrivateProjectConfigContextField").PrivateProjectConfigContextField;
13
+ };
14
+ runAsync(): Promise<void>;
15
+ }