@hubspot/cli 6.4.0 → 7.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.js +110 -16
- package/bin/hs +2 -0
- package/bin/hscms +2 -0
- package/bin/silenceErrors.d.ts +2 -0
- package/bin/silenceErrors.js +12 -0
- package/commands/{accounts → account}/clean.js +10 -11
- package/commands/{accounts → account}/info.js +10 -16
- package/commands/{accounts → account}/list.js +16 -16
- package/commands/{accounts → account}/remove.js +12 -15
- package/commands/{accounts → account}/rename.js +4 -7
- package/commands/{accounts → account}/use.js +8 -14
- package/commands/account.js +26 -0
- package/commands/auth.js +30 -24
- package/commands/cms/getReactModule.js +70 -0
- package/commands/cms/lighthouseScore.js +19 -21
- package/commands/cms.js +4 -3
- package/commands/completion.js +22 -0
- package/commands/config/set.js +22 -24
- package/commands/config.js +2 -2
- package/commands/create.js +6 -3
- package/commands/customObject/create.js +19 -15
- package/commands/customObject/schema/create.js +15 -16
- package/commands/customObject/schema/delete.js +29 -11
- package/commands/customObject/schema/fetch-all.js +14 -11
- package/commands/customObject/schema/fetch.js +22 -14
- package/commands/customObject/schema/list.js +3 -6
- package/commands/customObject/schema/update.js +28 -18
- package/commands/customObject/schema.js +1 -1
- package/commands/customObject.js +3 -4
- package/commands/doctor.js +4 -2
- package/commands/feedback.js +2 -0
- package/commands/fetch.js +13 -13
- package/commands/filemanager/fetch.js +6 -7
- package/commands/filemanager/upload.js +10 -12
- package/commands/filemanager.js +1 -8
- package/commands/{functions → function}/deploy.js +13 -13
- package/commands/{functions → function}/list.js +7 -9
- package/commands/{functions → function}/server.js +5 -8
- package/commands/function.js +16 -0
- package/commands/hubdb/clear.js +14 -10
- package/commands/hubdb/create.js +37 -13
- package/commands/hubdb/delete.js +31 -10
- package/commands/hubdb/fetch.js +14 -9
- package/commands/hubdb.js +2 -3
- package/commands/init.js +37 -14
- package/commands/lint.js +6 -7
- package/commands/list.js +5 -7
- package/commands/logs.js +24 -15
- package/commands/module/marketplace-validate.js +6 -9
- package/commands/module.js +2 -1
- package/commands/mv.js +11 -13
- package/commands/open.js +11 -10
- package/commands/project/add.js +2 -5
- package/commands/project/cloneApp.js +28 -32
- package/commands/project/create.js +8 -10
- package/commands/project/deploy.js +19 -16
- package/commands/project/dev.js +17 -18
- package/commands/project/download.js +18 -15
- package/commands/project/listBuilds.js +36 -32
- package/commands/project/logs.js +6 -8
- package/commands/project/migrateApp.js +27 -27
- package/commands/project/open.js +9 -11
- package/commands/project/upload.js +30 -32
- package/commands/project/watch.js +17 -24
- package/commands/project.js +3 -4
- package/commands/remove.js +14 -13
- package/commands/sandbox/create.js +12 -15
- package/commands/sandbox/delete.js +19 -20
- package/commands/sandbox.js +4 -8
- package/commands/{secrets → secret}/addSecret.js +25 -12
- package/commands/secret/deleteSecret.js +71 -0
- package/commands/{secrets → secret}/listSecrets.js +7 -9
- package/commands/{secrets → secret}/updateSecret.js +21 -13
- package/commands/secret.js +22 -0
- package/commands/theme/generate-selectors.js +8 -8
- package/commands/theme/marketplace-validate.js +10 -13
- package/commands/theme/preview.js +7 -10
- package/commands/theme.js +3 -1
- package/commands/upload.js +32 -26
- package/commands/watch.js +19 -20
- package/lang/en.lyaml +200 -126
- package/lib/DevServerManager.js +1 -1
- package/lib/LocalDevManager.js +4 -4
- package/lib/buildAccount.js +5 -11
- package/lib/commonOpts.d.ts +15 -6
- package/lib/commonOpts.js +53 -39
- package/lib/configOptions.d.ts +13 -1
- package/lib/configOptions.js +54 -57
- package/lib/constants.d.ts +1 -4
- package/lib/dependencyManagement.d.ts +4 -1
- package/lib/dependencyManagement.js +2 -2
- package/lib/developerTestAccounts.d.ts +5 -1
- package/lib/developerTestAccounts.js +45 -39
- package/lib/doctor/DiagnosticInfoBuilder.js +8 -4
- package/lib/doctor/Doctor.js +11 -6
- package/lib/generateSelectors.d.ts +19 -0
- package/lib/generateSelectors.js +23 -23
- package/lib/localDev.js +3 -2
- package/lib/marketplaceValidate.d.ts +6 -1
- package/lib/marketplaceValidate.js +76 -77
- package/lib/oauth.d.ts +2 -1
- package/lib/oauth.js +49 -37
- package/lib/polling.d.ts +8 -0
- package/lib/polling.js +9 -12
- package/lib/projects/ProjectLogsManager.d.ts +20 -0
- package/lib/projects/ProjectLogsManager.js +105 -0
- package/lib/projects/buildAndDeploy.d.ts +16 -0
- package/lib/projects/buildAndDeploy.js +342 -0
- package/lib/projects/index.d.ts +24 -0
- package/lib/projects/index.js +256 -0
- package/lib/projects/structure.d.ts +78 -0
- package/lib/projects/structure.js +151 -0
- package/lib/projects/upload.d.ts +8 -0
- package/lib/projects/upload.js +107 -0
- package/lib/projects/urls.d.ts +4 -0
- package/lib/projects/urls.js +27 -0
- package/lib/{projectsWatch.js → projects/watch.js} +3 -3
- package/lib/prompts/accountNamePrompt.d.ts +11 -0
- package/lib/prompts/accountNamePrompt.js +45 -46
- package/lib/prompts/accountsPrompt.d.ts +1 -1
- package/lib/prompts/accountsPrompt.js +21 -19
- package/lib/prompts/cmsFieldPrompt.d.ts +1 -1
- package/lib/prompts/cmsFieldPrompt.js +23 -24
- package/lib/prompts/createApiSamplePrompt.d.ts +17 -0
- package/lib/prompts/createApiSamplePrompt.js +47 -44
- package/lib/prompts/createFunctionPrompt.d.ts +7 -0
- package/lib/prompts/createFunctionPrompt.js +17 -20
- package/lib/prompts/createModulePrompt.d.ts +8 -0
- package/lib/prompts/createModulePrompt.js +29 -17
- package/lib/prompts/createProjectPrompt.d.ts +13 -0
- package/lib/prompts/createProjectPrompt.js +48 -49
- package/lib/prompts/createTemplatePrompt.d.ts +8 -0
- package/lib/prompts/createTemplatePrompt.js +15 -17
- package/lib/prompts/downloadProjectPrompt.d.ts +8 -0
- package/lib/prompts/downloadProjectPrompt.js +25 -23
- package/lib/prompts/installPublicAppPrompt.d.ts +1 -1
- package/lib/prompts/installPublicAppPrompt.js +21 -19
- package/lib/prompts/personalAccessKeyPrompt.d.ts +28 -0
- package/lib/prompts/personalAccessKeyPrompt.js +46 -52
- package/lib/prompts/previewPrompt.d.ts +14 -0
- package/lib/prompts/previewPrompt.js +24 -24
- package/lib/prompts/projectAddPrompt.d.ts +9 -0
- package/lib/prompts/projectAddPrompt.js +11 -14
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +6 -1
- package/lib/prompts/projectDevTargetAccountPrompt.js +87 -69
- package/lib/prompts/projectsLogsPrompt.d.ts +11 -0
- package/lib/prompts/projectsLogsPrompt.js +8 -11
- package/lib/prompts/promptUtils.d.ts +7 -6
- package/lib/prompts/promptUtils.js +21 -8
- package/lib/prompts/sandboxesPrompt.d.ts +8 -0
- package/lib/prompts/sandboxesPrompt.js +43 -45
- package/lib/prompts/secretPrompt.d.ts +12 -0
- package/lib/prompts/secretPrompt.js +32 -19
- package/lib/prompts/selectHubDBTablePrompt.d.ts +12 -0
- package/lib/prompts/selectHubDBTablePrompt.js +69 -0
- package/lib/prompts/selectPublicAppPrompt.d.ts +8 -0
- package/lib/prompts/selectPublicAppPrompt.js +28 -27
- package/lib/prompts/setAsDefaultAccountPrompt.d.ts +1 -1
- package/lib/prompts/setAsDefaultAccountPrompt.js +12 -14
- package/lib/prompts/uploadPrompt.d.ts +8 -0
- package/lib/prompts/uploadPrompt.js +18 -18
- package/lib/sandboxSync.js +5 -2
- package/lib/sandboxes.js +12 -7
- package/lib/ui/index.d.ts +1 -1
- package/lib/ui/index.js +1 -1
- package/lib/usageTracking.d.ts +21 -2
- package/lib/usageTracking.js +53 -81
- package/lib/validation.d.ts +11 -1
- package/lib/validation.js +98 -91
- package/package.json +12 -6
- package/types/Projects.d.ts +43 -0
- package/types/Projects.js +2 -0
- package/types/Prompts.d.ts +25 -0
- package/types/Prompts.js +2 -0
- package/commands/accounts.js +0 -30
- package/commands/cms/reactModules.js +0 -60
- package/commands/functions.js +0 -24
- package/commands/secrets/deleteSecret.js +0 -46
- package/commands/secrets.js +0 -23
- package/lib/ProjectLogsManager.js +0 -91
- package/lib/projectStructure.js +0 -116
- package/lib/projects.d.ts +0 -4
- package/lib/projects.js +0 -681
- package/lib/projectsWatch.d.ts +0 -1
- package/lib/prompts/cleanUploadPrompt.d.ts +0 -1
- package/lib/prompts/cleanUploadPrompt.js +0 -20
- /package/commands/{accounts → account}/clean.d.ts +0 -0
- /package/commands/{accounts → account}/info.d.ts +0 -0
- /package/commands/{accounts → account}/list.d.ts +0 -0
- /package/commands/{accounts → account}/remove.d.ts +0 -0
- /package/commands/{accounts → account}/rename.d.ts +0 -0
- /package/commands/{accounts → account}/use.d.ts +0 -0
- /package/commands/{accounts.d.ts → account.d.ts} +0 -0
- /package/commands/cms/{reactModules.d.ts → getReactModule.d.ts} +0 -0
- /package/commands/{functions.d.ts → completion.d.ts} +0 -0
- /package/commands/{functions/list.d.ts → function/deploy.d.ts} +0 -0
- /package/commands/{functions/server.d.ts → function/list.d.ts} +0 -0
- /package/commands/{secrets.d.ts → function/server.d.ts} +0 -0
- /package/commands/{functions/deploy.d.ts → function.d.ts} +0 -0
- /package/commands/{secrets/deleteSecret.d.ts → secret/addSecret.d.ts} +0 -0
- /package/commands/{secrets/listSecrets.d.ts → secret/deleteSecret.d.ts} +0 -0
- /package/commands/{secrets/updateSecret.d.ts → secret/listSecrets.d.ts} +0 -0
- /package/{lib/ProjectLogsManager.d.ts → commands/secret/updateSecret.d.ts} +0 -0
- /package/commands/{secrets/addSecret.d.ts → secret.d.ts} +0 -0
- /package/lib/{projectStructure.d.ts → projects/watch.d.ts} +0 -0
package/commands/logs.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
|
-
const { addAccountOptions, addConfigOptions,
|
|
4
|
+
const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, addGlobalOptions, } = require('../lib/commonOpts');
|
|
5
5
|
const { trackCommandUsage } = require('../lib/usageTracking');
|
|
6
6
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
7
7
|
const { outputLogs } = require('../lib/ui/serverlessFunctionLogs');
|
|
8
8
|
const { getFunctionLogs, getLatestFunctionLog, } = require('@hubspot/local-dev-lib/api/functions');
|
|
9
9
|
const { tailLogs } = require('../lib/serverlessLogs');
|
|
10
|
-
const { loadAndValidateOptions } = require('../lib/validation');
|
|
11
10
|
const { i18n } = require('../lib/lang');
|
|
11
|
+
const { promptUser } = require('../lib/prompts/promptUtils');
|
|
12
12
|
const { EXIT_CODES } = require('../lib/enums/exitCodes');
|
|
13
13
|
const { isHubSpotHttpError } = require('@hubspot/local-dev-lib/errors/index');
|
|
14
14
|
const i18nKey = 'commands.logs';
|
|
@@ -20,8 +20,15 @@ const handleLogsError = (e, accountId, functionPath) => {
|
|
|
20
20
|
}));
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
|
-
const endpointLog = async (accountId, options) => {
|
|
24
|
-
const { latest, follow, compact
|
|
23
|
+
const endpointLog = async (accountId, functionPath, options) => {
|
|
24
|
+
const { limit, latest, follow, compact } = options;
|
|
25
|
+
const requestOptions = {
|
|
26
|
+
limit,
|
|
27
|
+
latest,
|
|
28
|
+
follow,
|
|
29
|
+
compact,
|
|
30
|
+
endpoint: functionPath,
|
|
31
|
+
};
|
|
25
32
|
logger.debug(i18n(`${i18nKey}.gettingLogs`, {
|
|
26
33
|
latest,
|
|
27
34
|
functionPath,
|
|
@@ -57,7 +64,7 @@ const endpointLog = async (accountId, options) => {
|
|
|
57
64
|
}
|
|
58
65
|
else {
|
|
59
66
|
try {
|
|
60
|
-
const { data } = await getFunctionLogs(accountId, functionPath,
|
|
67
|
+
const { data } = await getFunctionLogs(accountId, functionPath, requestOptions);
|
|
61
68
|
logsResp = data;
|
|
62
69
|
}
|
|
63
70
|
catch (e) {
|
|
@@ -66,17 +73,20 @@ const endpointLog = async (accountId, options) => {
|
|
|
66
73
|
}
|
|
67
74
|
}
|
|
68
75
|
if (logsResp) {
|
|
69
|
-
return outputLogs(logsResp,
|
|
76
|
+
return outputLogs(logsResp, requestOptions);
|
|
70
77
|
}
|
|
71
78
|
};
|
|
72
79
|
exports.command = 'logs [endpoint]';
|
|
73
80
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
74
81
|
exports.handler = async (options) => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const
|
|
78
|
-
|
|
79
|
-
|
|
82
|
+
const { endpoint: endpointArgValue, latest, derivedAccountId } = options;
|
|
83
|
+
trackCommandUsage('logs', { latest }, derivedAccountId);
|
|
84
|
+
const { endpointPromptValue } = await promptUser({
|
|
85
|
+
name: 'endpointPromptValue',
|
|
86
|
+
message: i18n(`${i18nKey}.endpointPrompt`),
|
|
87
|
+
when: !endpointArgValue,
|
|
88
|
+
});
|
|
89
|
+
endpointLog(derivedAccountId, endpointArgValue || endpointPromptValue, options);
|
|
80
90
|
};
|
|
81
91
|
exports.builder = yargs => {
|
|
82
92
|
yargs.positional('endpoint', {
|
|
@@ -95,18 +105,16 @@ exports.builder = yargs => {
|
|
|
95
105
|
type: 'boolean',
|
|
96
106
|
},
|
|
97
107
|
follow: {
|
|
98
|
-
alias: ['
|
|
108
|
+
alias: ['f'],
|
|
99
109
|
describe: i18n(`${i18nKey}.options.follow.describe`),
|
|
100
110
|
type: 'boolean',
|
|
101
111
|
},
|
|
102
112
|
limit: {
|
|
103
|
-
alias: ['limit', 'n', 'max-count'],
|
|
104
113
|
describe: i18n(`${i18nKey}.options.limit.describe`),
|
|
105
114
|
type: 'number',
|
|
106
115
|
},
|
|
107
116
|
})
|
|
108
|
-
.conflicts('follow', 'limit')
|
|
109
|
-
.conflicts('functionName', 'endpoint');
|
|
117
|
+
.conflicts('follow', 'limit');
|
|
110
118
|
yargs.example([
|
|
111
119
|
['$0 logs my-endpoint', i18n(`${i18nKey}.examples.default`)],
|
|
112
120
|
['$0 logs my-endpoint --limit=10', i18n(`${i18nKey}.examples.limit`)],
|
|
@@ -115,5 +123,6 @@ exports.builder = yargs => {
|
|
|
115
123
|
addConfigOptions(yargs);
|
|
116
124
|
addAccountOptions(yargs);
|
|
117
125
|
addUseEnvironmentOptions(yargs);
|
|
126
|
+
addGlobalOptions(yargs);
|
|
118
127
|
return yargs;
|
|
119
128
|
};
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
const SpinniesManager = require('../../lib/ui/SpinniesManager');
|
|
5
|
-
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions,
|
|
6
|
-
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
5
|
+
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
|
|
7
6
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
8
7
|
const { kickOffValidation, pollForValidationFinish, fetchValidationResults, processValidationErrors, displayValidationResults, } = require('../../lib/marketplaceValidate');
|
|
9
8
|
const { i18n } = require('../../lib/lang');
|
|
@@ -11,10 +10,8 @@ const i18nKey = 'commands.module.subcommands.marketplaceValidate';
|
|
|
11
10
|
exports.command = 'marketplace-validate <src>';
|
|
12
11
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
13
12
|
exports.handler = async (options) => {
|
|
14
|
-
const { src } = options;
|
|
15
|
-
|
|
16
|
-
const accountId = getAccountId(options);
|
|
17
|
-
trackCommandUsage('validate', null, accountId);
|
|
13
|
+
const { src, derivedAccountId } = options;
|
|
14
|
+
trackCommandUsage('validate', null, derivedAccountId);
|
|
18
15
|
SpinniesManager.init();
|
|
19
16
|
SpinniesManager.add('marketplaceValidation', {
|
|
20
17
|
text: i18n(`${i18nKey}.logs.validatingModule`, {
|
|
@@ -22,10 +19,10 @@ exports.handler = async (options) => {
|
|
|
22
19
|
}),
|
|
23
20
|
});
|
|
24
21
|
const assetType = 'MODULE';
|
|
25
|
-
const validationId = await kickOffValidation(
|
|
26
|
-
await pollForValidationFinish(
|
|
22
|
+
const validationId = await kickOffValidation(derivedAccountId, assetType, src);
|
|
23
|
+
await pollForValidationFinish(derivedAccountId, validationId);
|
|
27
24
|
SpinniesManager.remove('marketplaceValidation');
|
|
28
|
-
const validationResults = await fetchValidationResults(
|
|
25
|
+
const validationResults = await fetchValidationResults(derivedAccountId, validationId);
|
|
29
26
|
processValidationErrors(i18nKey, validationResults);
|
|
30
27
|
displayValidationResults(i18nKey, validationResults);
|
|
31
28
|
process.exit();
|
package/commands/module.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
const marketplaceValidate = require('./module/marketplace-validate');
|
|
5
|
-
const { addConfigOptions, addAccountOptions } = require('../lib/commonOpts');
|
|
5
|
+
const { addConfigOptions, addAccountOptions, addGlobalOptions, } = require('../lib/commonOpts');
|
|
6
6
|
// const { i18n } = require('../lib/lang');
|
|
7
7
|
// const i18nKey = 'commands.module';
|
|
8
8
|
exports.command = 'module';
|
|
@@ -10,6 +10,7 @@ exports.describe = false; //i18n(`${i18nKey}.describe`);
|
|
|
10
10
|
exports.builder = yargs => {
|
|
11
11
|
addConfigOptions(yargs);
|
|
12
12
|
addAccountOptions(yargs);
|
|
13
|
+
addGlobalOptions(yargs);
|
|
13
14
|
yargs.command(marketplaceValidate).demandCommand(1, '');
|
|
14
15
|
return yargs;
|
|
15
16
|
};
|
package/commands/mv.js
CHANGED
|
@@ -5,10 +5,9 @@ const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
|
5
5
|
const { moveFile } = require('@hubspot/local-dev-lib/api/fileMapper');
|
|
6
6
|
const { isSpecifiedError } = require('@hubspot/local-dev-lib/errors/index');
|
|
7
7
|
const { logError, ApiErrorContext } = require('../lib/errorHandlers/index');
|
|
8
|
-
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions,
|
|
8
|
+
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, addGlobalOptions, } = require('../lib/commonOpts');
|
|
9
9
|
const { trackCommandUsage } = require('../lib/usageTracking');
|
|
10
10
|
const { isPathFolder } = require('../lib/filesystem');
|
|
11
|
-
const { loadAndValidateOptions } = require('../lib/validation');
|
|
12
11
|
const { i18n } = require('../lib/lang');
|
|
13
12
|
const { uiBetaTag } = require('../lib/ui');
|
|
14
13
|
const i18nKey = 'commands.mv';
|
|
@@ -22,21 +21,19 @@ const getCorrectedDestPath = (srcPath, destPath) => {
|
|
|
22
21
|
exports.command = 'mv <srcPath> <destPath>';
|
|
23
22
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
24
23
|
exports.handler = async (options) => {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const accountId = getAccountId(options);
|
|
28
|
-
trackCommandUsage('mv', null, accountId);
|
|
24
|
+
const { srcPath, destPath, derivedAccountId } = options;
|
|
25
|
+
trackCommandUsage('mv', null, derivedAccountId);
|
|
29
26
|
try {
|
|
30
|
-
await moveFile(
|
|
27
|
+
await moveFile(derivedAccountId, srcPath, getCorrectedDestPath(srcPath, destPath));
|
|
31
28
|
logger.success(i18n(`${i18nKey}.move`, {
|
|
32
|
-
accountId,
|
|
29
|
+
accountId: derivedAccountId,
|
|
33
30
|
destPath,
|
|
34
31
|
srcPath,
|
|
35
32
|
}));
|
|
36
33
|
}
|
|
37
34
|
catch (error) {
|
|
38
35
|
logger.error(i18n(`${i18nKey}.errors.moveFailed`, {
|
|
39
|
-
accountId,
|
|
36
|
+
accountId: derivedAccountId,
|
|
40
37
|
destPath,
|
|
41
38
|
srcPath,
|
|
42
39
|
}));
|
|
@@ -48,7 +45,7 @@ exports.handler = async (options) => {
|
|
|
48
45
|
}
|
|
49
46
|
else {
|
|
50
47
|
logError(error, new ApiErrorContext({
|
|
51
|
-
accountId,
|
|
48
|
+
accountId: derivedAccountId,
|
|
52
49
|
srcPath,
|
|
53
50
|
destPath,
|
|
54
51
|
}));
|
|
@@ -56,9 +53,6 @@ exports.handler = async (options) => {
|
|
|
56
53
|
}
|
|
57
54
|
};
|
|
58
55
|
exports.builder = yargs => {
|
|
59
|
-
addConfigOptions(yargs);
|
|
60
|
-
addAccountOptions(yargs);
|
|
61
|
-
addUseEnvironmentOptions(yargs);
|
|
62
56
|
yargs.positional('srcPath', {
|
|
63
57
|
describe: 'Remote hubspot path',
|
|
64
58
|
type: 'string',
|
|
@@ -67,5 +61,9 @@ exports.builder = yargs => {
|
|
|
67
61
|
describe: 'Remote hubspot path',
|
|
68
62
|
type: 'string',
|
|
69
63
|
});
|
|
64
|
+
addConfigOptions(yargs);
|
|
65
|
+
addAccountOptions(yargs);
|
|
66
|
+
addUseEnvironmentOptions(yargs);
|
|
67
|
+
addGlobalOptions(yargs);
|
|
70
68
|
return yargs;
|
|
71
69
|
};
|
package/commands/open.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
|
-
const
|
|
4
|
+
const exitCodes_1 = require("../lib/enums/exitCodes");
|
|
5
|
+
const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, addGlobalOptions, } = require('../lib/commonOpts');
|
|
5
6
|
const { trackCommandUsage } = require('../lib/usageTracking');
|
|
6
7
|
const { logSiteLinks, getSiteLinksAsArray, openLink } = require('../lib/links');
|
|
7
8
|
const { promptUser } = require('../lib/prompts/promptUtils');
|
|
@@ -22,20 +23,19 @@ const createListPrompt = async (accountId) => promptUser([
|
|
|
22
23
|
exports.command = 'open [shortcut]';
|
|
23
24
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
24
25
|
exports.handler = async (options) => {
|
|
25
|
-
const { shortcut, list } = options;
|
|
26
|
-
|
|
27
|
-
trackCommandUsage('open', null, accountId);
|
|
26
|
+
const { shortcut, list, derivedAccountId } = options;
|
|
27
|
+
trackCommandUsage('open', null, derivedAccountId);
|
|
28
28
|
if (shortcut === undefined && !list) {
|
|
29
|
-
const choice = await createListPrompt(
|
|
30
|
-
openLink(
|
|
29
|
+
const choice = await createListPrompt(derivedAccountId);
|
|
30
|
+
openLink(derivedAccountId, choice.open);
|
|
31
31
|
}
|
|
32
|
-
else if (list
|
|
33
|
-
logSiteLinks(
|
|
34
|
-
return;
|
|
32
|
+
else if (list) {
|
|
33
|
+
logSiteLinks(derivedAccountId);
|
|
35
34
|
}
|
|
36
35
|
else {
|
|
37
|
-
openLink(
|
|
36
|
+
openLink(derivedAccountId, shortcut);
|
|
38
37
|
}
|
|
38
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
39
39
|
};
|
|
40
40
|
exports.builder = yargs => {
|
|
41
41
|
yargs.positional('[shortcut]', {
|
|
@@ -57,5 +57,6 @@ exports.builder = yargs => {
|
|
|
57
57
|
addConfigOptions(yargs);
|
|
58
58
|
addAccountOptions(yargs);
|
|
59
59
|
addUseEnvironmentOptions(yargs);
|
|
60
|
+
addGlobalOptions(yargs);
|
|
60
61
|
return yargs;
|
|
61
62
|
};
|
package/commands/project/add.js
CHANGED
|
@@ -2,25 +2,22 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
5
|
-
const { getAccountId } = require('@hubspot/local-dev-lib/config');
|
|
6
5
|
const { logError } = require('../../lib/errorHandlers/index');
|
|
7
6
|
const { fetchReleaseData } = require('@hubspot/local-dev-lib/github');
|
|
8
7
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
9
8
|
const { i18n } = require('../../lib/lang');
|
|
10
9
|
const { projectAddPrompt } = require('../../lib/prompts/projectAddPrompt');
|
|
11
10
|
const { createProjectComponent, getProjectComponentsByVersion, } = require('../../lib/projects');
|
|
12
|
-
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
13
11
|
const { uiBetaTag } = require('../../lib/ui');
|
|
14
12
|
const { HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, } = require('../../lib/constants');
|
|
15
13
|
const i18nKey = 'commands.project.subcommands.add';
|
|
16
14
|
exports.command = 'add';
|
|
17
15
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
18
16
|
exports.handler = async (options) => {
|
|
19
|
-
|
|
17
|
+
const { derivedAccountId } = options;
|
|
20
18
|
logger.log('');
|
|
21
19
|
logger.log(i18n(`${i18nKey}.creatingComponent.message`));
|
|
22
20
|
logger.log('');
|
|
23
|
-
const accountId = getAccountId(options);
|
|
24
21
|
const releaseData = await fetchReleaseData(HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH);
|
|
25
22
|
const projectComponentsVersion = releaseData.tag_name;
|
|
26
23
|
const components = await getProjectComponentsByVersion(projectComponentsVersion);
|
|
@@ -29,7 +26,7 @@ exports.handler = async (options) => {
|
|
|
29
26
|
if (!component) {
|
|
30
27
|
component = components.find(t => t.path === options.type);
|
|
31
28
|
}
|
|
32
|
-
trackCommandUsage('project-add', null,
|
|
29
|
+
trackCommandUsage('project-add', null, derivedAccountId);
|
|
33
30
|
try {
|
|
34
31
|
await createProjectComponent(component, name, projectComponentsVersion);
|
|
35
32
|
logger.log('');
|
|
@@ -3,9 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
const path = require('path');
|
|
5
5
|
const fs = require('fs');
|
|
6
|
-
const { addAccountOptions, addConfigOptions,
|
|
6
|
+
const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
|
|
7
7
|
const { trackCommandUsage, trackCommandMetadataUsage, } = require('../../lib/usageTracking');
|
|
8
|
-
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
9
8
|
const { i18n } = require('../../lib/lang');
|
|
10
9
|
const { selectPublicAppPrompt, } = require('../../lib/prompts/selectPublicAppPrompt');
|
|
11
10
|
const { createProjectPrompt, } = require('../../lib/prompts/createProjectPrompt');
|
|
@@ -26,11 +25,10 @@ const i18nKey = 'commands.project.subcommands.cloneApp';
|
|
|
26
25
|
exports.command = 'clone-app';
|
|
27
26
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
28
27
|
exports.handler = async (options) => {
|
|
29
|
-
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
trackCommandUsage('clone-app', {}, accountId);
|
|
28
|
+
const { derivedAccountId } = options;
|
|
29
|
+
const accountConfig = getAccountConfig(derivedAccountId);
|
|
30
|
+
const accountName = uiAccountDescription(derivedAccountId);
|
|
31
|
+
trackCommandUsage('clone-app', {}, derivedAccountId);
|
|
34
32
|
if (!isAppDeveloperAccount(accountConfig)) {
|
|
35
33
|
uiLine();
|
|
36
34
|
logger.error(i18n(`${i18nKey}.errors.invalidAccountTypeTitle`));
|
|
@@ -42,58 +40,54 @@ exports.handler = async (options) => {
|
|
|
42
40
|
process.exit(EXIT_CODES.SUCCESS);
|
|
43
41
|
}
|
|
44
42
|
let appId;
|
|
45
|
-
let
|
|
46
|
-
let
|
|
43
|
+
let projectName;
|
|
44
|
+
let projectDest;
|
|
47
45
|
try {
|
|
48
46
|
appId = options.appId;
|
|
49
47
|
if (!appId) {
|
|
50
48
|
const appIdResponse = await selectPublicAppPrompt({
|
|
51
|
-
accountId,
|
|
49
|
+
accountId: derivedAccountId,
|
|
52
50
|
accountName,
|
|
53
51
|
options,
|
|
54
52
|
isMigratingApp: false,
|
|
55
53
|
});
|
|
56
54
|
appId = appIdResponse.appId;
|
|
57
55
|
}
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
const { name, dest } = await createProjectPrompt('', options, true);
|
|
57
|
+
projectName = name;
|
|
58
|
+
projectDest = options.dest || dest;
|
|
61
59
|
}
|
|
62
60
|
catch (error) {
|
|
63
|
-
logError(error, new ApiErrorContext({ accountId }));
|
|
61
|
+
logError(error, new ApiErrorContext({ accountId: derivedAccountId }));
|
|
64
62
|
process.exit(EXIT_CODES.ERROR);
|
|
65
63
|
}
|
|
64
|
+
await trackCommandMetadataUsage('clone-app', { status: 'STARTED' }, derivedAccountId);
|
|
66
65
|
try {
|
|
67
66
|
SpinniesManager.init();
|
|
68
67
|
SpinniesManager.add('cloneApp', {
|
|
69
68
|
text: i18n(`${i18nKey}.cloneStatus.inProgress`),
|
|
70
69
|
});
|
|
71
|
-
const { data: { exportId }, } = await cloneApp(
|
|
72
|
-
const { status } = await poll(checkCloneStatus,
|
|
70
|
+
const { data: { exportId }, } = await cloneApp(derivedAccountId, appId);
|
|
71
|
+
const { status } = await poll(checkCloneStatus, derivedAccountId, exportId);
|
|
73
72
|
if (status === 'SUCCESS') {
|
|
74
73
|
// Ensure correct project folder structure exists
|
|
75
|
-
const baseDestPath = path.resolve(getCwd(),
|
|
74
|
+
const baseDestPath = path.resolve(getCwd(), projectDest);
|
|
76
75
|
const absoluteDestPath = path.resolve(baseDestPath, 'src', 'app');
|
|
77
76
|
fs.mkdirSync(absoluteDestPath, { recursive: true });
|
|
78
77
|
// Extract zipped app files and place them in correct directory
|
|
79
|
-
const { data: zippedApp } = await downloadClonedProject(
|
|
80
|
-
await extractZipArchive(zippedApp, sanitizeFileName(
|
|
78
|
+
const { data: zippedApp } = await downloadClonedProject(derivedAccountId, exportId);
|
|
79
|
+
await extractZipArchive(zippedApp, sanitizeFileName(projectName), absoluteDestPath, {
|
|
81
80
|
includesRootDir: true,
|
|
82
81
|
hideLogs: true,
|
|
83
82
|
});
|
|
84
83
|
// Create hsproject.json file
|
|
85
84
|
const configPath = path.join(baseDestPath, PROJECT_CONFIG_FILE);
|
|
86
85
|
const configContent = {
|
|
87
|
-
name,
|
|
86
|
+
name: projectName,
|
|
88
87
|
srcDir: 'src',
|
|
89
88
|
platformVersion: '2023.2',
|
|
90
89
|
};
|
|
91
90
|
const success = writeProjectConfig(configPath, configContent);
|
|
92
|
-
trackCommandMetadataUsage('clone-app', {
|
|
93
|
-
type: name,
|
|
94
|
-
assetType: appId,
|
|
95
|
-
successful: success,
|
|
96
|
-
}, accountId);
|
|
97
91
|
SpinniesManager.succeed('cloneApp', {
|
|
98
92
|
text: i18n(`${i18nKey}.cloneStatus.done`),
|
|
99
93
|
succeedColor: 'white',
|
|
@@ -103,33 +97,35 @@ exports.handler = async (options) => {
|
|
|
103
97
|
}
|
|
104
98
|
logger.log('');
|
|
105
99
|
uiLine();
|
|
106
|
-
logger.success(i18n(`${i18nKey}.cloneStatus.success`, {
|
|
100
|
+
logger.success(i18n(`${i18nKey}.cloneStatus.success`, { dest }));
|
|
107
101
|
logger.log('');
|
|
108
102
|
process.exit(EXIT_CODES.SUCCESS);
|
|
109
103
|
}
|
|
110
104
|
}
|
|
111
105
|
catch (error) {
|
|
112
|
-
trackCommandMetadataUsage('clone-app', {
|
|
106
|
+
await trackCommandMetadataUsage('clone-app', { status: 'FAILURE' }, derivedAccountId);
|
|
113
107
|
SpinniesManager.fail('cloneApp', {
|
|
114
108
|
text: i18n(`${i18nKey}.cloneStatus.failure`),
|
|
115
109
|
failColor: 'white',
|
|
116
110
|
});
|
|
117
111
|
// Migrations endpoints return a response object with an errors property. The errors property contains an array of errors.
|
|
118
112
|
if (error.errors && Array.isArray(error.errors)) {
|
|
119
|
-
error.errors.forEach(e => logError(e, new ApiErrorContext({ accountId })));
|
|
113
|
+
error.errors.forEach(e => logError(e, new ApiErrorContext({ accountId: derivedAccountId })));
|
|
120
114
|
}
|
|
121
115
|
else {
|
|
122
|
-
logError(error, new ApiErrorContext({ accountId }));
|
|
116
|
+
logError(error, new ApiErrorContext({ accountId: derivedAccountId }));
|
|
123
117
|
}
|
|
124
118
|
}
|
|
119
|
+
await trackCommandMetadataUsage('clone-app', { status: 'SUCCESS' }, derivedAccountId);
|
|
120
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
125
121
|
};
|
|
126
122
|
exports.builder = yargs => {
|
|
127
123
|
yargs.options({
|
|
128
|
-
|
|
129
|
-
describe: i18n(`${i18nKey}.options.
|
|
124
|
+
dest: {
|
|
125
|
+
describe: i18n(`${i18nKey}.options.dest.describe`),
|
|
130
126
|
type: 'string',
|
|
131
127
|
},
|
|
132
|
-
|
|
128
|
+
'app-id': {
|
|
133
129
|
describe: i18n(`${i18nKey}.options.appId.describe`),
|
|
134
130
|
type: 'number',
|
|
135
131
|
},
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
|
-
const { addAccountOptions, addConfigOptions,
|
|
4
|
+
const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
|
|
5
5
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
6
|
-
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
7
6
|
const { getCwd } = require('@hubspot/local-dev-lib/path');
|
|
8
7
|
const path = require('path');
|
|
9
8
|
const chalk = require('chalk');
|
|
@@ -18,17 +17,16 @@ const i18nKey = 'commands.project.subcommands.create';
|
|
|
18
17
|
exports.command = 'create';
|
|
19
18
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
20
19
|
exports.handler = async (options) => {
|
|
21
|
-
|
|
22
|
-
const accountId = getAccountId(options);
|
|
20
|
+
const { derivedAccountId } = options;
|
|
23
21
|
const hasCustomTemplateSource = Boolean(options.templateSource);
|
|
24
22
|
let githubRef = '';
|
|
25
23
|
if (!hasCustomTemplateSource) {
|
|
26
24
|
const releaseData = await fetchReleaseData(HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH);
|
|
27
25
|
githubRef = releaseData.tag_name;
|
|
28
26
|
}
|
|
29
|
-
const { name, template,
|
|
30
|
-
trackCommandUsage('project-create', { type: template.name },
|
|
31
|
-
await createProjectConfig(path.resolve(getCwd(), options.
|
|
27
|
+
const { name, template, dest } = await createProjectPrompt(githubRef, options);
|
|
28
|
+
trackCommandUsage('project-create', { type: template.name }, derivedAccountId);
|
|
29
|
+
await createProjectConfig(path.resolve(getCwd(), options.dest || dest), options.name || name, template, options.templateSource, githubRef);
|
|
32
30
|
logger.log('');
|
|
33
31
|
logger.log(chalk.bold(i18n(`${i18nKey}.logs.welcomeMessage`)));
|
|
34
32
|
uiFeatureHighlight([
|
|
@@ -44,15 +42,15 @@ exports.builder = yargs => {
|
|
|
44
42
|
describe: i18n(`${i18nKey}.options.name.describe`),
|
|
45
43
|
type: 'string',
|
|
46
44
|
},
|
|
47
|
-
|
|
48
|
-
describe: i18n(`${i18nKey}.options.
|
|
45
|
+
dest: {
|
|
46
|
+
describe: i18n(`${i18nKey}.options.dest.describe`),
|
|
49
47
|
type: 'string',
|
|
50
48
|
},
|
|
51
49
|
template: {
|
|
52
50
|
describe: i18n(`${i18nKey}.options.template.describe`),
|
|
53
51
|
type: 'string',
|
|
54
52
|
},
|
|
55
|
-
|
|
53
|
+
'template-source': {
|
|
56
54
|
describe: i18n(`${i18nKey}.options.templateSource.describe`),
|
|
57
55
|
type: 'string',
|
|
58
56
|
},
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
const chalk = require('chalk');
|
|
5
|
-
const { addAccountOptions, addConfigOptions,
|
|
5
|
+
const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
|
|
6
6
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
7
7
|
const { logError, ApiErrorContext } = require('../../lib/errorHandlers/index');
|
|
8
8
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
9
9
|
const { deployProject, fetchProject, } = require('@hubspot/local-dev-lib/api/projects');
|
|
10
|
-
const {
|
|
11
|
-
const {
|
|
10
|
+
const { getProjectConfig } = require('../../lib/projects');
|
|
11
|
+
const { pollDeployStatus } = require('../../lib/projects/buildAndDeploy');
|
|
12
|
+
const { getProjectDetailUrl } = require('../../lib/projects/urls');
|
|
12
13
|
const { projectNamePrompt } = require('../../lib/prompts/projectNamePrompt');
|
|
13
14
|
const { promptUser } = require('../../lib/prompts/promptUtils');
|
|
14
15
|
const { i18n } = require('../../lib/lang');
|
|
@@ -37,18 +38,17 @@ const validateBuildId = (buildId, deployedBuildId, latestBuildId, projectName, a
|
|
|
37
38
|
return true;
|
|
38
39
|
};
|
|
39
40
|
exports.handler = async (options) => {
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
const accountConfig = getAccountConfig(accountId);
|
|
41
|
+
const { derivedAccountId } = options;
|
|
42
|
+
const accountConfig = getAccountConfig(derivedAccountId);
|
|
43
43
|
const { project: projectOption, buildId: buildIdOption } = options;
|
|
44
44
|
const accountType = accountConfig && accountConfig.accountType;
|
|
45
|
-
trackCommandUsage('project-deploy', { type: accountType },
|
|
45
|
+
trackCommandUsage('project-deploy', { type: accountType }, derivedAccountId);
|
|
46
46
|
const { projectConfig } = await getProjectConfig();
|
|
47
47
|
let projectName = projectOption;
|
|
48
48
|
if (!projectOption && projectConfig) {
|
|
49
49
|
projectName = projectConfig.name;
|
|
50
50
|
}
|
|
51
|
-
const namePromptResponse = await projectNamePrompt(
|
|
51
|
+
const namePromptResponse = await projectNamePrompt(derivedAccountId, {
|
|
52
52
|
project: projectName,
|
|
53
53
|
});
|
|
54
54
|
if (!projectName && namePromptResponse.projectName) {
|
|
@@ -56,13 +56,13 @@ exports.handler = async (options) => {
|
|
|
56
56
|
}
|
|
57
57
|
let buildIdToDeploy = buildIdOption;
|
|
58
58
|
try {
|
|
59
|
-
const { data: { latestBuild, deployedBuildId }, } = await fetchProject(
|
|
59
|
+
const { data: { latestBuild, deployedBuildId }, } = await fetchProject(derivedAccountId, projectName);
|
|
60
60
|
if (!latestBuild || !latestBuild.buildId) {
|
|
61
61
|
logger.error(i18n(`${i18nKey}.errors.noBuilds`));
|
|
62
62
|
return process.exit(EXIT_CODES.ERROR);
|
|
63
63
|
}
|
|
64
64
|
if (buildIdToDeploy) {
|
|
65
|
-
const validationResult = validateBuildId(buildIdToDeploy, deployedBuildId, latestBuild.buildId, projectName,
|
|
65
|
+
const validationResult = validateBuildId(buildIdToDeploy, deployedBuildId, latestBuild.buildId, projectName, derivedAccountId);
|
|
66
66
|
if (validationResult !== true) {
|
|
67
67
|
logger.error(validationResult);
|
|
68
68
|
return process.exit(EXIT_CODES.ERROR);
|
|
@@ -75,7 +75,7 @@ exports.handler = async (options) => {
|
|
|
75
75
|
default: latestBuild.buildId === deployedBuildId
|
|
76
76
|
? undefined
|
|
77
77
|
: latestBuild.buildId,
|
|
78
|
-
validate:
|
|
78
|
+
validate: buildId => validateBuildId(buildId, deployedBuildId, latestBuild.buildId, projectName, derivedAccountId),
|
|
79
79
|
});
|
|
80
80
|
buildIdToDeploy = deployBuildIdPromptResponse.buildId;
|
|
81
81
|
}
|
|
@@ -83,20 +83,20 @@ exports.handler = async (options) => {
|
|
|
83
83
|
logger.error(i18n(`${i18nKey}.errors.noBuildId`));
|
|
84
84
|
return process.exit(EXIT_CODES.ERROR);
|
|
85
85
|
}
|
|
86
|
-
const { data: deployResp } = await deployProject(
|
|
86
|
+
const { data: deployResp } = await deployProject(derivedAccountId, projectName, buildIdToDeploy);
|
|
87
87
|
if (!deployResp || deployResp.error) {
|
|
88
88
|
logger.error(i18n(`${i18nKey}.errors.deploy`, {
|
|
89
89
|
details: deployResp.error.message,
|
|
90
90
|
}));
|
|
91
91
|
return process.exit(EXIT_CODES.ERROR);
|
|
92
92
|
}
|
|
93
|
-
await pollDeployStatus(
|
|
93
|
+
await pollDeployStatus(derivedAccountId, projectName, deployResp.id, buildIdToDeploy);
|
|
94
94
|
}
|
|
95
95
|
catch (e) {
|
|
96
96
|
if (isHubSpotHttpError(e) && e.status === 404) {
|
|
97
97
|
logger.error(i18n(`${i18nKey}.errors.projectNotFound`, {
|
|
98
98
|
projectName: chalk.bold(projectName),
|
|
99
|
-
accountIdentifier: uiAccountDescription(
|
|
99
|
+
accountIdentifier: uiAccountDescription(derivedAccountId),
|
|
100
100
|
command: uiCommandReference('hs project upload'),
|
|
101
101
|
}));
|
|
102
102
|
}
|
|
@@ -104,7 +104,10 @@ exports.handler = async (options) => {
|
|
|
104
104
|
logger.error(e.message);
|
|
105
105
|
}
|
|
106
106
|
else {
|
|
107
|
-
logError(e, new ApiErrorContext({
|
|
107
|
+
logError(e, new ApiErrorContext({
|
|
108
|
+
accountId: derivedAccountId,
|
|
109
|
+
request: 'project deploy',
|
|
110
|
+
}));
|
|
108
111
|
}
|
|
109
112
|
return process.exit(EXIT_CODES.ERROR);
|
|
110
113
|
}
|
|
@@ -116,7 +119,7 @@ exports.builder = yargs => {
|
|
|
116
119
|
type: 'string',
|
|
117
120
|
},
|
|
118
121
|
build: {
|
|
119
|
-
alias: ['
|
|
122
|
+
alias: ['build-id'],
|
|
120
123
|
describe: i18n(`${i18nKey}.options.build.describe`),
|
|
121
124
|
type: 'number',
|
|
122
125
|
},
|