@hubspot/cli 7.0.0-experimental.0 → 7.0.0-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 +15 -36
- package/commands/{account → accounts}/clean.js +9 -10
- package/commands/{account → accounts}/info.js +14 -10
- package/commands/{account → accounts}/list.js +13 -16
- package/commands/{account → accounts}/remove.js +8 -8
- package/commands/{account → accounts}/rename.js +5 -4
- package/commands/{account → accounts}/use.js +8 -5
- package/commands/accounts.js +30 -0
- package/commands/auth.js +23 -30
- package/commands/cms/lighthouseScore.js +19 -19
- package/commands/cms/reactModules.js +60 -0
- package/commands/cms.js +3 -4
- package/commands/config/set.js +22 -22
- package/commands/config.js +2 -2
- package/commands/create.js +3 -5
- package/commands/customObject/create.js +13 -18
- package/commands/customObject/schema/create.js +14 -14
- package/commands/customObject/schema/delete.js +9 -29
- package/commands/customObject/schema/fetch-all.js +9 -14
- package/commands/customObject/schema/fetch.js +12 -22
- package/commands/customObject/schema/list.js +4 -3
- package/commands/customObject/schema/update.js +16 -27
- package/commands/customObject/schema.js +1 -1
- package/commands/customObject.js +4 -3
- package/commands/doctor.js +0 -2
- package/commands/feedback.js +0 -2
- package/commands/fetch.js +12 -13
- package/commands/filemanager/fetch.js +5 -6
- package/commands/filemanager/upload.js +10 -10
- package/commands/filemanager.js +4 -0
- package/commands/{function → functions}/deploy.js +11 -13
- package/commands/{function → functions}/list.js +7 -7
- package/commands/{function → functions}/server.js +6 -5
- package/commands/functions.js +24 -0
- package/commands/hubdb/clear.js +8 -14
- package/commands/hubdb/create.js +11 -36
- package/commands/hubdb/delete.js +8 -31
- package/commands/hubdb/fetch.js +7 -14
- package/commands/hubdb.js +3 -2
- package/commands/init.js +14 -37
- package/commands/lint.js +5 -6
- package/commands/list.js +5 -5
- package/commands/logs.js +13 -24
- package/commands/module/marketplace-validate.js +7 -6
- package/commands/module.js +1 -2
- package/commands/mv.js +11 -11
- package/commands/open.js +10 -11
- package/commands/project/add.js +3 -2
- package/commands/project/cloneApp.js +30 -28
- package/commands/project/create.js +8 -8
- package/commands/project/deploy.js +13 -16
- package/commands/project/dev.js +14 -14
- package/commands/project/download.js +13 -18
- package/commands/project/listBuilds.js +29 -34
- package/commands/project/logs.js +5 -5
- package/commands/project/migrateApp.js +25 -27
- package/commands/project/open.js +8 -7
- package/commands/project/upload.js +29 -27
- package/commands/project/watch.js +19 -12
- package/commands/project.js +4 -3
- package/commands/remove.js +11 -14
- package/commands/sandbox/create.js +13 -12
- package/commands/sandbox/delete.js +13 -15
- package/commands/sandbox.js +4 -3
- package/commands/{secret → secrets}/addSecret.js +9 -24
- package/commands/secrets/deleteSecret.js +46 -0
- package/commands/{secret → secrets}/listSecrets.js +6 -6
- package/commands/{secret → secrets}/updateSecret.js +10 -20
- package/commands/secrets.js +23 -0
- package/commands/theme/generate-selectors.js +8 -8
- package/commands/theme/marketplace-validate.js +11 -10
- package/commands/theme/preview.js +7 -6
- package/commands/theme.js +1 -3
- package/commands/upload.js +24 -28
- package/commands/watch.js +19 -19
- package/lang/en.lyaml +111 -177
- package/lib/LocalDevManager.js +1 -1
- package/lib/buildAccount.js +1 -3
- package/lib/commonOpts.d.ts +6 -15
- package/lib/commonOpts.js +38 -54
- package/lib/configOptions.js +18 -19
- package/lib/dependencyManagement.d.ts +4 -1
- package/lib/dependencyManagement.js +2 -2
- package/lib/developerTestAccounts.js +5 -8
- package/lib/doctor/Doctor.js +7 -3
- package/lib/localDev.js +1 -1
- package/lib/oauth.js +1 -3
- package/lib/projects.js +5 -10
- package/lib/prompts/accountsPrompt.js +5 -9
- package/lib/prompts/createModulePrompt.js +2 -17
- package/lib/prompts/createProjectPrompt.js +5 -5
- package/lib/prompts/projectDevTargetAccountPrompt.js +2 -3
- package/lib/prompts/promptUtils.d.ts +0 -3
- package/lib/prompts/promptUtils.js +2 -14
- package/lib/prompts/sandboxesPrompt.js +7 -10
- package/lib/prompts/secretPrompt.d.ts +1 -3
- package/lib/prompts/secretPrompt.js +19 -32
- package/lib/prompts/setAsDefaultAccountPrompt.js +2 -4
- package/lib/sandboxSync.js +2 -5
- package/lib/sandboxes.js +7 -12
- package/lib/validation.js +13 -14
- package/package.json +5 -6
- package/commands/account.js +0 -26
- package/commands/cms/getReactModule.js +0 -70
- package/commands/completion.js +0 -22
- package/commands/function.js +0 -20
- package/commands/secret/deleteSecret.js +0 -71
- package/commands/secret.d.ts +0 -1
- package/commands/secret.js +0 -22
- package/lib/prompts/selectHubDBTablePrompt.d.ts +0 -8
- package/lib/prompts/selectHubDBTablePrompt.js +0 -69
- /package/commands/{account → accounts}/clean.d.ts +0 -0
- /package/commands/{account → accounts}/info.d.ts +0 -0
- /package/commands/{account → accounts}/list.d.ts +0 -0
- /package/commands/{account → accounts}/remove.d.ts +0 -0
- /package/commands/{account → accounts}/rename.d.ts +0 -0
- /package/commands/{account → accounts}/use.d.ts +0 -0
- /package/commands/{account.d.ts → accounts.d.ts} +0 -0
- /package/commands/cms/{getReactModule.d.ts → reactModules.d.ts} +0 -0
- /package/commands/{function → functions}/deploy.d.ts +0 -0
- /package/commands/{function → functions}/list.d.ts +0 -0
- /package/commands/{function → functions}/server.d.ts +0 -0
- /package/commands/{completion.d.ts → functions.d.ts} +0 -0
- /package/commands/{secret → secrets}/addSecret.d.ts +0 -0
- /package/commands/{secret → secrets}/deleteSecret.d.ts +0 -0
- /package/commands/{secret → secrets}/listSecrets.d.ts +0 -0
- /package/commands/{secret → secrets}/updateSecret.d.ts +0 -0
- /package/commands/{function.d.ts → secrets.d.ts} +0 -0
package/bin/cli.js
CHANGED
|
@@ -3,12 +3,10 @@
|
|
|
3
3
|
const yargs = require('yargs');
|
|
4
4
|
const updateNotifier = require('update-notifier');
|
|
5
5
|
const chalk = require('chalk');
|
|
6
|
-
const fs = require('fs');
|
|
7
6
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
8
7
|
const { addUserAgentHeader } = require('@hubspot/local-dev-lib/http');
|
|
9
|
-
const { loadConfig, configFileExists, getConfigPath, } = require('@hubspot/local-dev-lib/config');
|
|
10
8
|
const { logError } = require('../lib/errorHandlers/index');
|
|
11
|
-
const { setLogLevel, getCommandName
|
|
9
|
+
const { setLogLevel, getCommandName } = require('../lib/commonOpts');
|
|
12
10
|
const { trackHelpUsage, trackConvertFieldsUsage, } = require('../lib/usageTracking');
|
|
13
11
|
const { getIsInProject } = require('../lib/projects');
|
|
14
12
|
const pkg = require('../package.json');
|
|
@@ -26,9 +24,9 @@ const uploadCommand = require('../commands/upload');
|
|
|
26
24
|
const createCommand = require('../commands/create');
|
|
27
25
|
const fetchCommand = require('../commands/fetch');
|
|
28
26
|
const filemanagerCommand = require('../commands/filemanager');
|
|
29
|
-
const
|
|
27
|
+
const secretsCommand = require('../commands/secrets');
|
|
30
28
|
const customObjectCommand = require('../commands/customObject');
|
|
31
|
-
const
|
|
29
|
+
const functionsCommand = require('../commands/functions');
|
|
32
30
|
const listCommand = require('../commands/list');
|
|
33
31
|
const openCommand = require('../commands/open');
|
|
34
32
|
const mvCommand = require('../commands/mv');
|
|
@@ -36,12 +34,11 @@ const projectCommands = require('../commands/project');
|
|
|
36
34
|
const themeCommand = require('../commands/theme');
|
|
37
35
|
const moduleCommand = require('../commands/module');
|
|
38
36
|
const configCommand = require('../commands/config');
|
|
39
|
-
const
|
|
37
|
+
const accountsCommand = require('../commands/accounts');
|
|
40
38
|
const sandboxesCommand = require('../commands/sandbox');
|
|
41
39
|
const cmsCommand = require('../commands/cms');
|
|
42
40
|
const feedbackCommand = require('../commands/feedback');
|
|
43
41
|
const doctorCommand = require('../commands/doctor');
|
|
44
|
-
const completionCommand = require('../commands/completion');
|
|
45
42
|
const notifier = updateNotifier({
|
|
46
43
|
pkg: { ...pkg, name: '@hubspot/cli' },
|
|
47
44
|
distTag: 'latest',
|
|
@@ -119,34 +116,17 @@ const performChecks = argv => {
|
|
|
119
116
|
const setRequestHeaders = () => {
|
|
120
117
|
addUserAgentHeader('HubSpot CLI', pkg.version);
|
|
121
118
|
};
|
|
122
|
-
const loadConfigMiddleware = async (options) => {
|
|
123
|
-
if (configFileExists(true)) {
|
|
124
|
-
loadConfig('', options);
|
|
125
|
-
if (options.config) {
|
|
126
|
-
logger.error(i18n(`${i18nKey}.loadConfigMiddleware.configFileExists`, {
|
|
127
|
-
configPath: getConfigPath(),
|
|
128
|
-
}));
|
|
129
|
-
process.exit(EXIT_CODES.ERROR);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
// We need to load the config when options.config exists,
|
|
133
|
-
// so that getAccountIdFromConfig() in injectAccountIdMiddleware reads from the right config
|
|
134
|
-
if (options.config && fs.existsSync(options.config)) {
|
|
135
|
-
const { config: configPath } = options;
|
|
136
|
-
await loadConfig(configPath, options);
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
119
|
const argv = yargs
|
|
140
120
|
.usage('The command line interface to interact with HubSpot.')
|
|
141
|
-
|
|
142
|
-
.middleware([
|
|
143
|
-
setLogLevel,
|
|
144
|
-
setRequestHeaders,
|
|
145
|
-
loadConfigMiddleware,
|
|
146
|
-
injectAccountIdMiddleware,
|
|
147
|
-
])
|
|
121
|
+
.middleware([setLogLevel, setRequestHeaders])
|
|
148
122
|
.exitProcess(false)
|
|
149
123
|
.fail(handleFailure)
|
|
124
|
+
.option('debug', {
|
|
125
|
+
alias: 'd',
|
|
126
|
+
default: false,
|
|
127
|
+
describe: 'Set log level to debug',
|
|
128
|
+
type: 'boolean',
|
|
129
|
+
})
|
|
150
130
|
.option('noHyperlinks', {
|
|
151
131
|
default: false,
|
|
152
132
|
describe: 'prevent hyperlinks from displaying in the ui',
|
|
@@ -172,9 +152,9 @@ const argv = yargs
|
|
|
172
152
|
.command(createCommand)
|
|
173
153
|
.command(fetchCommand)
|
|
174
154
|
.command(filemanagerCommand)
|
|
175
|
-
.command(
|
|
155
|
+
.command(secretsCommand)
|
|
176
156
|
.command(customObjectCommand)
|
|
177
|
-
.command(
|
|
157
|
+
.command(functionsCommand)
|
|
178
158
|
.command({
|
|
179
159
|
...listCommand,
|
|
180
160
|
aliases: 'ls',
|
|
@@ -185,15 +165,14 @@ const argv = yargs
|
|
|
185
165
|
.command(themeCommand)
|
|
186
166
|
.command(moduleCommand)
|
|
187
167
|
.command(configCommand)
|
|
188
|
-
.command(
|
|
168
|
+
.command(accountsCommand)
|
|
189
169
|
.command(sandboxesCommand)
|
|
190
170
|
.command(feedbackCommand)
|
|
191
171
|
.command(doctorCommand)
|
|
192
|
-
.command(completionCommand)
|
|
193
172
|
.help()
|
|
194
|
-
.alias('h', 'help')
|
|
195
173
|
.recommendCommands()
|
|
196
174
|
.demandCommand(1, '')
|
|
175
|
+
.completion()
|
|
197
176
|
.wrap(getTerminalWidth())
|
|
198
177
|
.strict().argv;
|
|
199
178
|
if (argv.help) {
|
|
@@ -7,23 +7,22 @@ const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
|
7
7
|
const { i18n } = require('../../lib/lang');
|
|
8
8
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
9
9
|
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
10
|
-
const { addTestingOptions,
|
|
10
|
+
const { addConfigOptions, addAccountOptions, addUseEnvironmentOptions, addTestingOptions, } = require('../../lib/commonOpts');
|
|
11
11
|
const { promptUser } = require('../../lib/prompts/promptUtils');
|
|
12
12
|
const { getTableContents } = require('../../lib/ui/table');
|
|
13
13
|
const SpinniesManager = require('../../lib/ui/SpinniesManager');
|
|
14
|
+
const { getConfig, deleteAccount } = require('@hubspot/local-dev-lib/config');
|
|
14
15
|
const { uiAccountDescription } = require('../../lib/ui');
|
|
15
|
-
const { deleteAccount, getConfigAccounts, } = require('@hubspot/local-dev-lib/config');
|
|
16
|
-
const { getAccountIdentifier, } = require('@hubspot/local-dev-lib/config/getAccountIdentifier');
|
|
17
16
|
const { isSpecifiedError } = require('@hubspot/local-dev-lib/errors/index');
|
|
18
|
-
const i18nKey = 'commands.
|
|
17
|
+
const i18nKey = 'commands.accounts.subcommands.clean';
|
|
19
18
|
exports.command = 'clean';
|
|
20
19
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
21
20
|
exports.handler = async (options) => {
|
|
22
21
|
const { qa } = options;
|
|
23
22
|
await loadAndValidateOptions(options, false);
|
|
23
|
+
const config = getConfig();
|
|
24
24
|
trackCommandUsage('accounts-clean', null);
|
|
25
|
-
const
|
|
26
|
-
const filteredTestAccounts = accountsList.filter(p => qa ? p.env === 'qa' : p.env !== 'qa');
|
|
25
|
+
const filteredTestAccounts = config.portals.filter(p => qa ? p.env === 'qa' : p.env !== 'qa');
|
|
27
26
|
if (filteredTestAccounts && filteredTestAccounts.length === 0) {
|
|
28
27
|
logger.log(i18n(`${i18nKey}.noResults`));
|
|
29
28
|
process.exit(EXIT_CODES.SUCCESS);
|
|
@@ -37,7 +36,7 @@ exports.handler = async (options) => {
|
|
|
37
36
|
});
|
|
38
37
|
for (const account of filteredTestAccounts) {
|
|
39
38
|
try {
|
|
40
|
-
await accessTokenForPersonalAccessKey(
|
|
39
|
+
await accessTokenForPersonalAccessKey(account.portalId, true);
|
|
41
40
|
}
|
|
42
41
|
catch (error) {
|
|
43
42
|
if (isSpecifiedError(error, {
|
|
@@ -63,9 +62,7 @@ exports.handler = async (options) => {
|
|
|
63
62
|
count: accountsToRemove.length,
|
|
64
63
|
}),
|
|
65
64
|
});
|
|
66
|
-
logger.log(getTableContents(accountsToRemove.map(p => [
|
|
67
|
-
uiAccountDescription(getAccountIdentifier(p)),
|
|
68
|
-
]), { border: { bodyLeft: ' ' } }));
|
|
65
|
+
logger.log(getTableContents(accountsToRemove.map(p => [uiAccountDescription(p.portalId)]), { border: { bodyLeft: ' ' } }));
|
|
69
66
|
const { accountsCleanPrompt } = await promptUser([
|
|
70
67
|
{
|
|
71
68
|
name: 'accountsCleanPrompt',
|
|
@@ -97,6 +94,8 @@ exports.handler = async (options) => {
|
|
|
97
94
|
};
|
|
98
95
|
exports.builder = yargs => {
|
|
99
96
|
addConfigOptions(yargs);
|
|
97
|
+
addAccountOptions(yargs);
|
|
98
|
+
addUseEnvironmentOptions(yargs);
|
|
100
99
|
addTestingOptions(yargs);
|
|
101
100
|
yargs.example([['$0 accounts clean']]);
|
|
102
101
|
return yargs;
|
|
@@ -4,24 +4,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
5
5
|
const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
|
|
6
6
|
const { getAccessToken } = require('@hubspot/local-dev-lib/personalAccessKey');
|
|
7
|
-
const { addConfigOptions } = require('../../lib/commonOpts');
|
|
7
|
+
const { getAccountId, addAccountOptions, addConfigOptions, } = require('../../lib/commonOpts');
|
|
8
8
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
9
9
|
const { i18n } = require('../../lib/lang');
|
|
10
10
|
const { getTableContents } = require('../../lib/ui/table');
|
|
11
|
-
const i18nKey = 'commands.
|
|
11
|
+
const i18nKey = 'commands.accounts.subcommands.info';
|
|
12
12
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
13
|
-
exports.command = 'info [account]';
|
|
13
|
+
exports.command = 'info [--account]';
|
|
14
14
|
exports.handler = async (options) => {
|
|
15
15
|
await loadAndValidateOptions(options);
|
|
16
|
-
const
|
|
17
|
-
const config = getAccountConfig(
|
|
16
|
+
const accountId = getAccountId(options);
|
|
17
|
+
const config = getAccountConfig(accountId);
|
|
18
18
|
// check if the provided account is using a personal access key, if not, show an error
|
|
19
|
-
if (config
|
|
19
|
+
if (config.authType === 'personalaccesskey') {
|
|
20
20
|
const { name, personalAccessKey, env } = config;
|
|
21
|
-
const response = await getAccessToken(personalAccessKey, env,
|
|
21
|
+
const response = await getAccessToken(personalAccessKey, env, accountId);
|
|
22
22
|
const scopeGroups = response.scopeGroups.map(s => [s]);
|
|
23
23
|
logger.log(i18n(`${i18nKey}.name`, { name }));
|
|
24
|
-
logger.log(i18n(`${i18nKey}.accountId`, { accountId
|
|
24
|
+
logger.log(i18n(`${i18nKey}.accountId`, { accountId }));
|
|
25
25
|
logger.log(i18n(`${i18nKey}.scopeGroups`));
|
|
26
26
|
logger.log(getTableContents(scopeGroups, { border: { bodyLeft: ' ' } }));
|
|
27
27
|
}
|
|
@@ -31,10 +31,14 @@ exports.handler = async (options) => {
|
|
|
31
31
|
};
|
|
32
32
|
exports.builder = yargs => {
|
|
33
33
|
addConfigOptions(yargs);
|
|
34
|
+
addAccountOptions(yargs);
|
|
34
35
|
yargs.example([
|
|
35
36
|
['$0 accounts info', i18n(`${i18nKey}.examples.default`)],
|
|
36
|
-
[
|
|
37
|
-
|
|
37
|
+
[
|
|
38
|
+
'$0 accounts info --account=MyAccount',
|
|
39
|
+
i18n(`${i18nKey}.examples.nameBased`),
|
|
40
|
+
],
|
|
41
|
+
['$0 accounts info --account=1234567', i18n(`${i18nKey}.examples.idBased`)],
|
|
38
42
|
]);
|
|
39
43
|
return yargs;
|
|
40
44
|
};
|
|
@@ -2,17 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
5
|
-
const { getConfig, getConfigPath
|
|
6
|
-
const { getAccountIdentifier, } = require('@hubspot/local-dev-lib/config/getAccountIdentifier');
|
|
7
|
-
const { addConfigOptions } = require('../../lib/commonOpts');
|
|
5
|
+
const { getConfig, getConfigPath } = require('@hubspot/local-dev-lib/config');
|
|
8
6
|
const { getTableContents, getTableHeader } = require('../../lib/ui/table');
|
|
7
|
+
const { addConfigOptions, addAccountOptions, getAccountId, } = require('../../lib/commonOpts');
|
|
9
8
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
10
9
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
11
10
|
const { isSandbox, isDeveloperTestAccount } = require('../../lib/accountTypes');
|
|
12
11
|
const { i18n } = require('../../lib/lang');
|
|
13
12
|
const { HUBSPOT_ACCOUNT_TYPES, HUBSPOT_ACCOUNT_TYPE_STRINGS, } = require('@hubspot/local-dev-lib/constants/config');
|
|
14
|
-
const i18nKey = 'commands.
|
|
15
|
-
exports.command =
|
|
13
|
+
const i18nKey = 'commands.accounts.subcommands.list';
|
|
14
|
+
exports.command = 'list';
|
|
16
15
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
17
16
|
const sortAndMapPortals = portals => {
|
|
18
17
|
const mappedPortalData = {};
|
|
@@ -22,7 +21,7 @@ const sortAndMapPortals = portals => {
|
|
|
22
21
|
(p.accountType === HUBSPOT_ACCOUNT_TYPES.STANDARD ||
|
|
23
22
|
p.accountType === HUBSPOT_ACCOUNT_TYPES.APP_DEVELOPER))
|
|
24
23
|
.forEach(portal => {
|
|
25
|
-
mappedPortalData[
|
|
24
|
+
mappedPortalData[portal.portalId] = [portal];
|
|
26
25
|
});
|
|
27
26
|
// Non-standard portals (sandbox, developer test account)
|
|
28
27
|
portals
|
|
@@ -35,7 +34,7 @@ const sortAndMapPortals = portals => {
|
|
|
35
34
|
];
|
|
36
35
|
}
|
|
37
36
|
else {
|
|
38
|
-
mappedPortalData[
|
|
37
|
+
mappedPortalData[p.portalId] = [p];
|
|
39
38
|
}
|
|
40
39
|
});
|
|
41
40
|
return mappedPortalData;
|
|
@@ -43,7 +42,7 @@ const sortAndMapPortals = portals => {
|
|
|
43
42
|
const getPortalData = mappedPortalData => {
|
|
44
43
|
const portalData = [];
|
|
45
44
|
Object.entries(mappedPortalData).forEach(([key, set]) => {
|
|
46
|
-
const hasParentPortal = set.filter(p =>
|
|
45
|
+
const hasParentPortal = set.filter(p => p.portalId === parseInt(key, 10))[0];
|
|
47
46
|
set.forEach(portal => {
|
|
48
47
|
let name = `${portal.name} [${HUBSPOT_ACCOUNT_TYPE_STRINGS[portal.accountType]}]`;
|
|
49
48
|
if (isSandbox(portal)) {
|
|
@@ -56,19 +55,18 @@ const getPortalData = mappedPortalData => {
|
|
|
56
55
|
name = `↳ ${name}`;
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
|
-
portalData.push([name,
|
|
58
|
+
portalData.push([name, portal.portalId, portal.authType]);
|
|
60
59
|
});
|
|
61
60
|
});
|
|
62
61
|
return portalData;
|
|
63
62
|
};
|
|
64
63
|
exports.handler = async (options) => {
|
|
65
64
|
await loadAndValidateOptions(options, false);
|
|
66
|
-
const
|
|
67
|
-
trackCommandUsage('accounts-list', null,
|
|
65
|
+
const accountId = getAccountId(options);
|
|
66
|
+
trackCommandUsage('accounts-list', null, accountId);
|
|
68
67
|
const config = getConfig();
|
|
69
68
|
const configPath = getConfigPath();
|
|
70
|
-
const
|
|
71
|
-
const mappedPortalData = sortAndMapPortals(accountsList);
|
|
69
|
+
const mappedPortalData = sortAndMapPortals(config.portals);
|
|
72
70
|
const portalData = getPortalData(mappedPortalData);
|
|
73
71
|
portalData.unshift(getTableHeader([
|
|
74
72
|
i18n(`${i18nKey}.labels.name`),
|
|
@@ -76,14 +74,13 @@ exports.handler = async (options) => {
|
|
|
76
74
|
i18n(`${i18nKey}.labels.authType`),
|
|
77
75
|
]));
|
|
78
76
|
logger.log(i18n(`${i18nKey}.configPath`, { configPath }));
|
|
79
|
-
logger.log(i18n(`${i18nKey}.defaultAccount`, {
|
|
80
|
-
account: getConfigDefaultAccount(config),
|
|
81
|
-
}));
|
|
77
|
+
logger.log(i18n(`${i18nKey}.defaultAccount`, { account: config.defaultPortal }));
|
|
82
78
|
logger.log(i18n(`${i18nKey}.accounts`));
|
|
83
79
|
logger.log(getTableContents(portalData, { border: { bodyLeft: ' ' } }));
|
|
84
80
|
};
|
|
85
81
|
exports.builder = yargs => {
|
|
86
82
|
addConfigOptions(yargs);
|
|
83
|
+
addAccountOptions(yargs);
|
|
87
84
|
yargs.example([['$0 accounts list']]);
|
|
88
85
|
return yargs;
|
|
89
86
|
};
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
// @ts-nocheck
|
|
4
|
-
const { addConfigOptions } = require('../../lib/commonOpts');
|
|
5
4
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
6
5
|
const { getConfig, getConfigPath, deleteAccount, getConfigDefaultAccount, getAccountId: getAccountIdFromConfig, updateDefaultAccount, } = require('@hubspot/local-dev-lib/config');
|
|
7
6
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
8
7
|
const { i18n } = require('../../lib/lang');
|
|
9
8
|
const { selectAccountFromConfig } = require('../../lib/prompts/accountsPrompt');
|
|
10
9
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
11
|
-
const i18nKey = 'commands.
|
|
12
|
-
exports.command = 'remove [account]';
|
|
10
|
+
const i18nKey = 'commands.accounts.subcommands.remove';
|
|
11
|
+
exports.command = 'remove [--account]';
|
|
13
12
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
14
13
|
exports.handler = async (options) => {
|
|
15
14
|
await loadAndValidateOptions(options, false);
|
|
16
|
-
const { account } = options;
|
|
17
|
-
let accountToRemove = account;
|
|
18
15
|
let config = getConfig();
|
|
16
|
+
let accountToRemove = options.account;
|
|
19
17
|
if (accountToRemove && !getAccountIdFromConfig(accountToRemove)) {
|
|
20
18
|
logger.error(i18n(`${i18nKey}.errors.accountNotFound`, {
|
|
21
19
|
specifiedAccount: accountToRemove,
|
|
@@ -41,14 +39,16 @@ exports.handler = async (options) => {
|
|
|
41
39
|
}
|
|
42
40
|
};
|
|
43
41
|
exports.builder = yargs => {
|
|
44
|
-
|
|
45
|
-
yargs.positional('account', {
|
|
42
|
+
yargs.option('account', {
|
|
46
43
|
describe: i18n(`${i18nKey}.options.account.describe`),
|
|
47
44
|
type: 'string',
|
|
48
45
|
});
|
|
49
46
|
yargs.example([
|
|
50
47
|
['$0 accounts remove', i18n(`${i18nKey}.examples.default`)],
|
|
51
|
-
[
|
|
48
|
+
[
|
|
49
|
+
'$0 accounts remove --account=MyAccount',
|
|
50
|
+
i18n(`${i18nKey}.examples.byName`),
|
|
51
|
+
],
|
|
52
52
|
]);
|
|
53
53
|
return yargs;
|
|
54
54
|
};
|
|
@@ -3,17 +3,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
// @ts-nocheck
|
|
4
4
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
5
5
|
const { renameAccount } = require('@hubspot/local-dev-lib/config');
|
|
6
|
-
const { addConfigOptions, addAccountOptions } = require('../../lib/commonOpts');
|
|
6
|
+
const { addConfigOptions, addAccountOptions, getAccountId, } = require('../../lib/commonOpts');
|
|
7
7
|
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
8
8
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
9
9
|
const { i18n } = require('../../lib/lang');
|
|
10
|
-
const i18nKey = 'commands.
|
|
10
|
+
const i18nKey = 'commands.accounts.subcommands.rename';
|
|
11
11
|
exports.command = 'rename <accountName> <newName>';
|
|
12
12
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
13
13
|
exports.handler = async (options) => {
|
|
14
14
|
loadAndValidateOptions(options);
|
|
15
|
-
const { accountName, newName
|
|
16
|
-
|
|
15
|
+
const { accountName, newName } = options;
|
|
16
|
+
const accountId = getAccountId(options);
|
|
17
|
+
trackCommandUsage('accounts-rename', null, accountId);
|
|
17
18
|
await renameAccount(accountName, newName);
|
|
18
19
|
return logger.log(i18n(`${i18nKey}.success.renamed`, {
|
|
19
20
|
name: accountName,
|
|
@@ -7,8 +7,8 @@ const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
|
7
7
|
const { i18n } = require('../../lib/lang');
|
|
8
8
|
const { selectAccountFromConfig } = require('../../lib/prompts/accountsPrompt');
|
|
9
9
|
const { loadAndValidateOptions } = require('../../lib/validation');
|
|
10
|
-
const i18nKey = 'commands.
|
|
11
|
-
exports.command = 'use [account]';
|
|
10
|
+
const i18nKey = 'commands.accounts.subcommands.use';
|
|
11
|
+
exports.command = 'use [--account]';
|
|
12
12
|
exports.describe = i18n(`${i18nKey}.describe`);
|
|
13
13
|
exports.handler = async (options) => {
|
|
14
14
|
await loadAndValidateOptions(options, false);
|
|
@@ -31,14 +31,17 @@ exports.handler = async (options) => {
|
|
|
31
31
|
}));
|
|
32
32
|
};
|
|
33
33
|
exports.builder = yargs => {
|
|
34
|
-
yargs.
|
|
34
|
+
yargs.option('account', {
|
|
35
35
|
describe: i18n(`${i18nKey}.options.account.describe`),
|
|
36
36
|
type: 'string',
|
|
37
37
|
});
|
|
38
38
|
yargs.example([
|
|
39
39
|
['$0 accounts use', i18n(`${i18nKey}.examples.default`)],
|
|
40
|
-
[
|
|
41
|
-
|
|
40
|
+
[
|
|
41
|
+
'$0 accounts use --account=MyAccount',
|
|
42
|
+
i18n(`${i18nKey}.examples.nameBased`),
|
|
43
|
+
],
|
|
44
|
+
['$0 accounts use --account=1234567', i18n(`${i18nKey}.examples.idBased`)],
|
|
42
45
|
]);
|
|
43
46
|
return yargs;
|
|
44
47
|
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
const { addConfigOptions, addAccountOptions } = require('../lib/commonOpts');
|
|
5
|
+
const { i18n } = require('../lib/lang');
|
|
6
|
+
const list = require('./accounts/list');
|
|
7
|
+
const rename = require('./accounts/rename');
|
|
8
|
+
const use = require('./accounts/use');
|
|
9
|
+
const info = require('./accounts/info');
|
|
10
|
+
const remove = require('./accounts/remove');
|
|
11
|
+
const clean = require('./accounts/clean');
|
|
12
|
+
const i18nKey = 'commands.accounts';
|
|
13
|
+
exports.command = 'accounts';
|
|
14
|
+
exports.describe = i18n(`${i18nKey}.describe`);
|
|
15
|
+
exports.builder = yargs => {
|
|
16
|
+
addConfigOptions(yargs);
|
|
17
|
+
addAccountOptions(yargs);
|
|
18
|
+
yargs
|
|
19
|
+
.command({
|
|
20
|
+
...list,
|
|
21
|
+
aliases: 'ls',
|
|
22
|
+
})
|
|
23
|
+
.command(rename)
|
|
24
|
+
.command(use)
|
|
25
|
+
.command(info)
|
|
26
|
+
.command(remove)
|
|
27
|
+
.command(clean)
|
|
28
|
+
.demandCommand(1, '');
|
|
29
|
+
return yargs;
|
|
30
|
+
};
|
package/commands/auth.js
CHANGED
|
@@ -8,13 +8,13 @@ const { ENVIRONMENTS, } = require('@hubspot/local-dev-lib/constants/environments
|
|
|
8
8
|
const { DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME, } = require('@hubspot/local-dev-lib/constants/config');
|
|
9
9
|
const { i18n } = require('../lib/lang');
|
|
10
10
|
const { getAccessToken, updateConfigWithAccessToken, } = require('@hubspot/local-dev-lib/personalAccessKey');
|
|
11
|
-
const { updateAccountConfig, writeConfig, getConfig, getConfigPath, loadConfig,
|
|
11
|
+
const { updateAccountConfig, writeConfig, getConfig, getConfigPath, loadConfig, } = require('@hubspot/local-dev-lib/config');
|
|
12
12
|
const { commaSeparatedValues, toKebabCase, } = require('@hubspot/local-dev-lib/text');
|
|
13
13
|
const { promptUser } = require('../lib/prompts/promptUtils');
|
|
14
14
|
const { personalAccessKeyPrompt, OAUTH_FLOW, } = require('../lib/prompts/personalAccessKeyPrompt');
|
|
15
15
|
const { cliAccountNamePrompt } = require('../lib/prompts/accountNamePrompt');
|
|
16
16
|
const { setAsDefaultAccountPrompt, } = require('../lib/prompts/setAsDefaultAccountPrompt');
|
|
17
|
-
const { addConfigOptions, setLogLevel, getAccountId, addTestingOptions,
|
|
17
|
+
const { addConfigOptions, setLogLevel, getAccountId, addTestingOptions, } = require('../lib/commonOpts');
|
|
18
18
|
const { trackAuthAction, trackCommandUsage } = require('../lib/usageTracking');
|
|
19
19
|
const { authenticateWithOauth } = require('../lib/oauth');
|
|
20
20
|
const { EXIT_CODES } = require('../lib/enums/exitCodes');
|
|
@@ -31,23 +31,21 @@ const ALLOWED_AUTH_METHODS = [
|
|
|
31
31
|
PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
32
32
|
];
|
|
33
33
|
const SUPPORTED_AUTHENTICATION_PROTOCOLS_TEXT = commaSeparatedValues(ALLOWED_AUTH_METHODS);
|
|
34
|
-
exports.command = 'auth';
|
|
34
|
+
exports.command = 'auth [type] [--account]';
|
|
35
35
|
exports.describe = i18n(`${i18nKey}.describe`, {
|
|
36
36
|
supportedProtocols: SUPPORTED_AUTHENTICATION_PROTOCOLS_TEXT,
|
|
37
37
|
});
|
|
38
38
|
exports.handler = async (options) => {
|
|
39
|
-
const {
|
|
40
|
-
const authType = (
|
|
41
|
-
PERSONAL_ACCESS_KEY_AUTH_METHOD.value;
|
|
39
|
+
const { type, config: c, qa, account } = options;
|
|
40
|
+
const authType = (type && type.toLowerCase()) || PERSONAL_ACCESS_KEY_AUTH_METHOD.value;
|
|
42
41
|
setLogLevel(options);
|
|
43
|
-
|
|
44
|
-
// Needed to load deprecated config
|
|
45
|
-
loadConfig(configFlagValue);
|
|
46
|
-
checkAndWarnGitInclusion(getConfigPath());
|
|
47
|
-
if (!getConfigPath(configFlagValue)) {
|
|
42
|
+
if (!getConfigPath(c)) {
|
|
48
43
|
logger.error(i18n(`${i18nKey}.errors.noConfigFileFound`));
|
|
49
44
|
process.exit(EXIT_CODES.ERROR);
|
|
50
45
|
}
|
|
46
|
+
const env = qa ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD;
|
|
47
|
+
loadConfig(c);
|
|
48
|
+
checkAndWarnGitInclusion(getConfigPath());
|
|
51
49
|
trackCommandUsage('auth');
|
|
52
50
|
trackAuthAction('auth', authType, TRACKING_STATUS.STARTED);
|
|
53
51
|
let configData;
|
|
@@ -66,10 +64,7 @@ exports.handler = async (options) => {
|
|
|
66
64
|
successAuthMethod = OAUTH_AUTH_METHOD.name;
|
|
67
65
|
break;
|
|
68
66
|
case PERSONAL_ACCESS_KEY_AUTH_METHOD.value:
|
|
69
|
-
configData = await personalAccessKeyPrompt({
|
|
70
|
-
env,
|
|
71
|
-
account: providedAccountId,
|
|
72
|
-
});
|
|
67
|
+
configData = await personalAccessKeyPrompt({ env, account });
|
|
73
68
|
try {
|
|
74
69
|
token = await getAccessToken(configData.personalAccessKey, env);
|
|
75
70
|
defaultName = toKebabCase(token.hubName);
|
|
@@ -117,7 +112,7 @@ exports.handler = async (options) => {
|
|
|
117
112
|
else {
|
|
118
113
|
const config = getConfig();
|
|
119
114
|
logger.info(i18n(`lib.prompts.setAsDefaultAccountPrompt.keepingCurrentDefault`, {
|
|
120
|
-
accountName:
|
|
115
|
+
accountName: config.defaultPortal,
|
|
121
116
|
}));
|
|
122
117
|
}
|
|
123
118
|
logger.success(i18n(`${i18nKey}.success.configFileUpdated`, {
|
|
@@ -135,27 +130,25 @@ exports.handler = async (options) => {
|
|
|
135
130
|
process.exit(EXIT_CODES.SUCCESS);
|
|
136
131
|
};
|
|
137
132
|
exports.builder = yargs => {
|
|
133
|
+
yargs.positional('type', {
|
|
134
|
+
describe: i18n(`${i18nKey}.positionals.type.describe`),
|
|
135
|
+
type: 'string',
|
|
136
|
+
choices: [
|
|
137
|
+
`${PERSONAL_ACCESS_KEY_AUTH_METHOD.value}`,
|
|
138
|
+
`${OAUTH_AUTH_METHOD.value}`,
|
|
139
|
+
],
|
|
140
|
+
default: PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
141
|
+
defaultDescription: i18n(`${i18nKey}.positionals.type.defaultDescription`, {
|
|
142
|
+
authMethod: PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
143
|
+
}),
|
|
144
|
+
});
|
|
138
145
|
yargs.options({
|
|
139
|
-
'auth-type': {
|
|
140
|
-
describe: i18n(`${i18nKey}.options.authType.describe`),
|
|
141
|
-
type: 'string',
|
|
142
|
-
choices: [
|
|
143
|
-
`${PERSONAL_ACCESS_KEY_AUTH_METHOD.value}`,
|
|
144
|
-
`${OAUTH_AUTH_METHOD.value}`,
|
|
145
|
-
],
|
|
146
|
-
default: PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
147
|
-
defaultDescription: i18n(`${i18nKey}.options.authType.defaultDescription`, {
|
|
148
|
-
authMethod: PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
149
|
-
}),
|
|
150
|
-
},
|
|
151
146
|
account: {
|
|
152
147
|
describe: i18n(`${i18nKey}.options.account.describe`),
|
|
153
148
|
type: 'string',
|
|
154
|
-
alias: 'a',
|
|
155
149
|
},
|
|
156
150
|
});
|
|
157
151
|
addConfigOptions(yargs);
|
|
158
152
|
addTestingOptions(yargs);
|
|
159
|
-
addGlobalOptions(yargs);
|
|
160
153
|
return yargs;
|
|
161
154
|
};
|