@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
|
@@ -1,13 +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, } = require('../../lib/commonOpts');
|
|
5
5
|
const chalk = require('chalk');
|
|
6
6
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
7
7
|
const { uiBetaTag, uiCommandReference } = require('../../lib/ui');
|
|
8
8
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
9
|
-
const {
|
|
10
|
-
const {
|
|
9
|
+
const { ensureProjectExists, getProjectConfig, logFeedbackMessage, validateProjectConfig, } = require('../../lib/projects');
|
|
10
|
+
const { handleProjectUpload } = require('../../lib/projects/upload');
|
|
11
|
+
const { displayWarnLogs, pollProjectBuildAndDeploy, } = require('../../lib/projects/buildAndDeploy');
|
|
11
12
|
const { i18n } = require('../../lib/lang');
|
|
12
13
|
const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
|
|
13
14
|
const { isSpecifiedError } = require('@hubspot/local-dev-lib/errors/index');
|
|
@@ -15,23 +16,21 @@ const { PROJECT_ERROR_TYPES } = require('../../lib/constants');
|
|
|
15
16
|
const { logError, ApiErrorContext } = require('../../lib/errorHandlers/index');
|
|
16
17
|
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
17
18
|
const i18nKey = 'commands.project.subcommands.upload';
|
|
18
|
-
exports.command = 'upload
|
|
19
|
+
exports.command = 'upload';
|
|
19
20
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
20
21
|
exports.handler = async (options) => {
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
const accountId = getAccountId(options);
|
|
24
|
-
const accountConfig = getAccountConfig(accountId);
|
|
22
|
+
const { forceCreate, message, derivedAccountId } = options;
|
|
23
|
+
const accountConfig = getAccountConfig(derivedAccountId);
|
|
25
24
|
const accountType = accountConfig && accountConfig.accountType;
|
|
26
|
-
trackCommandUsage('project-upload', { type: accountType },
|
|
27
|
-
const { projectConfig, projectDir } = await getProjectConfig(
|
|
25
|
+
trackCommandUsage('project-upload', { type: accountType }, derivedAccountId);
|
|
26
|
+
const { projectConfig, projectDir } = await getProjectConfig();
|
|
28
27
|
validateProjectConfig(projectConfig, projectDir);
|
|
29
|
-
await ensureProjectExists(
|
|
28
|
+
await ensureProjectExists(derivedAccountId, projectConfig.name, {
|
|
30
29
|
forceCreate,
|
|
31
30
|
uploadCommand: true,
|
|
32
31
|
});
|
|
33
32
|
try {
|
|
34
|
-
const result = await handleProjectUpload(
|
|
33
|
+
const result = await handleProjectUpload(derivedAccountId, projectConfig, projectDir, pollProjectBuildAndDeploy, message);
|
|
35
34
|
if (result.uploadError) {
|
|
36
35
|
if (isSpecifiedError(result.uploadError, {
|
|
37
36
|
subCategory: PROJECT_ERROR_TYPES.PROJECT_LOCKED,
|
|
@@ -42,7 +41,7 @@ exports.handler = async (options) => {
|
|
|
42
41
|
}
|
|
43
42
|
else {
|
|
44
43
|
logError(result.uploadError, new ApiErrorContext({
|
|
45
|
-
accountId,
|
|
44
|
+
accountId: derivedAccountId,
|
|
46
45
|
request: 'project upload',
|
|
47
46
|
}));
|
|
48
47
|
}
|
|
@@ -56,34 +55,33 @@ exports.handler = async (options) => {
|
|
|
56
55
|
deployCommand: uiCommandReference(`hs project deploy --build=${result.buildId}`),
|
|
57
56
|
}));
|
|
58
57
|
logFeedbackMessage(result.buildId);
|
|
59
|
-
await displayWarnLogs(
|
|
58
|
+
await displayWarnLogs(derivedAccountId, projectConfig.name, result.buildId);
|
|
60
59
|
process.exit(EXIT_CODES.SUCCESS);
|
|
61
60
|
}
|
|
62
61
|
}
|
|
63
62
|
catch (e) {
|
|
64
|
-
logError(e, new ApiErrorContext({
|
|
63
|
+
logError(e, new ApiErrorContext({
|
|
64
|
+
accountId: derivedAccountId,
|
|
65
|
+
request: 'project upload',
|
|
66
|
+
}));
|
|
65
67
|
process.exit(EXIT_CODES.ERROR);
|
|
66
68
|
}
|
|
67
69
|
};
|
|
68
70
|
exports.builder = yargs => {
|
|
69
|
-
yargs.
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
yargs.options({
|
|
72
|
+
'force-create': {
|
|
73
|
+
describe: i18n(`${i18nKey}.options.forceCreate.describe`),
|
|
74
|
+
type: 'boolean',
|
|
75
|
+
default: false,
|
|
76
|
+
},
|
|
77
|
+
message: {
|
|
78
|
+
alias: 'm',
|
|
79
|
+
describe: i18n(`${i18nKey}.options.message.describe`),
|
|
80
|
+
type: 'string',
|
|
81
|
+
default: '',
|
|
82
|
+
},
|
|
72
83
|
});
|
|
73
|
-
yargs.
|
|
74
|
-
describe: i18n(`${i18nKey}.options.forceCreate.describe`),
|
|
75
|
-
type: 'boolean',
|
|
76
|
-
default: false,
|
|
77
|
-
});
|
|
78
|
-
yargs.option('message', {
|
|
79
|
-
alias: 'm',
|
|
80
|
-
describe: i18n(`${i18nKey}.options.message.describe`),
|
|
81
|
-
type: 'string',
|
|
82
|
-
default: '',
|
|
83
|
-
});
|
|
84
|
-
yargs.example([
|
|
85
|
-
['$0 project upload myProjectFolder', i18n(`${i18nKey}.examples.default`)],
|
|
86
|
-
]);
|
|
84
|
+
yargs.example([['$0 project upload', i18n(`${i18nKey}.examples.default`)]]);
|
|
87
85
|
addConfigOptions(yargs);
|
|
88
86
|
addAccountOptions(yargs);
|
|
89
87
|
addUseEnvironmentOptions(yargs);
|
|
@@ -2,24 +2,25 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
const { i18n } = require('../../lib/lang');
|
|
5
|
-
const { createWatcher } = require('../../lib/
|
|
5
|
+
const { createWatcher } = require('../../lib/projects/watch');
|
|
6
6
|
const { logError, ApiErrorContext } = require('../../lib/errorHandlers/index');
|
|
7
7
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
8
8
|
const { PROJECT_ERROR_TYPES } = require('../../lib/constants');
|
|
9
|
-
const { addAccountOptions, addConfigOptions,
|
|
9
|
+
const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
|
|
10
10
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
11
11
|
const { uiBetaTag } = require('../../lib/ui');
|
|
12
|
-
const { ensureProjectExists, getProjectConfig,
|
|
12
|
+
const { ensureProjectExists, getProjectConfig, validateProjectConfig, logFeedbackMessage, } = require('../../lib/projects');
|
|
13
|
+
const { handleProjectUpload } = require('../../lib/projects/upload');
|
|
14
|
+
const { pollBuildStatus, pollDeployStatus, } = require('../../lib/projects/buildAndDeploy');
|
|
13
15
|
const { cancelStagedBuild, fetchProjectBuilds, } = require('@hubspot/local-dev-lib/api/projects');
|
|
14
16
|
const { isSpecifiedError } = require('@hubspot/local-dev-lib/errors/index');
|
|
15
|
-
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
16
17
|
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
17
18
|
const { handleKeypress, handleExit } = require('../../lib/process');
|
|
18
19
|
const i18nKey = 'commands.project.subcommands.watch';
|
|
19
|
-
exports.command = 'watch
|
|
20
|
+
exports.command = 'watch';
|
|
20
21
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
21
22
|
const handleBuildStatus = async (accountId, projectName, buildId) => {
|
|
22
|
-
const { isAutoDeployEnabled, deployStatusTaskLocator
|
|
23
|
+
const { isAutoDeployEnabled, deployStatusTaskLocator } = await pollBuildStatus(accountId, projectName, buildId);
|
|
23
24
|
if (isAutoDeployEnabled && deployStatusTaskLocator) {
|
|
24
25
|
await pollDeployStatus(accountId, projectName, deployStatusTaskLocator.id, buildId);
|
|
25
26
|
}
|
|
@@ -57,22 +58,20 @@ const handleUserInput = (accountId, projectName, currentBuildId) => {
|
|
|
57
58
|
});
|
|
58
59
|
};
|
|
59
60
|
exports.handler = async (options) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
const
|
|
63
|
-
trackCommandUsage('project-watch', null, accountId);
|
|
64
|
-
const { projectConfig, projectDir } = await getProjectConfig(projectPath);
|
|
61
|
+
const { initialUpload, derivedAccountId } = options;
|
|
62
|
+
trackCommandUsage('project-watch', null, derivedAccountId);
|
|
63
|
+
const { projectConfig, projectDir } = await getProjectConfig();
|
|
65
64
|
validateProjectConfig(projectConfig, projectDir);
|
|
66
|
-
await ensureProjectExists(
|
|
65
|
+
await ensureProjectExists(derivedAccountId, projectConfig.name);
|
|
67
66
|
try {
|
|
68
|
-
const { data: { results: builds }, } = await fetchProjectBuilds(
|
|
67
|
+
const { data: { results: builds }, } = await fetchProjectBuilds(derivedAccountId, projectConfig.name, options);
|
|
69
68
|
const hasNoBuilds = !builds || !builds.length;
|
|
70
69
|
const startWatching = async () => {
|
|
71
|
-
await createWatcher(
|
|
70
|
+
await createWatcher(derivedAccountId, projectConfig, projectDir, handleBuildStatus, handleUserInput);
|
|
72
71
|
};
|
|
73
72
|
// Upload all files if no build exists for this project yet
|
|
74
73
|
if (initialUpload || hasNoBuilds) {
|
|
75
|
-
const result = await handleProjectUpload(
|
|
74
|
+
const result = await handleProjectUpload(derivedAccountId, projectConfig, projectDir, startWatching);
|
|
76
75
|
if (result.uploadError) {
|
|
77
76
|
if (isSpecifiedError(result.uploadError, {
|
|
78
77
|
subCategory: PROJECT_ERROR_TYPES.PROJECT_LOCKED,
|
|
@@ -83,7 +82,7 @@ exports.handler = async (options) => {
|
|
|
83
82
|
}
|
|
84
83
|
else {
|
|
85
84
|
logError(result.uploadError, new ApiErrorContext({
|
|
86
|
-
accountId,
|
|
85
|
+
accountId: derivedAccountId,
|
|
87
86
|
request: 'project upload',
|
|
88
87
|
}));
|
|
89
88
|
}
|
|
@@ -95,22 +94,16 @@ exports.handler = async (options) => {
|
|
|
95
94
|
}
|
|
96
95
|
}
|
|
97
96
|
catch (e) {
|
|
98
|
-
logError(e, new ApiErrorContext({ accountId }));
|
|
97
|
+
logError(e, new ApiErrorContext({ accountId: derivedAccountId }));
|
|
99
98
|
}
|
|
100
99
|
};
|
|
101
100
|
exports.builder = yargs => {
|
|
102
|
-
yargs.positional('path', {
|
|
103
|
-
describe: i18n(`${i18nKey}.positionals.path.describe`),
|
|
104
|
-
type: 'string',
|
|
105
|
-
});
|
|
106
101
|
yargs.option('initial-upload', {
|
|
107
102
|
alias: 'i',
|
|
108
103
|
describe: i18n(`${i18nKey}.options.initialUpload.describe`),
|
|
109
104
|
type: 'boolean',
|
|
110
105
|
});
|
|
111
|
-
yargs.example([
|
|
112
|
-
['$0 project watch myProjectFolder', i18n(`${i18nKey}.examples.default`)],
|
|
113
|
-
]);
|
|
106
|
+
yargs.example([['$0 project watch', i18n(`${i18nKey}.examples.default`)]]);
|
|
114
107
|
addConfigOptions(yargs);
|
|
115
108
|
addAccountOptions(yargs);
|
|
116
109
|
addUseEnvironmentOptions(yargs);
|
package/commands/project.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
|
-
const {
|
|
4
|
+
const { addGlobalOptions } = require('../lib/commonOpts');
|
|
5
5
|
const { i18n } = require('../lib/lang');
|
|
6
6
|
const { uiBetaTag } = require('../lib/ui');
|
|
7
7
|
const deploy = require('./project/deploy');
|
|
@@ -18,11 +18,10 @@ const migrateApp = require('./project/migrateApp');
|
|
|
18
18
|
const cloneApp = require('./project/cloneApp');
|
|
19
19
|
const installDeps = require('./project/installDeps');
|
|
20
20
|
const i18nKey = 'commands.project';
|
|
21
|
-
exports.command = 'project';
|
|
21
|
+
exports.command = ['project', 'projects'];
|
|
22
22
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
23
23
|
exports.builder = yargs => {
|
|
24
|
-
|
|
25
|
-
addAccountOptions(yargs);
|
|
24
|
+
addGlobalOptions(yargs);
|
|
26
25
|
yargs
|
|
27
26
|
.command(create)
|
|
28
27
|
.command(add)
|
package/commands/remove.js
CHANGED
|
@@ -4,37 +4,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
const { deleteFile } = require('@hubspot/local-dev-lib/api/fileMapper');
|
|
5
5
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
6
6
|
const { logError, ApiErrorContext } = require('../lib/errorHandlers/index');
|
|
7
|
-
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions,
|
|
8
|
-
const { loadAndValidateOptions } = require('../lib/validation');
|
|
7
|
+
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, addGlobalOptions, } = require('../lib/commonOpts');
|
|
9
8
|
const { trackCommandUsage } = require('../lib/usageTracking');
|
|
10
9
|
const { i18n } = require('../lib/lang');
|
|
11
10
|
const i18nKey = 'commands.remove';
|
|
12
11
|
exports.command = 'remove <path>';
|
|
13
12
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
14
13
|
exports.handler = async (options) => {
|
|
15
|
-
const { path: hsPath } = options;
|
|
16
|
-
|
|
17
|
-
const accountId = getAccountId(options);
|
|
18
|
-
trackCommandUsage('remove', null, accountId);
|
|
14
|
+
const { path: hsPath, derivedAccountId } = options;
|
|
15
|
+
trackCommandUsage('remove', null, derivedAccountId);
|
|
19
16
|
try {
|
|
20
|
-
await deleteFile(
|
|
21
|
-
logger.log(i18n(`${i18nKey}.deleted`, { accountId, path: hsPath }));
|
|
17
|
+
await deleteFile(derivedAccountId, hsPath);
|
|
18
|
+
logger.log(i18n(`${i18nKey}.deleted`, { accountId: derivedAccountId, path: hsPath }));
|
|
22
19
|
}
|
|
23
20
|
catch (error) {
|
|
24
|
-
logger.error(i18n(`${i18nKey}.errors.deleteFailed`, {
|
|
21
|
+
logger.error(i18n(`${i18nKey}.errors.deleteFailed`, {
|
|
22
|
+
accountId: derivedAccountId,
|
|
23
|
+
path: hsPath,
|
|
24
|
+
}));
|
|
25
25
|
logError(error, new ApiErrorContext({
|
|
26
|
-
accountId,
|
|
26
|
+
accountId: derivedAccountId,
|
|
27
27
|
request: hsPath,
|
|
28
28
|
}));
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
31
|
exports.builder = yargs => {
|
|
32
|
-
addConfigOptions(yargs);
|
|
33
|
-
addAccountOptions(yargs);
|
|
34
|
-
addUseEnvironmentOptions(yargs);
|
|
35
32
|
yargs.positional('path', {
|
|
36
33
|
describe: i18n(`${i18nKey}.positionals.path.describe`),
|
|
37
34
|
type: 'string',
|
|
38
35
|
});
|
|
36
|
+
addConfigOptions(yargs);
|
|
37
|
+
addAccountOptions(yargs);
|
|
38
|
+
addUseEnvironmentOptions(yargs);
|
|
39
|
+
addGlobalOptions(yargs);
|
|
39
40
|
return yargs;
|
|
40
41
|
};
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
|
-
const { addAccountOptions, addConfigOptions,
|
|
5
|
-
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
4
|
+
const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, addTestingOptions, } = require('../../lib/commonOpts');
|
|
6
5
|
const { i18n } = require('../../lib/lang');
|
|
7
6
|
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
8
7
|
const { getAccountConfig, getEnv } = require('@hubspot/local-dev-lib/config');
|
|
@@ -21,15 +20,13 @@ const { HUBSPOT_ACCOUNT_TYPES, HUBSPOT_ACCOUNT_TYPE_STRINGS, } = require('@hubsp
|
|
|
21
20
|
const { buildNewAccount } = require('../../lib/buildAccount');
|
|
22
21
|
const { hubspotAccountNamePrompt, } = require('../../lib/prompts/accountNamePrompt');
|
|
23
22
|
const i18nKey = 'commands.sandbox.subcommands.create';
|
|
24
|
-
exports.command = 'create
|
|
23
|
+
exports.command = 'create';
|
|
25
24
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
26
25
|
exports.handler = async (options) => {
|
|
27
|
-
|
|
28
|
-
const
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const env = getValidEnv(getEnv(accountId));
|
|
32
|
-
trackCommandUsage('sandbox-create', null, accountId);
|
|
26
|
+
const { name, type, force, derivedAccountId } = options;
|
|
27
|
+
const accountConfig = getAccountConfig(derivedAccountId);
|
|
28
|
+
const env = getValidEnv(getEnv(derivedAccountId));
|
|
29
|
+
trackCommandUsage('sandbox-create', null, derivedAccountId);
|
|
33
30
|
// Default account is not a production portal
|
|
34
31
|
if (accountConfig.accountType &&
|
|
35
32
|
accountConfig.accountType !== HUBSPOT_ACCOUNT_TYPES.STANDARD) {
|
|
@@ -60,12 +57,12 @@ exports.handler = async (options) => {
|
|
|
60
57
|
catch (err) {
|
|
61
58
|
if (isMissingScopeError(err)) {
|
|
62
59
|
logger.error(i18n('lib.sandbox.create.failure.scopes.message', {
|
|
63
|
-
accountName: accountConfig.name ||
|
|
60
|
+
accountName: accountConfig.name || derivedAccountId,
|
|
64
61
|
}));
|
|
65
62
|
const websiteOrigin = getHubSpotWebsiteOrigin(env);
|
|
66
|
-
const url = `${websiteOrigin}/personal-access-key/${
|
|
63
|
+
const url = `${websiteOrigin}/personal-access-key/${derivedAccountId}`;
|
|
67
64
|
logger.info(i18n('lib.sandbox.create.failure.scopes.instructions', {
|
|
68
|
-
accountName: accountConfig.name ||
|
|
65
|
+
accountName: accountConfig.name || derivedAccountId,
|
|
69
66
|
url,
|
|
70
67
|
}));
|
|
71
68
|
}
|
|
@@ -144,10 +141,10 @@ exports.handler = async (options) => {
|
|
|
144
141
|
}
|
|
145
142
|
};
|
|
146
143
|
exports.builder = yargs => {
|
|
147
|
-
yargs.option('
|
|
144
|
+
yargs.option('force', {
|
|
148
145
|
type: 'boolean',
|
|
149
|
-
alias: '
|
|
150
|
-
describe: i18n(`${i18nKey}.
|
|
146
|
+
alias: 'f',
|
|
147
|
+
describe: i18n(`${i18nKey}.options.force.describe`),
|
|
151
148
|
});
|
|
152
149
|
yargs.option('name', {
|
|
153
150
|
describe: i18n(`${i18nKey}.options.name.describe`),
|
|
@@ -4,31 +4,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, getAccountId, addTestingOptions, } = require('../../lib/commonOpts');
|
|
5
5
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
6
6
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
7
|
-
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
8
7
|
const { logError, debugError } = require('../../lib/errorHandlers/index');
|
|
9
8
|
const { isSpecifiedError } = require('@hubspot/local-dev-lib/errors/index');
|
|
10
9
|
const { deleteSandbox } = require('@hubspot/local-dev-lib/api/sandboxHubs');
|
|
11
10
|
const { i18n } = require('../../lib/lang');
|
|
12
11
|
const { deleteSandboxPrompt } = require('../../lib/prompts/sandboxesPrompt');
|
|
13
|
-
const {
|
|
12
|
+
const { getEnv, removeSandboxAccountFromConfig, updateDefaultAccount, getConfigDefaultAccount, getConfigAccounts, } = require('@hubspot/local-dev-lib/config');
|
|
13
|
+
const { getAccountIdentifier, } = require('@hubspot/local-dev-lib/config/getAccountIdentifier');
|
|
14
14
|
const { selectAccountFromConfig } = require('../../lib/prompts/accountsPrompt');
|
|
15
15
|
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
16
16
|
const { promptUser } = require('../../lib/prompts/promptUtils');
|
|
17
|
+
const { uiAccountDescription, uiBetaTag } = require('../../lib/ui');
|
|
17
18
|
const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls');
|
|
18
19
|
const { getValidEnv } = require('@hubspot/local-dev-lib/environment');
|
|
19
|
-
const { uiAccountDescription, uiBetaTag } = require('../../lib/ui');
|
|
20
20
|
const i18nKey = 'commands.sandbox.subcommands.delete';
|
|
21
|
-
exports.command = 'delete
|
|
21
|
+
exports.command = 'delete';
|
|
22
22
|
exports.describe = exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
23
23
|
exports.handler = async (options) => {
|
|
24
|
-
|
|
25
|
-
const { account, force } = options;
|
|
26
|
-
const config = getConfig();
|
|
24
|
+
const { providedAccountId, force } = options;
|
|
27
25
|
trackCommandUsage('sandbox-delete', null);
|
|
28
26
|
let accountPrompt;
|
|
29
|
-
if (!
|
|
27
|
+
if (!providedAccountId) {
|
|
30
28
|
if (!force) {
|
|
31
|
-
accountPrompt = await deleteSandboxPrompt(
|
|
29
|
+
accountPrompt = await deleteSandboxPrompt();
|
|
32
30
|
}
|
|
33
31
|
else {
|
|
34
32
|
// Account is required, throw error if force flag is present and no account is specified
|
|
@@ -43,18 +41,19 @@ exports.handler = async (options) => {
|
|
|
43
41
|
}
|
|
44
42
|
}
|
|
45
43
|
const sandboxAccountId = getAccountId({
|
|
46
|
-
account:
|
|
44
|
+
account: providedAccountId || accountPrompt.account,
|
|
47
45
|
});
|
|
48
|
-
const isDefaultAccount = sandboxAccountId === getAccountId(
|
|
46
|
+
const isDefaultAccount = sandboxAccountId === getAccountId(getConfigDefaultAccount());
|
|
49
47
|
const baseUrl = getHubSpotWebsiteOrigin(getValidEnv(getEnv(sandboxAccountId)));
|
|
50
48
|
let parentAccountId;
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
const accountsList = getConfigAccounts();
|
|
50
|
+
for (const portal of accountsList) {
|
|
51
|
+
if (getAccountIdentifier(portal) === sandboxAccountId) {
|
|
53
52
|
if (portal.parentAccountId) {
|
|
54
53
|
parentAccountId = portal.parentAccountId;
|
|
55
54
|
}
|
|
56
55
|
else if (!force) {
|
|
57
|
-
const parentAccountPrompt = await deleteSandboxPrompt(
|
|
56
|
+
const parentAccountPrompt = await deleteSandboxPrompt(true);
|
|
58
57
|
parentAccountId = getAccountId({
|
|
59
58
|
account: parentAccountPrompt.account,
|
|
60
59
|
});
|
|
@@ -107,13 +106,13 @@ exports.handler = async (options) => {
|
|
|
107
106
|
: `${i18nKey}.success.delete`;
|
|
108
107
|
logger.log('');
|
|
109
108
|
logger.success(i18n(deleteKey, {
|
|
110
|
-
account:
|
|
109
|
+
account: providedAccountId || accountPrompt.account,
|
|
111
110
|
sandboxHubId: sandboxAccountId,
|
|
112
111
|
}));
|
|
113
112
|
logger.log('');
|
|
114
113
|
const promptDefaultAccount = removeSandboxAccountFromConfig(sandboxAccountId);
|
|
115
114
|
if (promptDefaultAccount && !force) {
|
|
116
|
-
const newDefaultAccount = await selectAccountFromConfig(
|
|
115
|
+
const newDefaultAccount = await selectAccountFromConfig();
|
|
117
116
|
updateDefaultAccount(newDefaultAccount);
|
|
118
117
|
}
|
|
119
118
|
else {
|
|
@@ -156,7 +155,7 @@ exports.handler = async (options) => {
|
|
|
156
155
|
logger.log('');
|
|
157
156
|
const promptDefaultAccount = removeSandboxAccountFromConfig(sandboxAccountId);
|
|
158
157
|
if (promptDefaultAccount && !force) {
|
|
159
|
-
const newDefaultAccount = await selectAccountFromConfig(
|
|
158
|
+
const newDefaultAccount = await selectAccountFromConfig();
|
|
160
159
|
updateDefaultAccount(newDefaultAccount);
|
|
161
160
|
}
|
|
162
161
|
else {
|
|
@@ -176,10 +175,10 @@ exports.builder = yargs => {
|
|
|
176
175
|
describe: i18n(`${i18nKey}.options.account.describe`),
|
|
177
176
|
type: 'string',
|
|
178
177
|
});
|
|
179
|
-
yargs.option('
|
|
178
|
+
yargs.option('force', {
|
|
180
179
|
type: 'boolean',
|
|
181
|
-
alias: '
|
|
182
|
-
describe: i18n(`${i18nKey}.
|
|
180
|
+
alias: 'f',
|
|
181
|
+
describe: i18n(`${i18nKey}.options.force.describe`),
|
|
183
182
|
});
|
|
184
183
|
yargs.example([
|
|
185
184
|
[
|
package/commands/sandbox.js
CHANGED
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
|
-
const {
|
|
4
|
+
const { addGlobalOptions } = require('../lib/commonOpts');
|
|
5
5
|
const { i18n } = require('../lib/lang');
|
|
6
6
|
const { uiBetaTag } = require('../lib/ui');
|
|
7
7
|
const create = require('./sandbox/create');
|
|
8
8
|
const del = require('./sandbox/delete');
|
|
9
9
|
const i18nKey = 'commands.sandbox';
|
|
10
|
-
exports.command = 'sandbox';
|
|
10
|
+
exports.command = ['sandbox', 'sandboxes'];
|
|
11
11
|
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
12
12
|
exports.builder = yargs => {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
yargs
|
|
16
|
-
.command(create)
|
|
17
|
-
.command(del)
|
|
18
|
-
.demandCommand(1, '');
|
|
13
|
+
addGlobalOptions(yargs);
|
|
14
|
+
yargs.command(create).command(del).demandCommand(1, '');
|
|
19
15
|
return yargs;
|
|
20
16
|
};
|
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
|
+
const exitCodes_1 = require("../../lib/enums/exitCodes");
|
|
5
|
+
const secrets_1 = require("@hubspot/local-dev-lib/api/secrets");
|
|
6
|
+
const ui_1 = require("../../lib/ui");
|
|
4
7
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
5
8
|
const { logError, ApiErrorContext } = require('../../lib/errorHandlers/index');
|
|
6
9
|
const { addSecret } = require('@hubspot/local-dev-lib/api/secrets');
|
|
7
|
-
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
8
10
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
9
|
-
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions,
|
|
11
|
+
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
|
|
10
12
|
const { uiAccountDescription } = require('../../lib/ui');
|
|
11
|
-
const { secretValuePrompt } = require('../../lib/prompts/secretPrompt');
|
|
13
|
+
const { secretValuePrompt, secretNamePrompt, } = require('../../lib/prompts/secretPrompt');
|
|
12
14
|
const { i18n } = require('../../lib/lang');
|
|
13
|
-
const i18nKey = 'commands.
|
|
14
|
-
exports.command = 'add
|
|
15
|
+
const i18nKey = 'commands.secret.subcommands.add';
|
|
16
|
+
exports.command = 'add [name]';
|
|
15
17
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
16
18
|
exports.handler = async (options) => {
|
|
17
|
-
const { name
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
trackCommandUsage('secrets-add', null, accountId);
|
|
19
|
+
const { name, derivedAccountId } = options;
|
|
20
|
+
let secretName = name;
|
|
21
|
+
trackCommandUsage('secrets-add', null, derivedAccountId);
|
|
21
22
|
try {
|
|
23
|
+
if (!secretName) {
|
|
24
|
+
const { secretName: name } = await secretNamePrompt();
|
|
25
|
+
secretName = name;
|
|
26
|
+
}
|
|
27
|
+
const { data: { results: secrets }, } = await (0, secrets_1.fetchSecrets)(derivedAccountId);
|
|
28
|
+
if (secrets.includes(secretName)) {
|
|
29
|
+
logger.error(i18n(`${i18nKey}.errors.alreadyExists`, {
|
|
30
|
+
secretName,
|
|
31
|
+
command: (0, ui_1.uiCommandReference)('hs secret update'),
|
|
32
|
+
}));
|
|
33
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
34
|
+
}
|
|
22
35
|
const { secretValue } = await secretValuePrompt();
|
|
23
|
-
await addSecret(
|
|
36
|
+
await addSecret(derivedAccountId, secretName, secretValue);
|
|
24
37
|
logger.success(i18n(`${i18nKey}.success.add`, {
|
|
25
|
-
accountIdentifier: uiAccountDescription(
|
|
38
|
+
accountIdentifier: uiAccountDescription(derivedAccountId),
|
|
26
39
|
secretName,
|
|
27
40
|
}));
|
|
28
41
|
}
|
|
@@ -32,7 +45,7 @@ exports.handler = async (options) => {
|
|
|
32
45
|
}));
|
|
33
46
|
logError(err, new ApiErrorContext({
|
|
34
47
|
request: 'add secret',
|
|
35
|
-
accountId,
|
|
48
|
+
accountId: derivedAccountId,
|
|
36
49
|
}));
|
|
37
50
|
}
|
|
38
51
|
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
const secretPrompt_1 = require("../../lib/prompts/secretPrompt");
|
|
5
|
+
const promptUtils_1 = require("../../lib/prompts/promptUtils");
|
|
6
|
+
const exitCodes_1 = require("../../lib/enums/exitCodes");
|
|
7
|
+
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
8
|
+
const { ApiErrorContext, logError } = require('../../lib/errorHandlers/index');
|
|
9
|
+
const { deleteSecret, fetchSecrets, } = require('@hubspot/local-dev-lib/api/secrets');
|
|
10
|
+
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
11
|
+
const { uiAccountDescription } = require('../../lib/ui');
|
|
12
|
+
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
|
|
13
|
+
const { i18n } = require('../../lib/lang');
|
|
14
|
+
const i18nKey = 'commands.secret.subcommands.delete';
|
|
15
|
+
exports.command = 'delete [name]';
|
|
16
|
+
exports.describe = i18n(`${i18nKey}.describe`);
|
|
17
|
+
exports.handler = async (options) => {
|
|
18
|
+
const { name, derivedAccountId, force } = options;
|
|
19
|
+
let secretName = name;
|
|
20
|
+
trackCommandUsage('secrets-delete', null, derivedAccountId);
|
|
21
|
+
try {
|
|
22
|
+
const { data: { results: secrets }, } = await fetchSecrets(derivedAccountId);
|
|
23
|
+
if (secretName && !secrets.includes(secretName)) {
|
|
24
|
+
logger.error(i18n(`${i18nKey}.errors.noSecret`, { secretName }));
|
|
25
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
26
|
+
}
|
|
27
|
+
if (!secretName) {
|
|
28
|
+
const { secretToModify } = await (0, secretPrompt_1.secretListPrompt)(secrets, i18n(`${i18nKey}.selectSecret`));
|
|
29
|
+
secretName = secretToModify;
|
|
30
|
+
}
|
|
31
|
+
const confirmDelete = force ||
|
|
32
|
+
(await (0, promptUtils_1.confirmPrompt)(i18n(`${i18nKey}.confirmDelete`, { secretName }), {
|
|
33
|
+
defaultAnswer: false,
|
|
34
|
+
}));
|
|
35
|
+
if (!confirmDelete) {
|
|
36
|
+
logger.success(i18n(`${i18nKey}.deleteCanceled`));
|
|
37
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
38
|
+
}
|
|
39
|
+
await deleteSecret(derivedAccountId, secretName);
|
|
40
|
+
logger.success(i18n(`${i18nKey}.success.delete`, {
|
|
41
|
+
accountIdentifier: uiAccountDescription(derivedAccountId),
|
|
42
|
+
secretName,
|
|
43
|
+
}));
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
if (secretName) {
|
|
47
|
+
logger.error(i18n(`${i18nKey}.errors.delete`, {
|
|
48
|
+
secretName,
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
51
|
+
logError(err, new ApiErrorContext({
|
|
52
|
+
request: 'delete a secret',
|
|
53
|
+
accountId: derivedAccountId,
|
|
54
|
+
}));
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
exports.builder = yargs => {
|
|
58
|
+
addConfigOptions(yargs);
|
|
59
|
+
addAccountOptions(yargs);
|
|
60
|
+
addUseEnvironmentOptions(yargs);
|
|
61
|
+
yargs
|
|
62
|
+
.positional('name', {
|
|
63
|
+
describe: i18n(`${i18nKey}.positionals.name.describe`),
|
|
64
|
+
type: 'string',
|
|
65
|
+
})
|
|
66
|
+
.options('force', {
|
|
67
|
+
describe: 'Force the deletion',
|
|
68
|
+
type: 'boolean',
|
|
69
|
+
});
|
|
70
|
+
return yargs;
|
|
71
|
+
};
|
|
@@ -4,22 +4,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
5
5
|
const { logError, ApiErrorContext } = require('../../lib/errorHandlers/index');
|
|
6
6
|
const { fetchSecrets } = require('@hubspot/local-dev-lib/api/secrets');
|
|
7
|
-
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
8
7
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
9
8
|
const { uiAccountDescription } = require('../../lib/ui');
|
|
10
|
-
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions,
|
|
9
|
+
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
|
|
11
10
|
const { i18n } = require('../../lib/lang');
|
|
12
|
-
const i18nKey = 'commands.
|
|
11
|
+
const i18nKey = 'commands.secret.subcommands.list';
|
|
13
12
|
exports.command = 'list';
|
|
14
13
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
15
14
|
exports.handler = async (options) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
trackCommandUsage('secrets-list', null, accountId);
|
|
15
|
+
const { derivedAccountId } = options;
|
|
16
|
+
trackCommandUsage('secrets-list', null, derivedAccountId);
|
|
19
17
|
try {
|
|
20
|
-
const { data: { results }, } = await fetchSecrets(
|
|
18
|
+
const { data: { results }, } = await fetchSecrets(derivedAccountId);
|
|
21
19
|
const groupLabel = i18n(`${i18nKey}.groupLabel`, {
|
|
22
|
-
accountIdentifier: uiAccountDescription(
|
|
20
|
+
accountIdentifier: uiAccountDescription(derivedAccountId),
|
|
23
21
|
});
|
|
24
22
|
logger.group(groupLabel);
|
|
25
23
|
results.forEach(secret => logger.log(secret));
|
|
@@ -29,7 +27,7 @@ exports.handler = async (options) => {
|
|
|
29
27
|
logger.error(i18n(`${i18nKey}.errors.list`));
|
|
30
28
|
logError(err, new ApiErrorContext({
|
|
31
29
|
request: 'add secret',
|
|
32
|
-
accountId,
|
|
30
|
+
accountId: derivedAccountId,
|
|
33
31
|
}));
|
|
34
32
|
}
|
|
35
33
|
};
|