@hubspot/cli 7.8.12-experimental.0 → 7.8.12-experimental.1
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/bin/cli.js +31 -25
- package/commands/__tests__/auth.test.js +5 -0
- package/commands/__tests__/doctor.test.js +16 -16
- package/commands/account/clean.js +18 -27
- package/commands/account/createOverride.js +13 -31
- package/commands/account/info.js +20 -31
- package/commands/account/list.js +16 -22
- package/commands/account/remove.js +12 -20
- package/commands/account/removeOverride.js +11 -21
- package/commands/account/rename.js +6 -9
- package/commands/account/use.js +12 -26
- package/commands/account.js +2 -2
- package/commands/app/__tests__/migrate.test.js +5 -5
- package/commands/app/migrate.js +13 -18
- package/commands/app.js +1 -6
- package/commands/auth.d.ts +1 -0
- package/commands/auth.js +16 -7
- package/commands/cms/convertFields.js +7 -9
- package/commands/cms/getReactModule.js +9 -14
- package/commands/cms/lighthouseScore.js +33 -36
- package/commands/cms.js +2 -2
- package/commands/completion.js +3 -3
- package/commands/config/set.d.ts +1 -1
- package/commands/config/set.js +64 -36
- package/commands/config.js +2 -2
- package/commands/create.js +2 -2
- package/commands/customObject/create.js +10 -12
- package/commands/customObject/schema/create.js +9 -11
- package/commands/customObject/schema/delete.js +16 -16
- package/commands/customObject/schema/fetch-all.js +12 -11
- package/commands/customObject/schema/fetch.js +15 -15
- package/commands/customObject/schema/list.js +4 -4
- package/commands/customObject/schema/update.js +13 -13
- package/commands/customObject/schema.js +2 -2
- package/commands/customObject.js +6 -7
- package/commands/doctor.js +8 -11
- package/commands/feedback.js +6 -11
- package/commands/fetch.js +8 -8
- package/commands/filemanager/fetch.js +7 -7
- package/commands/filemanager/upload.js +15 -34
- package/commands/filemanager.js +2 -2
- package/commands/function/deploy.js +11 -29
- package/commands/function/list.js +8 -8
- package/commands/function/server.js +9 -11
- package/commands/function.d.ts +1 -1
- package/commands/function.js +2 -2
- package/commands/getStarted.js +2 -2
- package/commands/hubdb/clear.js +7 -15
- package/commands/hubdb/create.js +9 -15
- package/commands/hubdb/delete.js +8 -15
- package/commands/hubdb/fetch.js +6 -9
- package/commands/hubdb.d.ts +1 -1
- package/commands/hubdb.js +2 -2
- package/commands/init.js +2 -3
- package/commands/lint.js +16 -16
- package/commands/list.js +8 -14
- package/commands/logs.js +14 -20
- package/commands/mv.js +6 -17
- package/commands/open.js +5 -5
- package/commands/project/__tests__/add.test.js +4 -2
- package/commands/project/__tests__/deploy.test.js +3 -4
- package/commands/project/__tests__/installDeps.test.js +8 -8
- package/commands/project/__tests__/logs.test.js +1 -1
- package/commands/project/__tests__/migrate.test.js +5 -5
- package/commands/project/__tests__/migrateApp.test.js +2 -5
- package/commands/project/__tests__/validate.test.js +98 -0
- package/commands/project/add.js +3 -3
- package/commands/project/cloneApp.js +14 -19
- package/commands/project/create.js +0 -1
- package/commands/project/deploy.js +3 -3
- package/commands/project/dev/deprecatedFlow.js +7 -16
- package/commands/project/dev/index.js +14 -12
- package/commands/project/dev/unifiedFlow.js +3 -1
- package/commands/project/download.js +10 -13
- package/commands/project/installDeps.js +8 -8
- package/commands/project/listBuilds.js +11 -20
- package/commands/project/logs.js +21 -24
- package/commands/project/migrateApp.js +9 -15
- package/commands/project/open.js +6 -13
- package/commands/project/upload.d.ts +2 -2
- package/commands/project/upload.js +17 -26
- package/commands/project/validate.js +6 -6
- package/commands/project/watch.js +13 -22
- package/commands/project.js +2 -2
- package/commands/sandbox/__tests__/create.test.js +5 -5
- package/commands/sandbox/create.js +22 -32
- package/commands/sandbox/delete.js +38 -63
- package/commands/sandbox.js +2 -2
- package/commands/secret/addSecret.js +7 -17
- package/commands/secret/deleteSecret.js +10 -20
- package/commands/secret/listSecret.js +8 -10
- package/commands/secret/updateSecret.js +9 -17
- package/commands/secret.js +2 -2
- package/commands/testAccount/__tests__/delete.test.js +2 -4
- package/commands/testAccount/create.js +0 -3
- package/commands/testAccount/delete.d.ts +4 -3
- package/commands/testAccount/delete.js +155 -14
- package/commands/theme/preview.js +1 -4
- package/lang/en.d.ts +310 -124
- package/lang/en.js +351 -169
- package/lang/en.lyaml +2 -2
- package/lib/__tests__/buildAccount.test.js +2 -1
- package/lib/__tests__/commonOpts.test.js +1 -1
- package/lib/__tests__/dependencyManagement.test.js +1 -1
- package/lib/__tests__/developerTestAccounts.test.js +3 -3
- package/lib/__tests__/npm.test.js +1 -1
- package/lib/__tests__/oauth.test.js +4 -4
- package/lib/__tests__/process.test.js +10 -5
- package/lib/__tests__/sandboxSync.test.js +8 -8
- package/lib/__tests__/sandboxes.test.js +8 -8
- package/lib/__tests__/serverlessLogs.test.js +1 -1
- package/lib/__tests__/usageTracking.test.js +5 -5
- package/lib/__tests__/validation.test.js +2 -1
- package/lib/__tests__/yargsUtils.test.js +83 -9
- package/lib/app/__tests__/migrate.test.js +5 -5
- package/lib/app/__tests__/migrate_legacy.test.js +1 -1
- package/lib/app/migrate.js +1 -1
- package/lib/app/migrate_legacy.js +20 -24
- package/lib/buildAccount.js +25 -57
- package/lib/commonOpts.d.ts +1 -1
- package/lib/commonOpts.js +25 -22
- package/lib/configOptions.js +7 -0
- package/lib/constants.d.ts +6 -1
- package/lib/constants.js +10 -1
- package/lib/dependencyManagement.js +9 -27
- package/lib/developerTestAccounts.js +9 -23
- package/lib/doctor/Diagnosis.js +11 -23
- package/lib/doctor/DiagnosticInfoBuilder.js +12 -11
- package/lib/doctor/Doctor.js +42 -90
- package/lib/doctor/__tests__/Doctor.test.js +4 -4
- package/lib/errorHandlers/index.js +12 -20
- package/lib/errorHandlers/suppressError.js +11 -18
- package/lib/lang.js +6 -5
- package/lib/links.js +4 -4
- package/lib/middleware/__test__/commandTargetingUtils.test.js +99 -0
- package/lib/middleware/__test__/configMiddleware.test.js +11 -11
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +6 -8
- package/lib/middleware/commandTargetingUtils.d.ts +8 -0
- package/lib/middleware/commandTargetingUtils.js +78 -0
- package/lib/middleware/configMiddleware.d.ts +1 -1
- package/lib/middleware/configMiddleware.js +21 -81
- package/lib/middleware/gitMiddleware.js +5 -1
- package/lib/middleware/notificationsMiddleware.js +5 -11
- package/lib/middleware/yargsChecksMiddleware.js +6 -9
- package/lib/npm.js +2 -2
- package/lib/oauth.js +5 -5
- package/lib/process.js +5 -4
- package/lib/projectProfiles.d.ts +1 -1
- package/lib/projectProfiles.js +2 -10
- package/lib/projects/__tests__/AppDevModeInterface.test.js +14 -34
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +70 -39
- package/lib/projects/__tests__/localDevProjectHelpers.test.js +2 -0
- package/lib/projects/__tests__/platformVersion.test.js +8 -8
- package/lib/projects/__tests__/projects.test.js +12 -12
- package/lib/projects/__tests__/structure.test.js +3 -3
- package/lib/projects/__tests__/upload.test.d.ts +1 -0
- package/lib/projects/__tests__/upload.test.js +82 -0
- package/lib/projects/add/__tests__/legacyAddComponent.test.js +6 -6
- package/lib/projects/add/__tests__/v3AddComponent.test.js +4 -4
- package/lib/projects/create/__tests__/legacy.test.js +5 -5
- package/lib/projects/create/__tests__/v3.test.js +1 -1
- package/lib/projects/create/index.js +2 -2
- package/lib/projects/create/legacy.js +2 -2
- package/lib/projects/create/v3.js +2 -2
- package/lib/projects/localDev/AppDevModeInterface.d.ts +2 -0
- package/lib/projects/localDev/AppDevModeInterface.js +22 -20
- package/lib/projects/localDev/LocalDevLogger.js +10 -11
- package/lib/projects/localDev/LocalDevManager.js +4 -5
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +0 -1
- package/lib/projects/localDev/LocalDevWebsocketServer.js +7 -10
- package/lib/projects/localDev/helpers/project.d.ts +1 -0
- package/lib/projects/localDev/helpers/project.js +37 -0
- package/lib/projects/platformVersion.d.ts +1 -1
- package/lib/projects/platformVersion.js +1 -1
- package/lib/projects/structure.d.ts +2 -2
- package/lib/projects/structure.js +6 -6
- package/lib/projects/upload.d.ts +2 -3
- package/lib/projects/upload.js +17 -9
- package/lib/prompts/__tests__/downloadProjectPrompt.test.js +1 -0
- package/lib/prompts/accountNamePrompt.js +14 -19
- package/lib/prompts/accountsPrompt.js +2 -2
- package/lib/prompts/cmsFieldPrompt.js +2 -2
- package/lib/prompts/createApiSamplePrompt.js +5 -5
- package/lib/prompts/createDeveloperTestAccountConfigPrompt.js +10 -1
- package/lib/prompts/createFunctionPrompt.js +14 -14
- package/lib/prompts/createModulePrompt.js +9 -9
- package/lib/prompts/createTemplatePrompt.js +2 -2
- package/lib/prompts/downloadProjectPrompt.js +5 -8
- package/lib/prompts/personalAccessKeyPrompt.js +3 -3
- package/lib/prompts/previewPrompt.js +6 -6
- package/lib/prompts/projectAddPrompt.js +6 -0
- package/lib/prompts/projectDevTargetAccountPrompt.js +20 -32
- package/lib/prompts/projectNamePrompt.js +4 -8
- package/lib/prompts/projectsLogsPrompt.js +2 -4
- package/lib/prompts/promptUtils.js +27 -9
- package/lib/prompts/sandboxesPrompt.js +7 -7
- package/lib/prompts/secretPrompt.js +3 -3
- package/lib/prompts/selectAppPrompt.js +3 -3
- package/lib/prompts/selectHubDBTablePrompt.js +9 -13
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +15 -19
- package/lib/prompts/setAsDefaultAccountPrompt.js +4 -8
- package/lib/prompts/uploadPrompt.js +5 -5
- package/lib/sandboxSync.js +24 -41
- package/lib/sandboxes.js +19 -47
- package/lib/schema.js +3 -3
- package/lib/serverlessLogs.js +11 -13
- package/lib/theme/__tests__/migrate.test.js +3 -3
- package/lib/theme/migrate.js +2 -2
- package/lib/ui/SpinniesManager.d.ts +2 -0
- package/lib/ui/SpinniesManager.js +7 -0
- package/lib/ui/boxen.js +1 -2
- package/lib/ui/git.js +13 -10
- package/lib/ui/index.d.ts +4 -0
- package/lib/ui/index.js +47 -38
- package/lib/ui/serverlessFunctionLogs.js +9 -7
- package/lib/ui/uiMessages.d.ts +68 -0
- package/lib/ui/uiMessages.js +71 -0
- package/lib/usageTracking.js +7 -7
- package/lib/validation.js +20 -23
- package/lib/yargsUtils.d.ts +1 -1
- package/lib/yargsUtils.js +12 -5
- package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +2 -2
- package/mcp-server/tools/index.js +4 -0
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +23 -0
- package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +68 -0
- package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +11 -0
- package/mcp-server/tools/project/GetApplicationInfoTool.js +49 -0
- package/mcp-server/tools/project/GetConfigValuesTool.js +2 -2
- package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +2 -2
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +169 -0
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +1 -0
- package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +115 -0
- package/mcp-server/utils/toolUsageTracking.js +2 -2
- package/package.json +6 -6
- package/types/Yargs.d.ts +1 -1
- package/commands/app/__tests__/install.test.js +0 -47
- package/commands/app/install.d.ts +0 -8
- package/commands/app/install.js +0 -122
- package/lib/middleware/__test__/utils.test.js +0 -51
- package/lib/middleware/utils.d.ts +0 -8
- package/lib/middleware/utils.js +0 -14
- /package/commands/{app/__tests__/install.test.d.ts → project/__tests__/validate.test.d.ts} +0 -0
- /package/lib/middleware/__test__/{utils.test.d.ts → commandTargetingUtils.test.d.ts} +0 -0
package/lib/buildAccount.js
CHANGED
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { getAccessToken, updateConfigWithAccessToken, } from '@hubspot/local-dev-lib/personalAccessKey';
|
|
2
2
|
import { accountNameExistsInConfig, updateAccountConfig, writeConfig, getAccountId, } from '@hubspot/local-dev-lib/config';
|
|
3
3
|
import { getAccountIdentifier } from '@hubspot/local-dev-lib/config/getAccountIdentifier';
|
|
4
|
-
import {
|
|
4
|
+
import { uiLogger } from './ui/logger.js';
|
|
5
5
|
import { createDeveloperTestAccount, fetchDeveloperTestAccountGateSyncStatus, generateDeveloperTestAccountPersonalAccessKey, } from '@hubspot/local-dev-lib/api/developerTestAccounts';
|
|
6
6
|
import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
|
|
7
7
|
import { createSandbox, createV2Sandbox, getSandboxPersonalAccessKey, } from '@hubspot/local-dev-lib/api/sandboxHubs';
|
|
8
8
|
import { personalAccessKeyPrompt } from './prompts/personalAccessKeyPrompt.js';
|
|
9
9
|
import { createDeveloperTestAccountConfigPrompt } from './prompts/createDeveloperTestAccountConfigPrompt.js';
|
|
10
|
-
import { i18n } from './lang.js';
|
|
11
10
|
import { cliAccountNamePrompt } from './prompts/accountNamePrompt.js';
|
|
12
11
|
import SpinniesManager from './ui/SpinniesManager.js';
|
|
13
12
|
import { debugError, logError } from './errorHandlers/index.js';
|
|
@@ -32,10 +31,8 @@ export async function saveAccountToConfig(accountId, accountName, env, personalA
|
|
|
32
31
|
const invalidAccountName = accountNameExistsInConfig(nameForConfig);
|
|
33
32
|
if (invalidAccountName) {
|
|
34
33
|
if (!force) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
name: nameForConfig,
|
|
38
|
-
}));
|
|
34
|
+
uiLogger.log('');
|
|
35
|
+
uiLogger.warn(lib.prompts.accountNamePrompt.errors.accountNameExists(nameForConfig));
|
|
39
36
|
const { name: promptName } = await cliAccountNamePrompt(nameForConfig + `_${accountId}`);
|
|
40
37
|
validName = promptName;
|
|
41
38
|
}
|
|
@@ -52,7 +49,7 @@ export async function saveAccountToConfig(accountId, accountName, env, personalA
|
|
|
52
49
|
name: validName,
|
|
53
50
|
});
|
|
54
51
|
writeConfig();
|
|
55
|
-
|
|
52
|
+
uiLogger.log('');
|
|
56
53
|
return validName;
|
|
57
54
|
}
|
|
58
55
|
export async function createDeveloperTestAccountV3(parentAccountId, testAccountConfig) {
|
|
@@ -92,7 +89,7 @@ export async function buildDeveloperTestAccount(testAccountName, parentAccountCo
|
|
|
92
89
|
accountName: testAccountName,
|
|
93
90
|
};
|
|
94
91
|
if (!parentAccountId) {
|
|
95
|
-
throw new Error(
|
|
92
|
+
throw new Error(lib.developerTestAccount.create.loading.fail(''));
|
|
96
93
|
}
|
|
97
94
|
if (useV3) {
|
|
98
95
|
testAccountConfig = await createDeveloperTestAccountConfigPrompt({
|
|
@@ -103,11 +100,9 @@ export async function buildDeveloperTestAccount(testAccountName, parentAccountCo
|
|
|
103
100
|
SpinniesManager.init({
|
|
104
101
|
succeedColor: 'white',
|
|
105
102
|
});
|
|
106
|
-
|
|
103
|
+
uiLogger.log('');
|
|
107
104
|
SpinniesManager.add('buildDeveloperTestAccount', {
|
|
108
|
-
text:
|
|
109
|
-
accountName: testAccountName,
|
|
110
|
-
}),
|
|
105
|
+
text: lib.developerTestAccount.create.loading.add(testAccountName),
|
|
111
106
|
});
|
|
112
107
|
let developerTestAccountId;
|
|
113
108
|
let developerTestAccountPersonalAccessKey;
|
|
@@ -123,18 +118,13 @@ export async function buildDeveloperTestAccount(testAccountName, parentAccountCo
|
|
|
123
118
|
developerTestAccountPersonalAccessKey = data.personalAccessKey;
|
|
124
119
|
}
|
|
125
120
|
SpinniesManager.succeed('buildDeveloperTestAccount', {
|
|
126
|
-
text:
|
|
127
|
-
accountName: testAccountName,
|
|
128
|
-
accountId: developerTestAccountId,
|
|
129
|
-
}),
|
|
121
|
+
text: lib.developerTestAccount.create.loading.succeed(testAccountName, developerTestAccountId.toString()),
|
|
130
122
|
});
|
|
131
123
|
}
|
|
132
124
|
catch (e) {
|
|
133
125
|
debugError(e);
|
|
134
126
|
SpinniesManager.fail('buildDeveloperTestAccount', {
|
|
135
|
-
text:
|
|
136
|
-
accountName: testAccountName,
|
|
137
|
-
}),
|
|
127
|
+
text: lib.developerTestAccount.create.loading.fail(testAccountName),
|
|
138
128
|
});
|
|
139
129
|
handleDeveloperTestAccountCreateError(e, parentAccountId, env, portalLimit);
|
|
140
130
|
}
|
|
@@ -148,26 +138,20 @@ export async function buildDeveloperTestAccount(testAccountName, parentAccountCo
|
|
|
148
138
|
return developerTestAccountId;
|
|
149
139
|
}
|
|
150
140
|
export async function buildSandbox(sandboxName, parentAccountConfig, sandboxType, env, force = false) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
else {
|
|
156
|
-
i18nKey = 'lib.sandbox.create.loading.developer';
|
|
157
|
-
}
|
|
141
|
+
const sandboxTypeKey = sandboxType === HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX
|
|
142
|
+
? 'standard'
|
|
143
|
+
: 'developer';
|
|
158
144
|
const id = getAccountIdentifier(parentAccountConfig);
|
|
159
145
|
const parentAccountId = getAccountId(id);
|
|
160
146
|
if (!parentAccountId) {
|
|
161
|
-
throw new Error(
|
|
147
|
+
throw new Error(lib.sandbox.create[sandboxTypeKey].loading.fail(''));
|
|
162
148
|
}
|
|
163
149
|
SpinniesManager.init({
|
|
164
150
|
succeedColor: 'white',
|
|
165
151
|
});
|
|
166
|
-
|
|
152
|
+
uiLogger.log('');
|
|
167
153
|
SpinniesManager.add('buildSandbox', {
|
|
168
|
-
text:
|
|
169
|
-
accountName: sandboxName,
|
|
170
|
-
}),
|
|
154
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.add(sandboxName),
|
|
171
155
|
});
|
|
172
156
|
let sandbox;
|
|
173
157
|
try {
|
|
@@ -175,18 +159,13 @@ export async function buildSandbox(sandboxName, parentAccountConfig, sandboxType
|
|
|
175
159
|
const { data } = await createSandbox(parentAccountId, sandboxName, sandboxApiType);
|
|
176
160
|
sandbox = { name: sandboxName, ...data };
|
|
177
161
|
SpinniesManager.succeed('buildSandbox', {
|
|
178
|
-
text:
|
|
179
|
-
accountName: sandboxName,
|
|
180
|
-
accountId: sandbox.sandbox.sandboxHubId,
|
|
181
|
-
}),
|
|
162
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.succeed(sandboxName, sandbox.sandbox.sandboxHubId.toString()),
|
|
182
163
|
});
|
|
183
164
|
}
|
|
184
165
|
catch (e) {
|
|
185
166
|
debugError(e);
|
|
186
167
|
SpinniesManager.fail('buildSandbox', {
|
|
187
|
-
text:
|
|
188
|
-
accountName: sandboxName,
|
|
189
|
-
}),
|
|
168
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.fail(sandboxName),
|
|
190
169
|
});
|
|
191
170
|
handleSandboxCreateError(e, env, sandboxName, parentAccountId);
|
|
192
171
|
}
|
|
@@ -200,26 +179,20 @@ export async function buildSandbox(sandboxName, parentAccountConfig, sandboxType
|
|
|
200
179
|
return sandbox;
|
|
201
180
|
}
|
|
202
181
|
export async function buildV2Sandbox(sandboxName, parentAccountConfig, sandboxType, syncObjectRecords, env, force = false) {
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
}
|
|
207
|
-
else {
|
|
208
|
-
i18nKey = 'lib.sandbox.create.loading.developer';
|
|
209
|
-
}
|
|
182
|
+
const sandboxTypeKey = sandboxType === HUBSPOT_ACCOUNT_TYPES.STANDARD_SANDBOX
|
|
183
|
+
? 'standard'
|
|
184
|
+
: 'developer';
|
|
210
185
|
const id = getAccountIdentifier(parentAccountConfig);
|
|
211
186
|
const parentAccountId = getAccountId(id);
|
|
212
187
|
if (!parentAccountId) {
|
|
213
|
-
throw new Error(
|
|
188
|
+
throw new Error(lib.sandbox.create[sandboxTypeKey].loading.fail(''));
|
|
214
189
|
}
|
|
215
190
|
SpinniesManager.init({
|
|
216
191
|
succeedColor: 'white',
|
|
217
192
|
});
|
|
218
|
-
|
|
193
|
+
uiLogger.log('');
|
|
219
194
|
SpinniesManager.add('buildV2Sandbox', {
|
|
220
|
-
text:
|
|
221
|
-
accountName: sandboxName,
|
|
222
|
-
}),
|
|
195
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.add(sandboxName),
|
|
223
196
|
});
|
|
224
197
|
let sandbox;
|
|
225
198
|
let pak;
|
|
@@ -230,18 +203,13 @@ export async function buildV2Sandbox(sandboxName, parentAccountConfig, sandboxTy
|
|
|
230
203
|
const { data: { personalAccessKey }, } = await getSandboxPersonalAccessKey(parentAccountId, sandbox.sandboxHubId);
|
|
231
204
|
pak = personalAccessKey.encodedOAuthRefreshToken;
|
|
232
205
|
SpinniesManager.succeed('buildV2Sandbox', {
|
|
233
|
-
text:
|
|
234
|
-
accountName: sandboxName,
|
|
235
|
-
accountId: sandbox.sandboxHubId,
|
|
236
|
-
}),
|
|
206
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.succeed(sandboxName, sandbox.sandboxHubId.toString()),
|
|
237
207
|
});
|
|
238
208
|
}
|
|
239
209
|
catch (e) {
|
|
240
210
|
debugError(e);
|
|
241
211
|
SpinniesManager.fail('buildV2Sandbox', {
|
|
242
|
-
text:
|
|
243
|
-
accountName: sandboxName,
|
|
244
|
-
}),
|
|
212
|
+
text: lib.sandbox.create[sandboxTypeKey].loading.fail(sandboxName),
|
|
245
213
|
});
|
|
246
214
|
handleSandboxCreateError(e, env, sandboxName, parentAccountId);
|
|
247
215
|
}
|
package/lib/commonOpts.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ export declare function addTestingOptions(yargs: Argv): Argv;
|
|
|
13
13
|
export declare function addUseEnvironmentOptions(yargs: Argv): Argv;
|
|
14
14
|
export declare function addJSONOutputOptions(yargs: Argv): Argv;
|
|
15
15
|
export declare function addCustomHelpOutput(yargs: Argv, command: string | string[], describe?: string): Promise<void>;
|
|
16
|
-
export declare function
|
|
16
|
+
export declare function setCLILogLevel(options: Arguments<{
|
|
17
17
|
debug?: boolean;
|
|
18
18
|
networkDebug?: boolean;
|
|
19
19
|
json?: boolean;
|
package/lib/commonOpts.js
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import yargsParser from 'yargs-parser';
|
|
3
|
-
import { LOG_LEVEL,
|
|
3
|
+
import { LOG_LEVEL, setLogLevel } from '@hubspot/local-dev-lib/logger';
|
|
4
|
+
import { uiLogger } from './ui/logger.js';
|
|
4
5
|
import { DEFAULT_CMS_PUBLISH_MODE, CMS_PUBLISH_MODE, } from '@hubspot/local-dev-lib/constants/files';
|
|
5
6
|
import { getAccountConfig, getAndLoadConfigIfNeeded, } from '@hubspot/local-dev-lib/config';
|
|
6
7
|
import { debugError } from './errorHandlers/index.js';
|
|
7
8
|
import { EXIT_CODES } from './enums/exitCodes.js';
|
|
8
9
|
import { uiCommandReference } from './ui/index.js';
|
|
9
|
-
import {
|
|
10
|
+
import { lib } from '../lang/en.js';
|
|
10
11
|
import { getTerminalUISupport, UI_COLORS } from './ui/index.js';
|
|
12
|
+
import SpinniesManager from './ui/SpinniesManager.js';
|
|
11
13
|
export function addGlobalOptions(yargs) {
|
|
12
14
|
yargs.version(false);
|
|
13
15
|
yargs.option('debug', {
|
|
14
16
|
alias: 'd',
|
|
15
17
|
default: false,
|
|
16
|
-
describe:
|
|
18
|
+
describe: lib.commonOpts.options.debug,
|
|
17
19
|
type: 'boolean',
|
|
18
20
|
});
|
|
19
21
|
yargs.option('network-debug', {
|
|
@@ -26,21 +28,21 @@ export function addGlobalOptions(yargs) {
|
|
|
26
28
|
export function addAccountOptions(yargs) {
|
|
27
29
|
return yargs.option('account', {
|
|
28
30
|
alias: 'a',
|
|
29
|
-
describe:
|
|
31
|
+
describe: lib.commonOpts.options.account,
|
|
30
32
|
type: 'string',
|
|
31
33
|
});
|
|
32
34
|
}
|
|
33
35
|
export function addConfigOptions(yargs) {
|
|
34
36
|
return yargs.option('config', {
|
|
35
37
|
alias: 'c',
|
|
36
|
-
describe:
|
|
38
|
+
describe: lib.commonOpts.options.config,
|
|
37
39
|
type: 'string',
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
42
|
export function addOverwriteOptions(yargs) {
|
|
41
43
|
return yargs.option('overwrite', {
|
|
42
44
|
alias: 'o',
|
|
43
|
-
describe:
|
|
45
|
+
describe: lib.commonOpts.options.overwrite,
|
|
44
46
|
type: 'boolean',
|
|
45
47
|
default: false,
|
|
46
48
|
});
|
|
@@ -49,13 +51,13 @@ export function addCmsPublishModeOptions(yargs, { read, write }) {
|
|
|
49
51
|
const cmsPublishModes = `<${Object.values(CMS_PUBLISH_MODE).join(' | ')}>`;
|
|
50
52
|
return yargs.option('cms-publish-mode', {
|
|
51
53
|
alias: 'm',
|
|
52
|
-
describe:
|
|
54
|
+
describe: lib.commonOpts.options.modes[read ? 'read' : write ? 'write' : 'default'](cmsPublishModes),
|
|
53
55
|
type: 'string',
|
|
54
56
|
});
|
|
55
57
|
}
|
|
56
58
|
export function addTestingOptions(yargs) {
|
|
57
59
|
return yargs.option('qa', {
|
|
58
|
-
describe:
|
|
60
|
+
describe: lib.commonOpts.options.qa,
|
|
59
61
|
type: 'boolean',
|
|
60
62
|
default: false,
|
|
61
63
|
hidden: true,
|
|
@@ -63,7 +65,7 @@ export function addTestingOptions(yargs) {
|
|
|
63
65
|
}
|
|
64
66
|
export function addUseEnvironmentOptions(yargs) {
|
|
65
67
|
yargs.option('use-env', {
|
|
66
|
-
describe:
|
|
68
|
+
describe: lib.commonOpts.options.useEnv,
|
|
67
69
|
type: 'boolean',
|
|
68
70
|
});
|
|
69
71
|
yargs.conflicts('use-env', 'account');
|
|
@@ -72,7 +74,7 @@ export function addUseEnvironmentOptions(yargs) {
|
|
|
72
74
|
export function addJSONOutputOptions(yargs) {
|
|
73
75
|
return yargs.option('json', {
|
|
74
76
|
alias: 'format-output-as-json',
|
|
75
|
-
describe:
|
|
77
|
+
describe: lib.commonOpts.options.jsonOutput,
|
|
76
78
|
type: 'boolean',
|
|
77
79
|
hidden: true,
|
|
78
80
|
});
|
|
@@ -80,27 +82,27 @@ export function addJSONOutputOptions(yargs) {
|
|
|
80
82
|
// Remove this once we've upgraded to yargs 18.0.0
|
|
81
83
|
function uiBetaTagWithColor(message) {
|
|
82
84
|
const terminalUISupport = getTerminalUISupport();
|
|
83
|
-
const tag =
|
|
85
|
+
const tag = lib.ui.betaTagWithStyle;
|
|
84
86
|
const result = `${terminalUISupport.color ? chalk.hex(UI_COLORS.SORBET)(tag) : tag} ${message}`;
|
|
85
87
|
return result;
|
|
86
88
|
}
|
|
87
89
|
// Remove this once we've upgraded to yargs 18.0.0
|
|
88
90
|
function uiDeprecatedTagWithColor(message) {
|
|
89
91
|
const terminalUISupport = getTerminalUISupport();
|
|
90
|
-
const tag =
|
|
92
|
+
const tag = lib.ui.deprecatedTagWithStyle;
|
|
91
93
|
const result = `${terminalUISupport.color ? chalk.yellow(tag) : tag} ${message}`;
|
|
92
94
|
return result;
|
|
93
95
|
}
|
|
94
96
|
export async function addCustomHelpOutput(yargs, command, describe) {
|
|
95
97
|
try {
|
|
96
98
|
// Remove this once we've upgraded to yargs 18.0.0
|
|
97
|
-
if (describe && describe.includes(
|
|
98
|
-
describe = describe.replace(
|
|
99
|
+
if (describe && describe.includes(lib.ui.betaTag)) {
|
|
100
|
+
describe = describe.replace(lib.ui.betaTag + ' ', '');
|
|
99
101
|
describe = uiBetaTagWithColor(describe);
|
|
100
102
|
}
|
|
101
103
|
// Remove this once we've upgraded to yargs 18.0.0
|
|
102
|
-
if (describe && describe.includes(
|
|
103
|
-
describe = describe.replace(
|
|
104
|
+
if (describe && describe.includes(lib.ui.deprecatedTag)) {
|
|
105
|
+
describe = describe.replace(lib.ui.deprecatedTag + ' ', '');
|
|
104
106
|
describe = uiDeprecatedTagWithColor(describe);
|
|
105
107
|
}
|
|
106
108
|
const parsedArgv = yargsParser(process.argv.slice(2));
|
|
@@ -132,7 +134,7 @@ export async function addCustomHelpOutput(yargs, command, describe) {
|
|
|
132
134
|
if (commandHelp.startsWith('\n')) {
|
|
133
135
|
commandHelp = commandHelp.slice(1);
|
|
134
136
|
}
|
|
135
|
-
|
|
137
|
+
uiLogger.log(`${uiCommandReference(fullCommand, false)}\n\n${describe ? `${describe}\n\n` : ''}${commandHelp}`);
|
|
136
138
|
process.exit(EXIT_CODES.SUCCESS);
|
|
137
139
|
}
|
|
138
140
|
}
|
|
@@ -141,20 +143,21 @@ export async function addCustomHelpOutput(yargs, command, describe) {
|
|
|
141
143
|
debugError(e);
|
|
142
144
|
}
|
|
143
145
|
}
|
|
144
|
-
export function
|
|
146
|
+
export function setCLILogLevel(options) {
|
|
145
147
|
const { debug, networkDebug, json } = options;
|
|
146
148
|
if (json) {
|
|
147
|
-
|
|
149
|
+
setLogLevel(LOG_LEVEL.ERROR);
|
|
150
|
+
SpinniesManager.setDisableOutput(true);
|
|
148
151
|
}
|
|
149
152
|
else if (debug) {
|
|
150
|
-
|
|
153
|
+
setLogLevel(LOG_LEVEL.DEBUG);
|
|
151
154
|
}
|
|
152
155
|
else {
|
|
153
|
-
|
|
156
|
+
setLogLevel(LOG_LEVEL.LOG);
|
|
154
157
|
}
|
|
155
158
|
if (networkDebug) {
|
|
156
159
|
process.env.HUBSPOT_NETWORK_LOGGING = 'true';
|
|
157
|
-
|
|
160
|
+
setLogLevel(LOG_LEVEL.DEBUG);
|
|
158
161
|
}
|
|
159
162
|
}
|
|
160
163
|
export function getCommandName(argv) {
|
package/lib/configOptions.js
CHANGED
|
@@ -79,6 +79,13 @@ async function enterTimeout() {
|
|
|
79
79
|
message: lib.configOptions.setHttpTimeout.promptMessage,
|
|
80
80
|
type: 'input',
|
|
81
81
|
default: 30000,
|
|
82
|
+
validate: (timeout) => {
|
|
83
|
+
const timeoutNum = parseInt(timeout, 10);
|
|
84
|
+
if (isNaN(timeoutNum) || timeoutNum < 3000) {
|
|
85
|
+
return lib.configOptions.setHttpTimeout.error(timeout);
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
88
|
+
},
|
|
82
89
|
},
|
|
83
90
|
]);
|
|
84
91
|
return timeout;
|
package/lib/constants.d.ts
CHANGED
|
@@ -76,7 +76,6 @@ export declare const APP_AUTH_TYPES: {
|
|
|
76
76
|
readonly STATIC: "static";
|
|
77
77
|
};
|
|
78
78
|
export declare const FEATURES: {
|
|
79
|
-
readonly UNIFIED_THEME_PREVIEW: "cms:react:unifiedThemePreview";
|
|
80
79
|
readonly UNIFIED_APPS: "Developers:UnifiedApps:PrivateBeta";
|
|
81
80
|
readonly SANDBOXES_V2: "sandboxes:v2:enabled";
|
|
82
81
|
readonly SANDBOXES_V2_CLI: "sandboxes:v2:cliEnabled";
|
|
@@ -125,3 +124,9 @@ export declare const CONFIG_LOCAL_STATE_FLAGS: {
|
|
|
125
124
|
};
|
|
126
125
|
export declare const EMPTY_PROJECT = "empty";
|
|
127
126
|
export declare const PROJECT_WITH_APP = "app";
|
|
127
|
+
export declare const LEGACY_SERVERLESS_FILE = "serverless.json";
|
|
128
|
+
export declare const LEGACY_PUBLIC_APP_FILE = "public-app.json";
|
|
129
|
+
export declare const LEGACY_PRIVATE_APP_FILE = "app.json";
|
|
130
|
+
export declare const THEME_FILE = "theme.json";
|
|
131
|
+
export declare const CMS_ASSETS_FILE = "cms-assets.json";
|
|
132
|
+
export declare const LEGACY_CONFIG_FILES: string[];
|
package/lib/constants.js
CHANGED
|
@@ -68,7 +68,6 @@ export const APP_AUTH_TYPES = {
|
|
|
68
68
|
STATIC: 'static',
|
|
69
69
|
};
|
|
70
70
|
export const FEATURES = {
|
|
71
|
-
UNIFIED_THEME_PREVIEW: 'cms:react:unifiedThemePreview',
|
|
72
71
|
UNIFIED_APPS: 'Developers:UnifiedApps:PrivateBeta',
|
|
73
72
|
SANDBOXES_V2: 'sandboxes:v2:enabled',
|
|
74
73
|
SANDBOXES_V2_CLI: 'sandboxes:v2:cliEnabled',
|
|
@@ -117,3 +116,13 @@ export const CONFIG_LOCAL_STATE_FLAGS = {
|
|
|
117
116
|
};
|
|
118
117
|
export const EMPTY_PROJECT = 'empty';
|
|
119
118
|
export const PROJECT_WITH_APP = 'app';
|
|
119
|
+
export const LEGACY_SERVERLESS_FILE = 'serverless.json';
|
|
120
|
+
export const LEGACY_PUBLIC_APP_FILE = 'public-app.json';
|
|
121
|
+
export const LEGACY_PRIVATE_APP_FILE = 'app.json';
|
|
122
|
+
export const THEME_FILE = 'theme.json';
|
|
123
|
+
export const CMS_ASSETS_FILE = 'cms-assets.json';
|
|
124
|
+
export const LEGACY_CONFIG_FILES = [
|
|
125
|
+
LEGACY_SERVERLESS_FILE,
|
|
126
|
+
LEGACY_PRIVATE_APP_FILE,
|
|
127
|
+
LEGACY_PUBLIC_APP_FILE,
|
|
128
|
+
];
|
|
@@ -4,16 +4,12 @@ import path from 'path';
|
|
|
4
4
|
import { exec as execAsync } from 'node:child_process';
|
|
5
5
|
import { walk } from '@hubspot/local-dev-lib/fs';
|
|
6
6
|
import { getProjectConfig } from './projects/config.js';
|
|
7
|
-
import {
|
|
8
|
-
import { i18n } from './lang.js';
|
|
7
|
+
import { commands } from '../lang/en.js';
|
|
9
8
|
import SpinniesManager from './ui/SpinniesManager.js';
|
|
10
9
|
import { isGloballyInstalled, executeInstall, DEFAULT_PACKAGE_MANAGER, } from './npm.js';
|
|
11
10
|
class NoPackageJsonFilesError extends Error {
|
|
12
11
|
constructor(projectName) {
|
|
13
|
-
super(
|
|
14
|
-
projectName,
|
|
15
|
-
link: uiLink('Learn how to create a project from scratch.', 'https://developers.hubspot.com/beta-docs/guides/crm/intro/create-a-project'),
|
|
16
|
-
}));
|
|
12
|
+
super(commands.project.installDeps.noPackageJsonInProject(projectName));
|
|
17
13
|
}
|
|
18
14
|
}
|
|
19
15
|
export async function installPackages({ packages, installLocations, }) {
|
|
@@ -28,31 +24,20 @@ async function installPackagesInDirectory(directory, packages) {
|
|
|
28
24
|
SpinniesManager.init();
|
|
29
25
|
SpinniesManager.add(spinner, {
|
|
30
26
|
text: packages && packages.length
|
|
31
|
-
?
|
|
32
|
-
|
|
33
|
-
directory: relativeDir,
|
|
34
|
-
})
|
|
35
|
-
: i18n(`commands.project.subcommands.installDeps.installingDependencies`, {
|
|
36
|
-
directory: relativeDir,
|
|
37
|
-
}),
|
|
27
|
+
? commands.project.installDeps.addingDependenciesToLocation(`[${packages.join(', ')}]`, relativeDir)
|
|
28
|
+
: commands.project.installDeps.installingDependencies(relativeDir),
|
|
38
29
|
});
|
|
39
30
|
try {
|
|
40
31
|
await executeInstall(packages, null, { cwd: directory });
|
|
41
32
|
SpinniesManager.succeed(spinner, {
|
|
42
|
-
text:
|
|
43
|
-
directory: relativeDir,
|
|
44
|
-
}),
|
|
33
|
+
text: commands.project.installDeps.installationSuccessful(relativeDir),
|
|
45
34
|
});
|
|
46
35
|
}
|
|
47
36
|
catch (e) {
|
|
48
37
|
SpinniesManager.fail(spinner, {
|
|
49
|
-
text:
|
|
50
|
-
directory: relativeDir,
|
|
51
|
-
}),
|
|
38
|
+
text: commands.project.installDeps.installingDependenciesFailed(relativeDir),
|
|
52
39
|
});
|
|
53
|
-
throw new Error(
|
|
54
|
-
directory: relativeDir,
|
|
55
|
-
}), {
|
|
40
|
+
throw new Error(commands.project.installDeps.installingDependenciesFailed(relativeDir), {
|
|
56
41
|
cause: e,
|
|
57
42
|
});
|
|
58
43
|
}
|
|
@@ -62,14 +47,11 @@ export async function getProjectPackageJsonLocations(dir) {
|
|
|
62
47
|
if (!projectConfig ||
|
|
63
48
|
!projectConfig.projectDir ||
|
|
64
49
|
!projectConfig.projectConfig) {
|
|
65
|
-
throw new Error(
|
|
50
|
+
throw new Error(commands.project.installDeps.noProjectConfig);
|
|
66
51
|
}
|
|
67
52
|
const { projectDir, projectConfig: { srcDir, name }, } = projectConfig;
|
|
68
53
|
if (!(await isGloballyInstalled(DEFAULT_PACKAGE_MANAGER))) {
|
|
69
|
-
throw new Error(
|
|
70
|
-
packageManager: DEFAULT_PACKAGE_MANAGER,
|
|
71
|
-
link: uiLink(DEFAULT_PACKAGE_MANAGER, 'https://docs.npmjs.com/downloading-and-installing-node-js-and-npm'),
|
|
72
|
-
}));
|
|
54
|
+
throw new Error(commands.project.installDeps.packageManagerNotInstalled(DEFAULT_PACKAGE_MANAGER));
|
|
73
55
|
}
|
|
74
56
|
if (!fs.existsSync(projectConfig.projectDir) ||
|
|
75
57
|
!fs.existsSync(path.join(projectDir, srcDir))) {
|
|
@@ -3,9 +3,9 @@ import { getAccountId, getConfigAccounts } from '@hubspot/local-dev-lib/config';
|
|
|
3
3
|
import { getAccountIdentifier } from '@hubspot/local-dev-lib/config/getAccountIdentifier';
|
|
4
4
|
import { fetchDeveloperTestAccounts } from '@hubspot/local-dev-lib/api/developerTestAccounts';
|
|
5
5
|
import { isMissingScopeError, isSpecifiedError, } from '@hubspot/local-dev-lib/errors/index';
|
|
6
|
-
import {
|
|
6
|
+
import { uiLogger } from './ui/logger.js';
|
|
7
7
|
import { getHubSpotWebsiteOrigin } from '@hubspot/local-dev-lib/urls';
|
|
8
|
-
import {
|
|
8
|
+
import { lib } from '../lang/en.js';
|
|
9
9
|
import { uiAccountDescription } from './ui/index.js';
|
|
10
10
|
import { logError } from './errorHandlers/index.js';
|
|
11
11
|
export function getHasDevTestAccounts(appDeveloperAccountConfig) {
|
|
@@ -39,42 +39,28 @@ export async function validateDevTestAccountUsageLimits(accountConfig) {
|
|
|
39
39
|
if (count >= limit) {
|
|
40
40
|
const hasDevTestAccounts = getHasDevTestAccounts(accountConfig);
|
|
41
41
|
if (hasDevTestAccounts) {
|
|
42
|
-
throw new Error(
|
|
43
|
-
accountName: accountConfig.name || accountId,
|
|
44
|
-
limit,
|
|
45
|
-
}));
|
|
42
|
+
throw new Error(lib.developerTestAccount.create.failure.alreadyInConfig(accountConfig.name || accountId, limit));
|
|
46
43
|
}
|
|
47
44
|
else {
|
|
48
|
-
throw new Error(
|
|
49
|
-
accountName: accountConfig.name || accountId,
|
|
50
|
-
limit,
|
|
51
|
-
}));
|
|
45
|
+
throw new Error(lib.developerTestAccount.create.failure.limit(accountConfig.name || accountId, limit));
|
|
52
46
|
}
|
|
53
47
|
}
|
|
54
48
|
return data;
|
|
55
49
|
}
|
|
56
50
|
export function handleDeveloperTestAccountCreateError(err, accountId, env, portalLimit) {
|
|
57
51
|
if (isMissingScopeError(err)) {
|
|
58
|
-
|
|
59
|
-
accountName: uiAccountDescription(accountId),
|
|
60
|
-
}));
|
|
52
|
+
uiLogger.error(lib.developerTestAccount.create.failure.scopes.message);
|
|
61
53
|
const websiteOrigin = getHubSpotWebsiteOrigin(env);
|
|
62
54
|
const url = `${websiteOrigin}/personal-access-key/${accountId}`;
|
|
63
|
-
|
|
64
|
-
accountName: uiAccountDescription(accountId),
|
|
65
|
-
url,
|
|
66
|
-
}));
|
|
55
|
+
uiLogger.info(lib.developerTestAccount.create.failure.scopes.instructions(uiAccountDescription(accountId), url));
|
|
67
56
|
}
|
|
68
57
|
else if (isSpecifiedError(err, {
|
|
69
58
|
statusCode: 400,
|
|
70
59
|
errorType: 'TEST_PORTAL_LIMIT_REACHED',
|
|
71
60
|
})) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
limit: portalLimit,
|
|
76
|
-
}));
|
|
77
|
-
logger.log('');
|
|
61
|
+
uiLogger.log('');
|
|
62
|
+
uiLogger.error(lib.developerTestAccount.create.failure.limit(uiAccountDescription(accountId), portalLimit));
|
|
63
|
+
uiLogger.log('');
|
|
78
64
|
}
|
|
79
65
|
else {
|
|
80
66
|
logError(err);
|
package/lib/doctor/Diagnosis.js
CHANGED
|
@@ -3,7 +3,7 @@ import chalk from 'chalk';
|
|
|
3
3
|
import { helpers } from '../interpolation.js';
|
|
4
4
|
import { uiAccountDescription } from '../ui/index.js';
|
|
5
5
|
import { indent } from '../ui/index.js';
|
|
6
|
-
import {
|
|
6
|
+
import { lib } from '../../lang/en.js';
|
|
7
7
|
export class Diagnosis {
|
|
8
8
|
prefixes;
|
|
9
9
|
diagnosis;
|
|
@@ -18,38 +18,30 @@ export class Diagnosis {
|
|
|
18
18
|
};
|
|
19
19
|
this.diagnosis = {
|
|
20
20
|
cli: {
|
|
21
|
-
header:
|
|
21
|
+
header: lib.doctor.diagnosis.cli.header,
|
|
22
22
|
sections: [],
|
|
23
23
|
},
|
|
24
24
|
cliConfig: {
|
|
25
|
-
header:
|
|
25
|
+
header: lib.doctor.diagnosis.cliConfig.header,
|
|
26
26
|
sections: [],
|
|
27
27
|
},
|
|
28
28
|
defaultAccountOverrideFile: {
|
|
29
|
-
header:
|
|
29
|
+
header: lib.doctor.diagnosis.defaultAccountOverrideFile.header,
|
|
30
30
|
sections: [],
|
|
31
31
|
},
|
|
32
32
|
project: {
|
|
33
|
-
header:
|
|
33
|
+
header: lib.doctor.diagnosis.projectConfig.header,
|
|
34
34
|
subheaders: [
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}),
|
|
38
|
-
i18n(`lib.doctor.diagnosis.projectConfig.projectNameSubHeader`, {
|
|
39
|
-
projectName: diagnosticInfo.project?.config?.projectConfig?.name,
|
|
40
|
-
}),
|
|
35
|
+
lib.doctor.diagnosis.projectConfig.projectDirSubHeader(diagnosticInfo.project?.config?.projectDir || ''),
|
|
36
|
+
lib.doctor.diagnosis.projectConfig.projectNameSubHeader(diagnosticInfo.project?.config?.projectConfig?.name || ''),
|
|
41
37
|
],
|
|
42
38
|
sections: [],
|
|
43
39
|
},
|
|
44
40
|
};
|
|
45
41
|
if (diagnosticInfo.config) {
|
|
46
42
|
this.diagnosis.cliConfig.subheaders = [
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}),
|
|
50
|
-
i18n(`lib.doctor.diagnosis.cliConfig.defaultAccountSubHeader`, {
|
|
51
|
-
accountDetails: uiAccountDescription(accountId),
|
|
52
|
-
}),
|
|
43
|
+
lib.doctor.diagnosis.cliConfig.configFileSubHeader(diagnosticInfo.config),
|
|
44
|
+
lib.doctor.diagnosis.cliConfig.defaultAccountSubHeader(uiAccountDescription(accountId)),
|
|
53
45
|
];
|
|
54
46
|
}
|
|
55
47
|
}
|
|
@@ -83,12 +75,8 @@ export class Diagnosis {
|
|
|
83
75
|
return '';
|
|
84
76
|
}
|
|
85
77
|
output.push('');
|
|
86
|
-
output.push(
|
|
87
|
-
|
|
88
|
-
}));
|
|
89
|
-
output.push(i18n(`lib.doctor.diagnosis.counts.warnings`, {
|
|
90
|
-
count: this.warningCount,
|
|
91
|
-
}));
|
|
78
|
+
output.push(lib.doctor.diagnosis.counts.errors(this.errorCount));
|
|
79
|
+
output.push(lib.doctor.diagnosis.counts.warnings(this.warningCount));
|
|
92
80
|
output.push('');
|
|
93
81
|
return output.join('\n');
|
|
94
82
|
}
|