@forge/cli 6.11.1-next.0 → 6.12.0-next.13
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/CHANGELOG.md +158 -0
- package/npm-shrinkwrap.json +283 -280
- package/out/command-line/command.d.ts +3 -1
- package/out/command-line/command.d.ts.map +1 -1
- package/out/command-line/command.js +10 -8
- package/out/command-line/controller/default-environment-controller.d.ts +28 -0
- package/out/command-line/controller/default-environment-controller.d.ts.map +1 -0
- package/out/command-line/controller/default-environment-controller.js +106 -0
- package/out/command-line/controller/deploy-controller.d.ts +7 -2
- package/out/command-line/controller/deploy-controller.d.ts.map +1 -1
- package/out/command-line/controller/deploy-controller.js +29 -4
- package/out/command-line/controller/settings-controller.d.ts +1 -0
- package/out/command-line/controller/settings-controller.d.ts.map +1 -1
- package/out/command-line/controller/settings-controller.js +3 -2
- package/out/command-line/dependency-injection.d.ts +4 -1
- package/out/command-line/dependency-injection.d.ts.map +1 -1
- package/out/command-line/dependency-injection.js +8 -3
- package/out/command-line/errors.d.ts +5 -0
- package/out/command-line/errors.d.ts.map +1 -1
- package/out/command-line/errors.js +11 -1
- package/out/command-line/register-lint-command.js +1 -1
- package/out/command-line/utils.d.ts +4 -0
- package/out/command-line/utils.d.ts.map +1 -0
- package/out/command-line/utils.js +30 -0
- package/out/command-line/view/deploy-view.d.ts +3 -0
- package/out/command-line/view/deploy-view.d.ts.map +1 -1
- package/out/command-line/view/deploy-view.js +14 -0
- package/package.json +12 -11
|
@@ -5,6 +5,7 @@ import { Logger, CLIDetails, CredentialGetter, PersonalApiCredentialsValidated }
|
|
|
5
5
|
import { PreCommandController } from './controller/pre-command-controller';
|
|
6
6
|
import * as autocomplete from '../autocomplete/types';
|
|
7
7
|
import { StubController } from './controller/stubController';
|
|
8
|
+
import { DefaultEnvironmentController } from './controller/default-environment-controller';
|
|
8
9
|
declare type ActionResult = Promise<{
|
|
9
10
|
creds?: PersonalApiCredentialsValidated;
|
|
10
11
|
analytics: any;
|
|
@@ -43,6 +44,7 @@ export declare class Command<Args extends AnyArgs = [], Opts extends AnyOpts = D
|
|
|
43
44
|
private readonly preCommandController;
|
|
44
45
|
private readonly cliDetails;
|
|
45
46
|
private readonly credentialStore;
|
|
47
|
+
private readonly defaultEnvironmentController;
|
|
46
48
|
get verbose(): boolean;
|
|
47
49
|
private static isError;
|
|
48
50
|
private static isHelpTriggered;
|
|
@@ -56,7 +58,7 @@ export declare class Command<Args extends AnyArgs = [], Opts extends AnyOpts = D
|
|
|
56
58
|
private readonly requiresAnalyticsConsent;
|
|
57
59
|
private readonly requiredOptionFlags;
|
|
58
60
|
private readonly preconditionFn;
|
|
59
|
-
static program(ui: Logger, analyticsClient: AnalyticsClientReporter, preCommandController: PreCommandController, cliDetails: CLIDetails | undefined, credentialStore: CredentialGetter): Command<[], DefaultOpts>;
|
|
61
|
+
static program(ui: Logger, analyticsClient: AnalyticsClientReporter, preCommandController: PreCommandController, cliDetails: CLIDetails | undefined, credentialStore: CredentialGetter, defaultEnvironmentController: DefaultEnvironmentController): Command<[], DefaultOpts>;
|
|
60
62
|
private constructor();
|
|
61
63
|
private clone;
|
|
62
64
|
version(str: string, flags?: string): Command<Args, Opts>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/command-line/command.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,cAAc,EAAU,MAAM,WAAW,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAEL,MAAM,EAGN,UAAU,EAEV,gBAAgB,EAChB,+BAA+B,
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/command-line/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,12 +26,13 @@ function last(arg) {
|
|
|
26
26
|
return arg[arg.length - 1];
|
|
27
27
|
}
|
|
28
28
|
class Command {
|
|
29
|
-
constructor(ui, analyticsClient, preCommandController, cliDetails, credentialStore, { cmd, analyticsName, requiresAuthentication, requiresAnalyticsConsent, requiredOptionFlags, preconditionFn }) {
|
|
29
|
+
constructor(ui, analyticsClient, preCommandController, cliDetails, credentialStore, defaultEnvironmentController, { cmd, analyticsName, requiresAuthentication, requiresAnalyticsConsent, requiredOptionFlags, preconditionFn }) {
|
|
30
30
|
this.ui = ui;
|
|
31
31
|
this.analyticsClient = analyticsClient;
|
|
32
32
|
this.preCommandController = preCommandController;
|
|
33
33
|
this.cliDetails = cliDetails;
|
|
34
34
|
this.credentialStore = credentialStore;
|
|
35
|
+
this.defaultEnvironmentController = defaultEnvironmentController;
|
|
35
36
|
this.requiredOptionFlags = [];
|
|
36
37
|
this.preconditionFn = [];
|
|
37
38
|
this.actionProcessor = async (cb, ...args) => {
|
|
@@ -133,13 +134,13 @@ class Command {
|
|
|
133
134
|
get verbose() {
|
|
134
135
|
return this.cmd.opts().verbose;
|
|
135
136
|
}
|
|
136
|
-
static program(ui, analyticsClient, preCommandController, cliDetails, credentialStore) {
|
|
137
|
+
static program(ui, analyticsClient, preCommandController, cliDetails, credentialStore, defaultEnvironmentController) {
|
|
137
138
|
var _a;
|
|
138
|
-
const cmd = new Command(ui, analyticsClient, preCommandController, cliDetails, credentialStore, {});
|
|
139
|
+
const cmd = new Command(ui, analyticsClient, preCommandController, cliDetails, credentialStore, defaultEnvironmentController, {});
|
|
139
140
|
return cmd.version((_a = cliDetails === null || cliDetails === void 0 ? void 0 : cliDetails.version) !== null && _a !== void 0 ? _a : 'unknown', '--version').option('--verbose', cli_shared_1.Text.optionVerbose);
|
|
140
141
|
}
|
|
141
142
|
clone(overrides) {
|
|
142
|
-
return new Command(this.ui, this.analyticsClient, this.preCommandController, this.cliDetails, this.credentialStore, Object.assign({ cmd: this.cmd, analyticsName: this.analyticsName, requiresAuthentication: this.requiresAuthentication, requiresAnalyticsConsent: this.requiresAnalyticsConsent, requiredOptionFlags: this.requiredOptionFlags, preconditionFn: this.preconditionFn }, overrides));
|
|
143
|
+
return new Command(this.ui, this.analyticsClient, this.preCommandController, this.cliDetails, this.credentialStore, this.defaultEnvironmentController, Object.assign({ cmd: this.cmd, analyticsName: this.analyticsName, requiresAuthentication: this.requiresAuthentication, requiresAnalyticsConsent: this.requiresAnalyticsConsent, requiredOptionFlags: this.requiredOptionFlags, preconditionFn: this.preconditionFn }, overrides));
|
|
143
144
|
}
|
|
144
145
|
version(str, flags) {
|
|
145
146
|
this.cmd.version(str, flags);
|
|
@@ -150,7 +151,7 @@ class Command {
|
|
|
150
151
|
.command(name, opts)
|
|
151
152
|
.allowUnknownOption(false)
|
|
152
153
|
.allowExcessArguments(false);
|
|
153
|
-
const subCommand = new Command(this.ui, this.analyticsClient, this.preCommandController, this.cliDetails, this.credentialStore, {
|
|
154
|
+
const subCommand = new Command(this.ui, this.analyticsClient, this.preCommandController, this.cliDetails, this.credentialStore, this.defaultEnvironmentController, {
|
|
154
155
|
cmd,
|
|
155
156
|
analyticsName: Command.concatenateNames(this.analyticsName, cmd.name())
|
|
156
157
|
}).option('--verbose', cli_shared_1.Text.optionVerbose);
|
|
@@ -212,9 +213,10 @@ class Command {
|
|
|
212
213
|
}
|
|
213
214
|
}
|
|
214
215
|
environmentOption() {
|
|
215
|
-
return this.option('-e, --environment [environment]', cli_shared_1.Text.env.option
|
|
216
|
-
const environment =
|
|
217
|
-
|
|
216
|
+
return this.option('-e, --environment [environment]', cli_shared_1.Text.env.option).precondition(async (...args) => {
|
|
217
|
+
const { environment: environmentArg, nonInteractive } = last(args);
|
|
218
|
+
const environment = environmentArg || (await this.defaultEnvironmentController.run(nonInteractive));
|
|
219
|
+
return { environment: (0, environment_1.checkEnvironmentOption)(environment) };
|
|
218
220
|
});
|
|
219
221
|
}
|
|
220
222
|
jsonOption() {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AppConfigProvider, CredentialStore, FeatureFlagService, GetAppOwnerQuery, LoginCommand, UI } from '@forge/cli-shared';
|
|
2
|
+
import { CreateEnvironmentCommand } from '../../environment/create-environment';
|
|
3
|
+
import { ListEnvironmentCommand } from '../../environment/list-environment';
|
|
4
|
+
import { CachedConfigService } from '../../service/cached-config-service';
|
|
5
|
+
export declare class DefaultEnvironmentNotSetError extends Error {
|
|
6
|
+
constructor();
|
|
7
|
+
}
|
|
8
|
+
export declare class DefaultEnvironmentController {
|
|
9
|
+
private ui;
|
|
10
|
+
private readonly credentialStore;
|
|
11
|
+
private readonly featureFlagService;
|
|
12
|
+
private readonly cachedConfigService;
|
|
13
|
+
private readonly getAppConfig;
|
|
14
|
+
private readonly loginCommand;
|
|
15
|
+
private readonly createEnvironmentCommand;
|
|
16
|
+
private readonly listEnvironmentCommand;
|
|
17
|
+
private readonly getAppOwnerQuery;
|
|
18
|
+
constructor(ui: UI, credentialStore: CredentialStore, featureFlagService: FeatureFlagService, cachedConfigService: CachedConfigService, getAppConfig: AppConfigProvider, loginCommand: LoginCommand, createEnvironmentCommand: CreateEnvironmentCommand, listEnvironmentCommand: ListEnvironmentCommand, getAppOwnerQuery: GetAppOwnerQuery);
|
|
19
|
+
run(nonInteractive?: boolean): Promise<string>;
|
|
20
|
+
getDefaultEnvironment(): Promise<string | undefined>;
|
|
21
|
+
private promptAndSetDefaultEnvironmentForContributor;
|
|
22
|
+
private promptAndSetDefaultEnvironment;
|
|
23
|
+
private environmentExists;
|
|
24
|
+
private setExistingEnvironmentAsDefault;
|
|
25
|
+
private createAndSetDefaultEnvironment;
|
|
26
|
+
private setDefaultEnvironment;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=default-environment-controller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-environment-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/default-environment-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,eAAe,EAEf,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EAEZ,EAAE,EAGH,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAI1E,qBAAa,6BAA8B,SAAQ,KAAK;;CAIvD;AAED,qBAAa,4BAA4B;IAErC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,wBAAwB;IACzC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBARzB,EAAE,EAAE,EAAE,EACG,eAAe,EAAE,eAAe,EAChC,kBAAkB,EAAE,kBAAkB,EACtC,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,iBAAiB,EAC/B,YAAY,EAAE,YAAY,EAC1B,wBAAwB,EAAE,wBAAwB,EAClD,sBAAsB,EAAE,sBAAsB,EAC9C,gBAAgB,EAAE,gBAAgB;IAGxC,GAAG,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAyB9C,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;YAgBnD,4CAA4C;YAO5C,8BAA8B;YAgB9B,iBAAiB;YAKjB,+BAA+B;YAoB/B,8BAA8B;YAY9B,qBAAqB;CAKpC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DefaultEnvironmentController = exports.DefaultEnvironmentNotSetError = void 0;
|
|
4
|
+
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
|
+
const environment_1 = require("../environment");
|
|
6
|
+
const manifest_1 = require("@forge/manifest");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
class DefaultEnvironmentNotSetError extends Error {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(cli_shared_1.Text.defaultEnv.info);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
exports.DefaultEnvironmentNotSetError = DefaultEnvironmentNotSetError;
|
|
14
|
+
class DefaultEnvironmentController {
|
|
15
|
+
constructor(ui, credentialStore, featureFlagService, cachedConfigService, getAppConfig, loginCommand, createEnvironmentCommand, listEnvironmentCommand, getAppOwnerQuery) {
|
|
16
|
+
this.ui = ui;
|
|
17
|
+
this.credentialStore = credentialStore;
|
|
18
|
+
this.featureFlagService = featureFlagService;
|
|
19
|
+
this.cachedConfigService = cachedConfigService;
|
|
20
|
+
this.getAppConfig = getAppConfig;
|
|
21
|
+
this.loginCommand = loginCommand;
|
|
22
|
+
this.createEnvironmentCommand = createEnvironmentCommand;
|
|
23
|
+
this.listEnvironmentCommand = listEnvironmentCommand;
|
|
24
|
+
this.getAppOwnerQuery = getAppOwnerQuery;
|
|
25
|
+
}
|
|
26
|
+
async run(nonInteractive) {
|
|
27
|
+
const defaultEnvironment = await this.getDefaultEnvironment();
|
|
28
|
+
if (defaultEnvironment) {
|
|
29
|
+
return defaultEnvironment;
|
|
30
|
+
}
|
|
31
|
+
const credentials = await this.credentialStore.getCredentials();
|
|
32
|
+
const [currentUser, owner] = await Promise.all([
|
|
33
|
+
this.loginCommand.getUser(credentials),
|
|
34
|
+
this.getAppOwnerQuery.execute()
|
|
35
|
+
]);
|
|
36
|
+
if (owner.accountId === currentUser.accountId) {
|
|
37
|
+
return this.setDefaultEnvironment(cli_shared_1.DEFAULT_ENVIRONMENT_KEY);
|
|
38
|
+
}
|
|
39
|
+
if (nonInteractive) {
|
|
40
|
+
throw new DefaultEnvironmentNotSetError();
|
|
41
|
+
}
|
|
42
|
+
return this.promptAndSetDefaultEnvironmentForContributor(currentUser.name);
|
|
43
|
+
}
|
|
44
|
+
async getDefaultEnvironment() {
|
|
45
|
+
try {
|
|
46
|
+
const concurrentDevEnabled = await this.featureFlagService.isConcurrentDevEnabled();
|
|
47
|
+
if (!concurrentDevEnabled) {
|
|
48
|
+
return cli_shared_1.DEFAULT_ENVIRONMENT_KEY;
|
|
49
|
+
}
|
|
50
|
+
const { id: appId } = await this.getAppConfig();
|
|
51
|
+
return this.cachedConfigService.getDefaultEnvironment(appId);
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
if (e instanceof cli_shared_1.ValidationError && e.message === cli_shared_1.Text.artifact.error.invalidYaml(manifest_1.MANIFEST_FILE)) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
throw e;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async promptAndSetDefaultEnvironmentForContributor(contributorName) {
|
|
61
|
+
this.ui.info(cli_shared_1.Text.defaultEnv.info);
|
|
62
|
+
this.ui.emptyLine();
|
|
63
|
+
return this.promptAndSetDefaultEnvironment(contributorName);
|
|
64
|
+
}
|
|
65
|
+
async promptAndSetDefaultEnvironment(contributorName) {
|
|
66
|
+
const suggestedName = (0, utils_1.getAcceptableSlug)(contributorName);
|
|
67
|
+
let newEnvironmentKey = await this.ui.promptForText(cli_shared_1.Text.defaultEnv.prompt, suggestedName);
|
|
68
|
+
this.ui.emptyLine();
|
|
69
|
+
(0, environment_1.validateDevEnvironment)(newEnvironmentKey);
|
|
70
|
+
newEnvironmentKey = (0, environment_1.checkEnvironmentOption)(newEnvironmentKey);
|
|
71
|
+
if (await this.environmentExists(newEnvironmentKey)) {
|
|
72
|
+
return this.setExistingEnvironmentAsDefault(contributorName, newEnvironmentKey);
|
|
73
|
+
}
|
|
74
|
+
return this.createAndSetDefaultEnvironment(newEnvironmentKey);
|
|
75
|
+
}
|
|
76
|
+
async environmentExists(environmentKey) {
|
|
77
|
+
const environments = await this.listEnvironmentCommand.execute();
|
|
78
|
+
return environments.some((environment) => environmentKey === environment.key);
|
|
79
|
+
}
|
|
80
|
+
async setExistingEnvironmentAsDefault(contributorName, environmentKey) {
|
|
81
|
+
this.ui.warn(cli_shared_1.Text.defaultEnv.warn);
|
|
82
|
+
this.ui.emptyLine();
|
|
83
|
+
const confirm = await this.ui.confirm(cli_shared_1.Text.defaultEnv.confirm);
|
|
84
|
+
this.ui.emptyLine();
|
|
85
|
+
if (confirm) {
|
|
86
|
+
await this.setDefaultEnvironment(environmentKey);
|
|
87
|
+
this.ui.info(cli_shared_1.Text.defaultEnv.setSuccess(environmentKey, cli_shared_1.AppEnvironmentType.Development, cli_shared_1.environmentToOption));
|
|
88
|
+
this.ui.emptyLine();
|
|
89
|
+
return environmentKey;
|
|
90
|
+
}
|
|
91
|
+
return this.promptAndSetDefaultEnvironment(contributorName);
|
|
92
|
+
}
|
|
93
|
+
async createAndSetDefaultEnvironment(environmentKey) {
|
|
94
|
+
await this.createEnvironmentCommand.execute({ environmentKey });
|
|
95
|
+
await this.setDefaultEnvironment(environmentKey);
|
|
96
|
+
this.ui.info(cli_shared_1.Text.defaultEnv.createAndSetSuccess(environmentKey, cli_shared_1.AppEnvironmentType.Development, cli_shared_1.environmentToOption));
|
|
97
|
+
this.ui.emptyLine();
|
|
98
|
+
return environmentKey;
|
|
99
|
+
}
|
|
100
|
+
async setDefaultEnvironment(environmentKey) {
|
|
101
|
+
const { id: appId } = await this.getAppConfig();
|
|
102
|
+
this.cachedConfigService.setDefaultEnvironment(appId, environmentKey);
|
|
103
|
+
return environmentKey;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.DefaultEnvironmentController = DefaultEnvironmentController;
|
|
@@ -5,9 +5,11 @@ import { InstallationService } from '../../service/installation-service';
|
|
|
5
5
|
import { MigrationKeysService } from '../../service/migration-keys-service';
|
|
6
6
|
import { PackageUploadDeployCommand } from '../../deploy';
|
|
7
7
|
import { DeploymentResult } from '../register-deployment-commands';
|
|
8
|
+
import { CreateEnvironmentCommand } from '../../environment/create-environment';
|
|
8
9
|
interface DeployOptions {
|
|
9
10
|
environment: string;
|
|
10
11
|
verify: boolean;
|
|
12
|
+
nonInteractive?: boolean;
|
|
11
13
|
}
|
|
12
14
|
export declare class DeployLintFailureError extends HiddenError {
|
|
13
15
|
private readonly scopes;
|
|
@@ -30,14 +32,17 @@ export declare class DeployController {
|
|
|
30
32
|
private readonly appEnvironmentClient;
|
|
31
33
|
private readonly deployView;
|
|
32
34
|
private readonly packageUploadDeployCommand;
|
|
33
|
-
|
|
35
|
+
private readonly createEnvironmentCommand;
|
|
36
|
+
constructor(appConfigProvider: AppConfigProvider, configFile: ConfigFile, lintService: LintService, installationsService: InstallationService, migrationKeysService: MigrationKeysService, appEnvironmentClient: AppEnvironmentClient, deployView: DeployView, packageUploadDeployCommand: PackageUploadDeployCommand, createEnvironmentCommand: CreateEnvironmentCommand);
|
|
34
37
|
private isMpacProductionApp;
|
|
35
38
|
private connectKeyDeleted;
|
|
36
39
|
private connectKeyChanged;
|
|
37
40
|
private validateConnectKeyChange;
|
|
38
41
|
private verifyPreDeployment;
|
|
39
42
|
private verifyPostDeployment;
|
|
40
|
-
|
|
43
|
+
private confirmAndCreateEnvironment;
|
|
44
|
+
private getAppEnvironmentDetails;
|
|
45
|
+
run({ environment, verify, nonInteractive }: DeployOptions): Promise<DeploymentResult | void>;
|
|
41
46
|
}
|
|
42
47
|
export {};
|
|
43
48
|
//# sourceMappingURL=deploy-controller.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/deploy-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"deploy-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/deploy-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EAEpB,UAAU,EAEV,WAAW,EAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAA+B,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACzG,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAGhF,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM,EAAE;IAItC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAMpC,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,sBAAuB,SAAQ,WAAW;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,MAAM;IAGpC,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMvC,WAAW,IAAI,OAAO;CAG9B;AAED,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAC3C,OAAO,CAAC,QAAQ,CAAC,wBAAwB;gBARxB,iBAAiB,EAAE,iBAAiB,EACpC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,oBAAoB,EAAE,mBAAmB,EACzC,oBAAoB,EAAE,oBAAoB,EAC1C,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,UAAU,EACtB,0BAA0B,EAAE,0BAA0B,EACtD,wBAAwB,EAAE,wBAAwB;IAGrE,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,iBAAiB;YAGX,wBAAwB;YAwBxB,mBAAmB;YAiBnB,oBAAoB;YAYpB,2BAA2B;YAe3B,wBAAwB;IAkBzB,GAAG,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;CAwD3G"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DeployController = exports.InvalidConnectKeyError = exports.DeployLintFailureError = void 0;
|
|
4
4
|
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
|
+
const errors_1 = require("../errors");
|
|
5
6
|
class DeployLintFailureError extends cli_shared_1.HiddenError {
|
|
6
7
|
constructor(scopes) {
|
|
7
8
|
super();
|
|
@@ -29,7 +30,7 @@ class InvalidConnectKeyError extends cli_shared_1.HiddenError {
|
|
|
29
30
|
}
|
|
30
31
|
exports.InvalidConnectKeyError = InvalidConnectKeyError;
|
|
31
32
|
class DeployController {
|
|
32
|
-
constructor(appConfigProvider, configFile, lintService, installationsService, migrationKeysService, appEnvironmentClient, deployView, packageUploadDeployCommand) {
|
|
33
|
+
constructor(appConfigProvider, configFile, lintService, installationsService, migrationKeysService, appEnvironmentClient, deployView, packageUploadDeployCommand, createEnvironmentCommand) {
|
|
33
34
|
this.appConfigProvider = appConfigProvider;
|
|
34
35
|
this.configFile = configFile;
|
|
35
36
|
this.lintService = lintService;
|
|
@@ -38,6 +39,7 @@ class DeployController {
|
|
|
38
39
|
this.appEnvironmentClient = appEnvironmentClient;
|
|
39
40
|
this.deployView = deployView;
|
|
40
41
|
this.packageUploadDeployCommand = packageUploadDeployCommand;
|
|
42
|
+
this.createEnvironmentCommand = createEnvironmentCommand;
|
|
41
43
|
}
|
|
42
44
|
isMpacProductionApp(mpacAppKey, environment) {
|
|
43
45
|
return !!(mpacAppKey && environment === 'production');
|
|
@@ -96,7 +98,32 @@ class DeployController {
|
|
|
96
98
|
this.deployView.displayIndexingCommand((0, cli_shared_1.environmentToOption)(environment));
|
|
97
99
|
}
|
|
98
100
|
}
|
|
99
|
-
async
|
|
101
|
+
async confirmAndCreateEnvironment(environment, nonInteractive) {
|
|
102
|
+
if (!nonInteractive) {
|
|
103
|
+
this.deployView.displayEnvironmentCreationWarning(environment);
|
|
104
|
+
const confirm = await this.deployView.promptToCreateEnvironment();
|
|
105
|
+
if (!confirm) {
|
|
106
|
+
throw new errors_1.UserAbortError();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
await this.createEnvironmentCommand.execute({ environmentKey: environment });
|
|
110
|
+
this.deployView.displayEnvironmentCreationSuccessMessage(environment);
|
|
111
|
+
}
|
|
112
|
+
async getAppEnvironmentDetails(id, environment, nonInteractive) {
|
|
113
|
+
try {
|
|
114
|
+
return await this.appEnvironmentClient.getAppEnvironmentDetails(id, environment);
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
if (!(e instanceof cli_shared_1.MissingAppEnvironmentError)) {
|
|
118
|
+
throw e;
|
|
119
|
+
}
|
|
120
|
+
await this.confirmAndCreateEnvironment(environment, nonInteractive);
|
|
121
|
+
return this.appEnvironmentClient.getAppEnvironmentDetails(id, environment);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async run({ environment, verify, nonInteractive }) {
|
|
125
|
+
const { id } = await this.appConfigProvider();
|
|
126
|
+
const appDetails = await this.getAppEnvironmentDetails(id, environment, nonInteractive);
|
|
100
127
|
this.deployView.displayStart(environment);
|
|
101
128
|
let hasConnectKeyChanged = false;
|
|
102
129
|
let hasConnectKeyDeleted = false;
|
|
@@ -110,10 +137,8 @@ class DeployController {
|
|
|
110
137
|
hasConnectKeyChanged = connectKeyChanged;
|
|
111
138
|
hasConnectKeyDeleted = connectKeyDeleted;
|
|
112
139
|
}
|
|
113
|
-
const { id } = await this.appConfigProvider();
|
|
114
140
|
const handlers = await this.configFile.getAppHandlers();
|
|
115
141
|
const resources = await this.configFile.getResources();
|
|
116
|
-
const appDetails = await this.appEnvironmentClient.getAppEnvironmentDetails(id, environment);
|
|
117
142
|
let hasProdInstallations = false;
|
|
118
143
|
try {
|
|
119
144
|
const prodInstallations = await this.installationsService.listAppInstallations({
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CachedConfigService } from '../../service/cached-config-service';
|
|
2
2
|
import { SettingsView } from '../view/settings-view';
|
|
3
3
|
import { AppConfigProvider, FeatureFlagService } from '@forge/cli-shared';
|
|
4
|
+
export declare const DEFAULT_ENVIRONMENT_SETTING = "default-environment";
|
|
4
5
|
export declare class SettingsController {
|
|
5
6
|
private readonly settingsView;
|
|
6
7
|
private readonly cachedConfigService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/settings-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAInB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"settings-controller.d.ts","sourceRoot":"","sources":["../../../src/command-line/controller/settings-controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAInB,MAAM,mBAAmB,CAAC;AAK3B,eAAO,MAAM,2BAA2B,wBAAwB,CAAC;AAajE,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAHlB,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB,EACxC,YAAY,EAAE,iBAAiB,EAC/B,kBAAkB,EAAE,kBAAkB;IAGzD,OAAO,CAAC,YAAY,CA6BlB;YAEY,QAAQ;YAKR,mBAAmB;IAKjC,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,gBAAgB;YAIV,UAAU;IAWX,iBAAiB;IAWjB,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO;IAY3B,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAY1D"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SettingsController = void 0;
|
|
3
|
+
exports.SettingsController = exports.DEFAULT_ENVIRONMENT_SETTING = void 0;
|
|
4
4
|
const cli_shared_1 = require("@forge/cli-shared");
|
|
5
5
|
const manifest_1 = require("@forge/manifest");
|
|
6
6
|
const environment_1 = require("../environment");
|
|
7
|
-
|
|
7
|
+
exports.DEFAULT_ENVIRONMENT_SETTING = 'default-environment';
|
|
8
|
+
const ALLOWED_SETTINGS = ['usage-analytics', exports.DEFAULT_ENVIRONMENT_SETTING];
|
|
8
9
|
class SettingsController {
|
|
9
10
|
constructor(settingsView, cachedConfigService, getAppConfig, featureFlagService) {
|
|
10
11
|
this.settingsView = settingsView;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CLIDetails, CommandLineUI, ConfigFile, CreateAppCommand, FeatureFlagService, LoginCommand, LogoutCommand, RegisterAppCommand, ViewAppLogsCommand } from '@forge/cli-shared';
|
|
1
|
+
import { CLIDetails, CommandLineUI, ConfigFile, CreateAppCommand, FeatureFlagService, GetAppOwnerQuery, LoginCommand, LogoutCommand, RegisterAppCommand, ViewAppLogsCommand } from '@forge/cli-shared';
|
|
2
2
|
import { AnalyticsClientReporter } from '../analytics-client/analytics-client';
|
|
3
3
|
import { PackageUploadDeployCommand } from '../deploy';
|
|
4
4
|
import { DeleteEnvironmentVariableCommand } from '../environment-variables/delete-environment-variable';
|
|
@@ -29,6 +29,7 @@ import { TunnelController } from './controller/tunnel-controller';
|
|
|
29
29
|
import { StubController } from './controller/stubController';
|
|
30
30
|
import { PrerequisitesController } from './controller/prerequisites-controller';
|
|
31
31
|
import { ListEntitiesIndexesCommand } from '../entities/list-indexes';
|
|
32
|
+
import { DefaultEnvironmentController } from './controller/default-environment-controller';
|
|
32
33
|
export declare const getDependencies: (cliDetails: CLIDetails | undefined) => Promise<{
|
|
33
34
|
ui: CommandLineUI;
|
|
34
35
|
cmd: Command<[], import("./command").DefaultOpts>;
|
|
@@ -44,6 +45,7 @@ export declare const getDependencies: (cliDetails: CLIDetails | undefined) => Pr
|
|
|
44
45
|
registerAppCommand: RegisterAppCommand;
|
|
45
46
|
installAppSiteCommand: InstallAppSiteCommand;
|
|
46
47
|
uninstallAppCommand: UninstallAppCommand;
|
|
48
|
+
getAppOwnerQuery: GetAppOwnerQuery;
|
|
47
49
|
packageUploadDeployCommand: PackageUploadDeployCommand;
|
|
48
50
|
setEnvironmentVariableCommand: SetEnvironmentVariableCommand;
|
|
49
51
|
deleteEnvironmentVariableCommand: DeleteEnvironmentVariableCommand;
|
|
@@ -76,6 +78,7 @@ export declare const getDependencies: (cliDetails: CLIDetails | undefined) => Pr
|
|
|
76
78
|
settingsController: SettingsController;
|
|
77
79
|
stubController: StubController;
|
|
78
80
|
prerequisitesController: PrerequisitesController;
|
|
81
|
+
defaultEnvironmentController: DefaultEnvironmentController;
|
|
79
82
|
};
|
|
80
83
|
}>;
|
|
81
84
|
declare type PromiseType<T> = T extends Promise<infer R> ? R : any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAIA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"dependency-injection.d.ts","sourceRoot":"","sources":["../../src/command-line/dependency-injection.ts"],"names":[],"mappings":"AAIA,OAAO,EASL,UAAU,EACV,aAAa,EAEb,UAAU,EAGV,gBAAgB,EAGhB,kBAAkB,EAGlB,gBAAgB,EAQhB,YAAY,EACZ,aAAa,EAOb,kBAAkB,EAIlB,kBAAkB,EAEnB,MAAM,mBAAmB,CAAC;AAc3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAML,0BAA0B,EAG3B,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,gCAAgC,EAAE,MAAM,sDAAsD,CAAC;AAExG,OAAO,EAAE,+BAA+B,EAAE,MAAM,qDAAqD,CAAC;AACtG,OAAO,EAAE,6BAA6B,EAAE,MAAM,mDAAmD,CAAC;AAIlG,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAG3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAGhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAM7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAIrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAQtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAIzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAG3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAWlE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAIhF,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAE3F,eAAO,MAAM,eAAe,eAAsB,UAAU,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqVvE,CAAC;AAGF,aAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;AAC3D,oBAAY,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC"}
|
|
@@ -68,6 +68,7 @@ const runtime_bundler_1 = require("../deploy/packager/runtime-bundler");
|
|
|
68
68
|
const nativeui_bundler_1 = require("../deploy/packager/nativeui-bundler");
|
|
69
69
|
const sentry_1 = require("./sentry");
|
|
70
70
|
const list_indexes_1 = require("../entities/list-indexes");
|
|
71
|
+
const default_environment_controller_1 = require("./controller/default-environment-controller");
|
|
71
72
|
const getDependencies = async (cliDetails) => {
|
|
72
73
|
let cmd;
|
|
73
74
|
const ui = new cli_shared_1.CommandLineUI(() => cmd.verbose);
|
|
@@ -92,7 +93,6 @@ const getDependencies = async (cliDetails) => {
|
|
|
92
93
|
const preCommandController = new pre_command_controller_1.PreCommandController(liteLintService, liteLintView, configFile, cachedConfigService, analyticsSettingsView, settingsView);
|
|
93
94
|
const graphqlGateway = (0, cli_shared_1.getGraphqlGateway)();
|
|
94
95
|
const authenticator = new cli_shared_1.PersonalTokenAuthenticator(credentialStore);
|
|
95
|
-
cmd = command_1.Command.program(ui, analyticsClientReporter, preCommandController, cliDetails, credentialStore);
|
|
96
96
|
await (0, sentry_1.initialiseSentry)(cachedConfigService);
|
|
97
97
|
const createGraphQLClient = (auth) => {
|
|
98
98
|
const minimalGraphQLRunner = new cli_shared_1.MinimalGraphQLRunner(auth, graphqlGateway, cliDetails);
|
|
@@ -113,6 +113,7 @@ const getDependencies = async (cliDetails) => {
|
|
|
113
113
|
const templater = new cli_shared_1.ComposableTemplater(downloader, extractor, lister, ui);
|
|
114
114
|
const npmInstaller = new cli_shared_1.NpmInstaller(ui);
|
|
115
115
|
const createAppCommand = new cli_shared_1.CreateAppCommand(templater, registerAppCommand, npmInstaller);
|
|
116
|
+
const getAppOwnerQuery = new cli_shared_1.GetAppOwnerQuery(graphQLClient, assertiveAppConfigReader);
|
|
116
117
|
const environmentVariablesClient = new graphql_client_1.GraphqlClient(graphQLClient);
|
|
117
118
|
const setEnvironmentVariableCommand = new set_environment_variable_1.SetEnvironmentVariableCommand(environmentVariablesClient, assertiveAppConfigReader);
|
|
118
119
|
const deleteEnvironmentVariableCommand = new delete_environment_variable_1.DeleteEnvironmentVariableCommand(environmentVariablesClient, assertiveAppConfigReader);
|
|
@@ -167,7 +168,7 @@ const getDependencies = async (cliDetails) => {
|
|
|
167
168
|
const iframeResizerScriptService = new cli_shared_1.IframeResizerScriptService();
|
|
168
169
|
const resourcePackagingService = new resource_packaging_service_1.ResourcePackagingService(archiverFactory, fileReader, process.cwd(), bridgeScriptService, iframeResizerScriptService);
|
|
169
170
|
const packageUploadDeployCommand = new deploy_1.PackageUploadDeployCommand(appPackager, archiveUploader, deployer, resourcePackagingService);
|
|
170
|
-
const deployController = new deploy_controller_1.DeployController(assertiveAppConfigReader, configFile, lintService, installationsService, migrationKeysService, appEnvironmentClient, deployView, packageUploadDeployCommand);
|
|
171
|
+
const deployController = new deploy_controller_1.DeployController(assertiveAppConfigReader, configFile, lintService, installationsService, migrationKeysService, appEnvironmentClient, deployView, packageUploadDeployCommand, createEnvironmentCommand);
|
|
171
172
|
const createSandbox = async (cfg) => new runtime_1.NodeSandbox(cfg);
|
|
172
173
|
const functionHost = new tunnel_1.LocalFunctionHost(configFile, ui, null, createSandbox, featureFlagService);
|
|
173
174
|
const localInvocationService = new tunnel_1.LocalInvocationService(configFile, ui, runtime_1.notImplementedInspector);
|
|
@@ -183,6 +184,8 @@ const getDependencies = async (cliDetails) => {
|
|
|
183
184
|
const tunnelController = new tunnel_controller_1.TunnelController(tunnelAnalyticsService, nodeTunnelService, localTunnelService, dockerTunnelService, tunnelView, featureFlagService);
|
|
184
185
|
const stubController = new stubController_1.StubController();
|
|
185
186
|
const prerequisitesController = new prerequisites_controller_1.PrerequisitesController(ui, featureFlagService, cliDetails);
|
|
187
|
+
const defaultEnvironmentController = new default_environment_controller_1.DefaultEnvironmentController(ui, credentialStore, featureFlagService, cachedConfigService, assertiveAppConfigReader, loginCommand, createEnvironmentCommand, listEnvironmentCommand, getAppOwnerQuery);
|
|
188
|
+
cmd = command_1.Command.program(ui, analyticsClientReporter, preCommandController, cliDetails, credentialStore, defaultEnvironmentController);
|
|
186
189
|
return {
|
|
187
190
|
ui,
|
|
188
191
|
cmd,
|
|
@@ -198,6 +201,7 @@ const getDependencies = async (cliDetails) => {
|
|
|
198
201
|
registerAppCommand,
|
|
199
202
|
installAppSiteCommand,
|
|
200
203
|
uninstallAppCommand,
|
|
204
|
+
getAppOwnerQuery,
|
|
201
205
|
packageUploadDeployCommand,
|
|
202
206
|
setEnvironmentVariableCommand,
|
|
203
207
|
deleteEnvironmentVariableCommand,
|
|
@@ -229,7 +233,8 @@ const getDependencies = async (cliDetails) => {
|
|
|
229
233
|
tunnelController,
|
|
230
234
|
settingsController,
|
|
231
235
|
stubController,
|
|
232
|
-
prerequisitesController
|
|
236
|
+
prerequisitesController,
|
|
237
|
+
defaultEnvironmentController
|
|
233
238
|
}
|
|
234
239
|
};
|
|
235
240
|
};
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
+
import { HiddenError } from '@forge/cli-shared';
|
|
1
2
|
export declare class DeferredErrors {
|
|
2
3
|
private errors;
|
|
3
4
|
constructor(errors: Error[]);
|
|
4
5
|
getErrors(): Error[];
|
|
5
6
|
}
|
|
7
|
+
export declare class UserAbortError extends HiddenError {
|
|
8
|
+
constructor();
|
|
9
|
+
isUserError(): boolean;
|
|
10
|
+
}
|
|
6
11
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/command-line/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAU;gBAEZ,MAAM,EAAE,KAAK,EAAE;IAIpB,SAAS;CAGjB"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/command-line/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAU;gBAEZ,MAAM,EAAE,KAAK,EAAE;IAIpB,SAAS;CAGjB;AAED,qBAAa,cAAe,SAAQ,WAAW;;IAKtC,WAAW,IAAI,OAAO;CAG9B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DeferredErrors = void 0;
|
|
3
|
+
exports.UserAbortError = exports.DeferredErrors = void 0;
|
|
4
|
+
const cli_shared_1 = require("@forge/cli-shared");
|
|
4
5
|
class DeferredErrors {
|
|
5
6
|
constructor(errors) {
|
|
6
7
|
this.errors = errors;
|
|
@@ -10,3 +11,12 @@ class DeferredErrors {
|
|
|
10
11
|
}
|
|
11
12
|
}
|
|
12
13
|
exports.DeferredErrors = DeferredErrors;
|
|
14
|
+
class UserAbortError extends cli_shared_1.HiddenError {
|
|
15
|
+
constructor() {
|
|
16
|
+
super();
|
|
17
|
+
}
|
|
18
|
+
isUserError() {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.UserAbortError = UserAbortError;
|
|
@@ -5,7 +5,7 @@ const cli_shared_1 = require("@forge/cli-shared");
|
|
|
5
5
|
const registerCommands = ({ cmd, controllers: { lintController } }) => {
|
|
6
6
|
cmd
|
|
7
7
|
.command('lint')
|
|
8
|
-
.
|
|
8
|
+
.requireAppId()
|
|
9
9
|
.description(cli_shared_1.Text.lint.cmd)
|
|
10
10
|
.option('--fix', 'Attempt to automatically fix any issues encountered', false)
|
|
11
11
|
.environmentOption()
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/command-line/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAW,MAAM,WAQpC,CAAC;AAEF,eAAO,MAAM,UAAU,SAAU,MAAM,uBAatC,CAAC;AAEF,eAAO,MAAM,iBAAiB,UAAW,MAAM,uBAI9C,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAcceptableSlug = exports.filterSlug = exports.slugify = void 0;
|
|
4
|
+
const slugify = (value) => {
|
|
5
|
+
return value
|
|
6
|
+
.normalize('NFD')
|
|
7
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
8
|
+
.toLowerCase()
|
|
9
|
+
.trim()
|
|
10
|
+
.replace(/[^a-z0-9 ]/g, '')
|
|
11
|
+
.replace(/\s+/g, '-');
|
|
12
|
+
};
|
|
13
|
+
exports.slugify = slugify;
|
|
14
|
+
const filterSlug = (slug) => {
|
|
15
|
+
if (slug === '') {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const characters = Array.from(slug);
|
|
19
|
+
const dashesOnly = characters.every((char) => char === '-');
|
|
20
|
+
if (dashesOnly) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
return slug;
|
|
24
|
+
};
|
|
25
|
+
exports.filterSlug = filterSlug;
|
|
26
|
+
const getAcceptableSlug = (value) => {
|
|
27
|
+
const slug = (0, exports.slugify)(value);
|
|
28
|
+
return (0, exports.filterSlug)(slug);
|
|
29
|
+
};
|
|
30
|
+
exports.getAcceptableSlug = getAcceptableSlug;
|
|
@@ -16,8 +16,11 @@ export declare class DeployView {
|
|
|
16
16
|
displayConnectKeyChangeWarning(environment: string, migrationKey: string, connectKey: string): void;
|
|
17
17
|
displayConnectKeyDeleteWarning(environment: string): void;
|
|
18
18
|
displayMPACAppConnectKeyChangeError(mpacAppKey: string, connectKey: string): void;
|
|
19
|
+
displayEnvironmentCreationWarning(environment: string): void;
|
|
20
|
+
displayEnvironmentCreationSuccessMessage(environment: string): void;
|
|
19
21
|
promptToContinueDeletingConnectKey(): Promise<boolean>;
|
|
20
22
|
promptToContinueChangingConnectKey(): Promise<boolean>;
|
|
23
|
+
promptToCreateEnvironment(): Promise<boolean>;
|
|
21
24
|
reportDeploymentProgress({ appAri, name, environmentKey, environmentType }: AppEnvironmentDetails, showDistributionPageLink: boolean, deployCallback: () => Promise<DeploymentResult>): Promise<DeploymentResult>;
|
|
22
25
|
}
|
|
23
26
|
//# sourceMappingURL=deploy-view.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-view.d.ts","sourceRoot":"","sources":["../../../src/command-line/view/deploy-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA2D,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvH,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAE5B,SAAS,IAAI,EAAE;IAIf,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIvC,gCAAgC,IAAI,IAAI;IAIxC,kBAAkB,IAAI,IAAI;IAI1B,mCAAmC,IAAI,IAAI;IAK3C,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKjD,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAKlD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI3C,qBAAqB,IAAI,IAAI;IAI7B,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAInG,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIzD,mCAAmC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"deploy-view.d.ts","sourceRoot":"","sources":["../../../src/command-line/view/deploy-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAA2D,EAAE,EAAE,MAAM,mBAAmB,CAAC;AACvH,OAAO,EAAE,UAAU,EAAqB,MAAM,aAAa,CAAC;AAE5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,qBAAa,UAAU;IACT,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,EAAE;IAE5B,SAAS,IAAI,EAAE;IAIf,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIvC,gCAAgC,IAAI,IAAI;IAIxC,kBAAkB,IAAI,IAAI;IAI1B,mCAAmC,IAAI,IAAI;IAK3C,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKjD,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAKlD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI3C,qBAAqB,IAAI,IAAI;IAI7B,8BAA8B,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAInG,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIzD,mCAAmC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjF,iCAAiC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAM5D,wCAAwC,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAK7D,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;IAItD,kCAAkC,IAAI,OAAO,CAAC,OAAO,CAAC;IAItD,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC;IAM7C,wBAAwB,CACnC,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,EAAE,qBAAqB,EACxE,wBAAwB,EAAE,OAAO,EACjC,cAAc,EAAE,MAAM,OAAO,CAAC,gBAAgB,CAAC,GAC9C,OAAO,CAAC,gBAAgB,CAAC;CAY7B"}
|