@hubspot/cli 7.2.2-experimental.0 → 7.2.4-experimental.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 +3 -52
- package/commands/account/info.d.ts +1 -1
- package/commands/account/info.js +8 -5
- package/commands/account/list.js +0 -4
- package/commands/account.js +0 -4
- package/commands/auth.d.ts +9 -0
- package/commands/auth.js +89 -87
- package/commands/config/set.d.ts +0 -12
- package/commands/config/set.js +29 -30
- package/commands/config.d.ts +1 -4
- package/commands/config.js +10 -45
- package/commands/create/api-sample.js +14 -4
- package/commands/customObject/create.d.ts +11 -0
- package/commands/customObject/create.js +37 -28
- package/commands/customObject/schema/create.d.ts +10 -0
- package/commands/customObject/schema/create.js +40 -42
- package/commands/customObject/schema/delete.d.ts +11 -0
- package/commands/customObject/schema/delete.js +34 -27
- package/commands/customObject/schema/fetch-all.d.ts +10 -0
- package/commands/customObject/schema/fetch-all.js +31 -24
- package/commands/customObject/schema/fetch.d.ts +11 -0
- package/commands/customObject/schema/fetch.js +34 -42
- package/commands/customObject/schema/list.d.ts +7 -0
- package/commands/customObject/schema/list.js +23 -14
- package/commands/customObject/schema/update.d.ts +11 -0
- package/commands/customObject/schema/update.js +44 -46
- package/commands/customObject/schema.d.ts +5 -1
- package/commands/customObject/schema.js +49 -11
- package/commands/customObject.d.ts +4 -1
- package/commands/customObject.js +54 -21
- package/commands/filemanager/fetch.d.ts +12 -0
- package/commands/filemanager/fetch.js +33 -30
- package/commands/filemanager/upload.d.ts +11 -0
- package/commands/filemanager/upload.js +53 -47
- package/commands/filemanager.d.ts +4 -1
- package/commands/filemanager.js +41 -7
- package/commands/init.d.ts +11 -0
- package/commands/init.js +123 -98
- package/commands/list.d.ts +9 -0
- package/commands/list.js +63 -57
- package/commands/mv.d.ts +10 -0
- package/commands/mv.js +32 -32
- package/commands/open.d.ts +10 -0
- package/commands/open.js +37 -34
- package/commands/project/add.js +62 -16
- package/commands/project/cloneApp.js +3 -3
- package/commands/project/create.js +72 -15
- package/commands/project/dev/deprecatedFlow.d.ts +5 -0
- package/commands/project/dev/deprecatedFlow.js +137 -0
- package/commands/project/dev/index.d.ts +6 -0
- package/commands/project/dev/index.js +52 -0
- package/commands/project/dev/unifiedFlow.d.ts +5 -0
- package/commands/project/dev/unifiedFlow.js +112 -0
- package/commands/project/migrateApp.js +3 -3
- package/commands/project/upload.js +7 -2
- package/commands/remove.d.ts +9 -0
- package/commands/remove.js +25 -23
- package/commands/sandbox/create.d.ts +12 -0
- package/commands/sandbox/create.js +90 -72
- package/commands/sandbox/delete.d.ts +11 -0
- package/commands/sandbox/delete.js +112 -95
- package/commands/sandbox.d.ts +4 -1
- package/commands/sandbox.js +44 -10
- package/commands/theme/generate-selectors.d.ts +9 -0
- package/commands/theme/generate-selectors.js +61 -43
- package/commands/theme/marketplace-validate.d.ts +10 -0
- package/commands/theme/marketplace-validate.js +32 -26
- package/commands/theme/preview.d.ts +16 -0
- package/commands/theme/preview.js +104 -97
- package/commands/theme.d.ts +4 -1
- package/commands/theme.js +44 -10
- package/lang/en.lyaml +55 -77
- package/lib/DevServerManagerV2.d.ts +34 -0
- package/lib/DevServerManagerV2.js +85 -0
- package/lib/LocalDevManager.d.ts +2 -2
- package/lib/LocalDevManager.js +1 -1
- package/lib/LocalDevManagerV2.d.ts +64 -0
- package/lib/LocalDevManagerV2.js +382 -0
- package/lib/buildAccount.d.ts +2 -3
- package/lib/commonOpts.d.ts +1 -0
- package/lib/commonOpts.js +30 -0
- package/lib/constants.d.ts +12 -3
- package/lib/constants.js +13 -4
- package/lib/customObject.d.ts +3 -0
- package/lib/customObject.js +15 -0
- package/lib/doctor/Diagnosis.d.ts +0 -1
- package/lib/doctor/Diagnosis.js +0 -7
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +6 -1
- package/lib/doctor/DiagnosticInfoBuilder.js +5 -1
- package/lib/doctor/Doctor.d.ts +1 -1
- package/lib/doctor/Doctor.js +6 -14
- package/lib/localDev.d.ts +3 -2
- package/lib/localDev.js +2 -2
- package/lib/marketplaceValidate.d.ts +2 -2
- package/lib/projects/buildAndDeploy.js +4 -1
- package/lib/projects/create.d.ts +5 -0
- package/lib/projects/create.js +51 -0
- package/lib/projects/index.d.ts +1 -5
- package/lib/projects/index.js +1 -62
- package/lib/projects/structure.d.ts +4 -0
- package/lib/projects/structure.js +9 -0
- package/lib/projects/upload.d.ts +1 -1
- package/lib/projects/upload.js +2 -2
- package/lib/prompts/accountNamePrompt.d.ts +1 -2
- package/lib/prompts/createProjectPrompt.d.ts +6 -8
- package/lib/prompts/createProjectPrompt.js +36 -62
- package/lib/prompts/personalAccessKeyPrompt.d.ts +4 -4
- package/lib/prompts/projectAddPrompt.d.ts +3 -3
- package/lib/prompts/projectAddPrompt.js +16 -6
- package/lib/prompts/projectDevTargetAccountPrompt.d.ts +3 -2
- package/lib/prompts/sandboxesPrompt.d.ts +3 -2
- package/lib/prompts/sandboxesPrompt.js +1 -1
- package/lib/sandboxSync.js +6 -2
- package/lib/sandboxes.d.ts +2 -5
- package/lib/testUtils.d.ts +12 -0
- package/lib/testUtils.js +10 -0
- package/lib/ui/index.d.ts +3 -3
- package/lib/ui/index.js +9 -8
- package/lib/ui/supportHyperlinks.js +2 -2
- package/lib/ui/supportsColor.js +2 -2
- package/lib/upload.d.ts +1 -1
- package/lib/upload.js +20 -20
- package/lib/validation.d.ts +1 -1
- package/lib/yargsUtils.d.ts +9 -0
- package/lib/yargsUtils.js +40 -0
- package/package.json +5 -4
- package/types/ProjectComponents.d.ts +38 -0
- package/types/ProjectComponents.js +3 -0
- package/types/Projects.d.ts +1 -6
- package/types/Prompts.d.ts +7 -0
- package/types/Sandboxes.d.ts +2 -0
- package/types/Yargs.d.ts +8 -0
- package/commands/account/auth.d.ts +0 -10
- package/commands/account/auth.js +0 -154
- package/commands/account/createOverride.d.ts +0 -10
- package/commands/account/createOverride.js +0 -62
- package/commands/config/migrate.d.ts +0 -10
- package/commands/config/migrate.js +0 -86
- package/commands/project/dev.d.ts +0 -1
- package/commands/project/dev.js +0 -146
- package/lib/configMigrate.d.ts +0 -2
- package/lib/configMigrate.js +0 -83
- package/lib/hasFlag.d.ts +0 -1
- package/lib/hasFlag.js +0 -15
package/bin/cli.js
CHANGED
|
@@ -6,7 +6,6 @@ const chalk = require('chalk');
|
|
|
6
6
|
const { logger } = require('@hubspot/local-dev-lib/logger');
|
|
7
7
|
const { addUserAgentHeader } = require('@hubspot/local-dev-lib/http');
|
|
8
8
|
const { loadConfig, getAccountId, configFileExists, getConfigPath, validateConfig, } = require('@hubspot/local-dev-lib/config');
|
|
9
|
-
const { DEFAULT_ACCOUNT_OVERRIDE_ERROR_INVALID_ID, DEFAULT_ACCOUNT_OVERRIDE_ERROR_ACCOUNT_NOT_FOUND, DEFAULT_ACCOUNT_OVERRIDE_FILE_NAME, } = require('@hubspot/local-dev-lib/constants/config');
|
|
10
9
|
const { logError } = require('../lib/errorHandlers/index');
|
|
11
10
|
const { setLogLevel, getCommandName } = require('../lib/commonOpts');
|
|
12
11
|
const { validateAccount } = require('../lib/validation');
|
|
@@ -138,17 +137,9 @@ const isTargetedCommand = (options, commandMap) => {
|
|
|
138
137
|
};
|
|
139
138
|
return checkCommand(options, commandMap);
|
|
140
139
|
};
|
|
141
|
-
const skipConfigAccountsSubCommands = {
|
|
142
|
-
target: false,
|
|
143
|
-
subCommands: {
|
|
144
|
-
auth: { target: true },
|
|
145
|
-
},
|
|
146
|
-
};
|
|
147
140
|
const SKIP_CONFIG_VALIDATION = {
|
|
148
141
|
init: { target: true },
|
|
149
142
|
auth: { target: true },
|
|
150
|
-
accounts: skipConfigAccountsSubCommands,
|
|
151
|
-
account: skipConfigAccountsSubCommands,
|
|
152
143
|
};
|
|
153
144
|
const handleDeprecatedEnvVariables = options => {
|
|
154
145
|
// HUBSPOT_PORTAL_ID is deprecated, but we'll still support it for now
|
|
@@ -173,39 +164,9 @@ const injectAccountIdMiddleware = async (options) => {
|
|
|
173
164
|
options.derivedAccountId = parseInt(process.env.HUBSPOT_ACCOUNT_ID, 10);
|
|
174
165
|
}
|
|
175
166
|
else {
|
|
176
|
-
|
|
177
|
-
options.derivedAccountId = getAccountId(account);
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
logError(error);
|
|
181
|
-
if (error.cause === DEFAULT_ACCOUNT_OVERRIDE_ERROR_INVALID_ID) {
|
|
182
|
-
logger.log(i18n(`${i18nKey}.injectAccountIdMiddleware.invalidAccountId`, {
|
|
183
|
-
overrideCommand: uiCommandReference('hs account create-override'),
|
|
184
|
-
hsAccountFileName: DEFAULT_ACCOUNT_OVERRIDE_FILE_NAME,
|
|
185
|
-
}));
|
|
186
|
-
}
|
|
187
|
-
if (error.cause === DEFAULT_ACCOUNT_OVERRIDE_ERROR_ACCOUNT_NOT_FOUND) {
|
|
188
|
-
logger.log(i18n(`${i18nKey}.injectAccountIdMiddleware.accountNotFound`, {
|
|
189
|
-
configPath: getConfigPath(),
|
|
190
|
-
authCommand: uiCommandReference('hs account auth'),
|
|
191
|
-
hsAccountFileName: DEFAULT_ACCOUNT_OVERRIDE_FILE_NAME,
|
|
192
|
-
}));
|
|
193
|
-
}
|
|
194
|
-
process.exit(EXIT_CODES.ERROR);
|
|
195
|
-
}
|
|
167
|
+
options.derivedAccountId = getAccountId(account);
|
|
196
168
|
}
|
|
197
169
|
};
|
|
198
|
-
const skipLoadConfigAccountSubCommands = {
|
|
199
|
-
target: false,
|
|
200
|
-
subCommands: { auth: { target: true } },
|
|
201
|
-
};
|
|
202
|
-
const SKIP_LOAD_CONFIG = {
|
|
203
|
-
account: skipLoadConfigAccountSubCommands,
|
|
204
|
-
accounts: skipLoadConfigAccountSubCommands,
|
|
205
|
-
};
|
|
206
|
-
const SKIP_CONFIG_FLAG_VALIDATION = {
|
|
207
|
-
config: { target: false, subCommands: { migrate: { target: true } } },
|
|
208
|
-
};
|
|
209
170
|
const loadConfigMiddleware = async (options) => {
|
|
210
171
|
// Skip this when no command is provided
|
|
211
172
|
if (!options._.length) {
|
|
@@ -217,21 +178,13 @@ const loadConfigMiddleware = async (options) => {
|
|
|
217
178
|
process.exit(EXIT_CODES.ERROR);
|
|
218
179
|
}
|
|
219
180
|
};
|
|
220
|
-
if (configFileExists(true) &&
|
|
221
|
-
options.config &&
|
|
222
|
-
!isTargetedCommand(options, SKIP_CONFIG_FLAG_VALIDATION)) {
|
|
181
|
+
if (configFileExists(true) && options.config) {
|
|
223
182
|
logger.error(i18n(`${i18nKey}.loadConfigMiddleware.configFileExists`, {
|
|
224
183
|
configPath: getConfigPath(),
|
|
225
184
|
}));
|
|
226
185
|
process.exit(EXIT_CODES.ERROR);
|
|
227
186
|
}
|
|
228
|
-
|
|
229
|
-
// 1. `hs init`
|
|
230
|
-
// 2. `hs account auth` only if the global config file does not exist
|
|
231
|
-
if (!isTargetedCommand(options, {
|
|
232
|
-
init: { target: true },
|
|
233
|
-
}) &&
|
|
234
|
-
!(isTargetedCommand(options, SKIP_LOAD_CONFIG) && !configFileExists(true))) {
|
|
187
|
+
else if (!isTargetedCommand(options, { init: { target: true } })) {
|
|
235
188
|
const { config: configPath } = options;
|
|
236
189
|
const config = loadConfig(configPath, options);
|
|
237
190
|
// We don't run validateConfig() for auth because users should be able to run it when
|
|
@@ -252,7 +205,6 @@ const checkAndWarnGitInclusionMiddleware = options => {
|
|
|
252
205
|
const accountsSubCommands = {
|
|
253
206
|
target: false,
|
|
254
207
|
subCommands: {
|
|
255
|
-
auth: { target: true },
|
|
256
208
|
clean: { target: true },
|
|
257
209
|
list: { target: true },
|
|
258
210
|
ls: { target: true },
|
|
@@ -268,7 +220,6 @@ const sandboxesSubCommands = {
|
|
|
268
220
|
const SKIP_ACCOUNT_VALIDATION = {
|
|
269
221
|
init: { target: true },
|
|
270
222
|
auth: { target: true },
|
|
271
|
-
config: { target: false, subCommands: { migrate: { target: true } } },
|
|
272
223
|
account: accountsSubCommands,
|
|
273
224
|
accounts: accountsSubCommands,
|
|
274
225
|
sandbox: sandboxesSubCommands,
|
|
@@ -4,5 +4,5 @@ export declare const describe: string;
|
|
|
4
4
|
export declare const command = "info [account]";
|
|
5
5
|
type AccountInfoArgs = CommonArgs & ConfigArgs;
|
|
6
6
|
export declare function handler(args: ArgumentsCamelCase<AccountInfoArgs>): Promise<void>;
|
|
7
|
-
export declare
|
|
7
|
+
export declare const builder: (yargs: Argv) => Promise<Argv<AccountInfoArgs>>;
|
|
8
8
|
export {};
|
package/commands/account/info.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.command = exports.describe = void 0;
|
|
3
|
+
exports.builder = exports.command = exports.describe = void 0;
|
|
4
4
|
exports.handler = handler;
|
|
5
|
-
exports.builder = builder;
|
|
6
5
|
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
7
6
|
const config_1 = require("@hubspot/local-dev-lib/config");
|
|
8
7
|
const personalAccessKey_1 = require("@hubspot/local-dev-lib/personalAccessKey");
|
|
9
|
-
const
|
|
8
|
+
const yargsUtils_1 = require("../../lib/yargsUtils");
|
|
10
9
|
const lang_1 = require("../../lib/lang");
|
|
11
10
|
const table_1 = require("../../lib/ui/table");
|
|
12
11
|
const i18nKey = 'commands.account.subcommands.info';
|
|
@@ -30,8 +29,11 @@ async function handler(args) {
|
|
|
30
29
|
logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.errors.notUsingPersonalAccessKey`));
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
|
-
function
|
|
34
|
-
(
|
|
32
|
+
function accountInfoBuilder(yargs) {
|
|
33
|
+
yargs.positional('account', {
|
|
34
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.account.describe`),
|
|
35
|
+
type: 'string',
|
|
36
|
+
});
|
|
35
37
|
yargs.example([
|
|
36
38
|
['$0 accounts info', (0, lang_1.i18n)(`${i18nKey}.examples.default`)],
|
|
37
39
|
['$0 accounts info MyAccount', (0, lang_1.i18n)(`${i18nKey}.examples.nameBased`)],
|
|
@@ -39,3 +41,4 @@ function builder(yargs) {
|
|
|
39
41
|
]);
|
|
40
42
|
return yargs;
|
|
41
43
|
}
|
|
44
|
+
exports.builder = (0, yargsUtils_1.makeYargsBuilder)(accountInfoBuilder, exports.command, exports.describe, { useConfigOptions: true });
|
package/commands/account/list.js
CHANGED
|
@@ -73,7 +73,6 @@ async function handler(args) {
|
|
|
73
73
|
const { derivedAccountId } = args;
|
|
74
74
|
(0, usageTracking_1.trackCommandUsage)('accounts-list', undefined, derivedAccountId);
|
|
75
75
|
const configPath = (0, config_1.getConfigPath)();
|
|
76
|
-
const overrideFilePath = (0, config_1.getDefaultAccountOverrideFilePath)();
|
|
77
76
|
const accountsList = (0, config_1.getConfigAccounts)() || [];
|
|
78
77
|
const mappedAccountData = sortAndMapAccounts(accountsList);
|
|
79
78
|
const accountData = getAccountData(mappedAccountData);
|
|
@@ -83,9 +82,6 @@ async function handler(args) {
|
|
|
83
82
|
(0, lang_1.i18n)(`${i18nKey}.labels.authType`),
|
|
84
83
|
]));
|
|
85
84
|
logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.configPath`, { configPath: configPath }));
|
|
86
|
-
if (overrideFilePath) {
|
|
87
|
-
logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.overrideFilePath`, { overrideFilePath }));
|
|
88
|
-
}
|
|
89
85
|
logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.defaultAccount`, {
|
|
90
86
|
account: (0, config_1.getConfigDefaultAccount)(),
|
|
91
87
|
}));
|
package/commands/account.js
CHANGED
|
@@ -37,28 +37,24 @@ exports.describe = exports.command = void 0;
|
|
|
37
37
|
exports.builder = builder;
|
|
38
38
|
const commonOpts_1 = require("../lib/commonOpts");
|
|
39
39
|
const lang_1 = require("../lib/lang");
|
|
40
|
-
const auth = __importStar(require("./account/auth"));
|
|
41
40
|
const list = __importStar(require("./account/list"));
|
|
42
41
|
const rename = __importStar(require("./account/rename"));
|
|
43
42
|
const use = __importStar(require("./account/use"));
|
|
44
43
|
const info = __importStar(require("./account/info"));
|
|
45
44
|
const remove = __importStar(require("./account/remove"));
|
|
46
45
|
const clean = __importStar(require("./account/clean"));
|
|
47
|
-
const createOverride = __importStar(require("./account/createOverride"));
|
|
48
46
|
const i18nKey = 'commands.account';
|
|
49
47
|
exports.command = ['account', 'accounts'];
|
|
50
48
|
exports.describe = (0, lang_1.i18n)(`${i18nKey}.describe`);
|
|
51
49
|
function builder(yargs) {
|
|
52
50
|
(0, commonOpts_1.addGlobalOptions)(yargs);
|
|
53
51
|
yargs
|
|
54
|
-
.command(auth)
|
|
55
52
|
.command(list)
|
|
56
53
|
.command(rename)
|
|
57
54
|
.command(use)
|
|
58
55
|
.command(info)
|
|
59
56
|
.command(remove)
|
|
60
57
|
.command(clean)
|
|
61
|
-
.command(createOverride)
|
|
62
58
|
.demandCommand(1, '');
|
|
63
59
|
return yargs;
|
|
64
60
|
}
|
package/commands/auth.d.ts
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
+
import { Argv, ArgumentsCamelCase } from 'yargs';
|
|
2
|
+
import { AccountArgs, CommonArgs, ConfigArgs, TestingArgs } from '../types/Yargs';
|
|
3
|
+
export declare const command = "auth";
|
|
4
|
+
export declare const describe: string;
|
|
5
|
+
type AuthArgs = CommonArgs & ConfigArgs & TestingArgs & AccountArgs & {
|
|
6
|
+
authType?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function handler(args: ArgumentsCamelCase<AuthArgs>): Promise<void>;
|
|
9
|
+
export declare const builder: (yargs: Argv) => Promise<Argv<AuthArgs>>;
|
|
1
10
|
export {};
|
package/commands/auth.js
CHANGED
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
3
|
+
exports.builder = exports.describe = exports.command = void 0;
|
|
4
|
+
exports.handler = handler;
|
|
5
|
+
const git_1 = require("../lib/ui/git");
|
|
6
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
7
|
+
const auth_1 = require("@hubspot/local-dev-lib/constants/auth");
|
|
8
|
+
const environments_1 = require("@hubspot/local-dev-lib/constants/environments");
|
|
9
|
+
const config_1 = require("@hubspot/local-dev-lib/constants/config");
|
|
10
|
+
const lang_1 = require("../lib/lang");
|
|
11
|
+
const personalAccessKey_1 = require("@hubspot/local-dev-lib/personalAccessKey");
|
|
12
|
+
const config_2 = require("@hubspot/local-dev-lib/config");
|
|
13
|
+
const text_1 = require("@hubspot/local-dev-lib/text");
|
|
14
|
+
const promptUtils_1 = require("../lib/prompts/promptUtils");
|
|
15
|
+
const personalAccessKeyPrompt_1 = require("../lib/prompts/personalAccessKeyPrompt");
|
|
16
|
+
const accountNamePrompt_1 = require("../lib/prompts/accountNamePrompt");
|
|
17
|
+
const setAsDefaultAccountPrompt_1 = require("../lib/prompts/setAsDefaultAccountPrompt");
|
|
18
|
+
const commonOpts_1 = require("../lib/commonOpts");
|
|
19
|
+
const yargsUtils_1 = require("../lib/yargsUtils");
|
|
20
|
+
const usageTracking_1 = require("../lib/usageTracking");
|
|
21
|
+
const oauth_1 = require("../lib/oauth");
|
|
22
|
+
const exitCodes_1 = require("../lib/enums/exitCodes");
|
|
23
|
+
const ui_1 = require("../lib/ui");
|
|
24
|
+
const index_1 = require("../lib/errorHandlers/index");
|
|
23
25
|
const i18nKey = 'commands.auth';
|
|
24
26
|
const TRACKING_STATUS = {
|
|
25
27
|
STARTED: 'started',
|
|
@@ -27,33 +29,30 @@ const TRACKING_STATUS = {
|
|
|
27
29
|
COMPLETE: 'complete',
|
|
28
30
|
};
|
|
29
31
|
const ALLOWED_AUTH_METHODS = [
|
|
30
|
-
OAUTH_AUTH_METHOD.value,
|
|
31
|
-
PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
32
|
+
auth_1.OAUTH_AUTH_METHOD.value,
|
|
33
|
+
auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
32
34
|
];
|
|
33
|
-
const SUPPORTED_AUTHENTICATION_PROTOCOLS_TEXT = commaSeparatedValues(ALLOWED_AUTH_METHODS);
|
|
35
|
+
const SUPPORTED_AUTHENTICATION_PROTOCOLS_TEXT = (0, text_1.commaSeparatedValues)(ALLOWED_AUTH_METHODS);
|
|
34
36
|
exports.command = 'auth';
|
|
35
|
-
exports.describe = i18n(`${i18nKey}.describe
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
exports.handler = async (options) => {
|
|
39
|
-
const { authType: authTypeFlagValue, config: configFlagValue, qa, providedAccountId, } = options;
|
|
37
|
+
exports.describe = (0, lang_1.i18n)(`${i18nKey}.describe`);
|
|
38
|
+
async function handler(args) {
|
|
39
|
+
const { authType: authTypeFlagValue, config: configFlagValue, qa, providedAccountId, } = args;
|
|
40
40
|
const authType = (authTypeFlagValue && authTypeFlagValue.toLowerCase()) ||
|
|
41
|
-
PERSONAL_ACCESS_KEY_AUTH_METHOD.value;
|
|
42
|
-
setLogLevel(
|
|
43
|
-
const env = qa ? ENVIRONMENTS.QA : ENVIRONMENTS.PROD;
|
|
41
|
+
auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value;
|
|
42
|
+
(0, commonOpts_1.setLogLevel)(args);
|
|
43
|
+
const env = qa ? environments_1.ENVIRONMENTS.QA : environments_1.ENVIRONMENTS.PROD;
|
|
44
44
|
// Needed to load deprecated config
|
|
45
|
-
loadConfig(configFlagValue);
|
|
46
|
-
const configPath = getConfigPath(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
process.exit(EXIT_CODES.ERROR);
|
|
45
|
+
(0, config_2.loadConfig)(configFlagValue);
|
|
46
|
+
const configPath = (0, config_2.getConfigPath)();
|
|
47
|
+
if (configPath) {
|
|
48
|
+
(0, git_1.checkAndWarnGitInclusion)(configPath);
|
|
49
|
+
}
|
|
50
|
+
if (!(0, config_2.getConfigPath)(configFlagValue)) {
|
|
51
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.noConfigFileFound`));
|
|
52
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
54
53
|
}
|
|
55
|
-
trackCommandUsage('auth');
|
|
56
|
-
trackAuthAction('auth', authType, TRACKING_STATUS.STARTED);
|
|
54
|
+
(0, usageTracking_1.trackCommandUsage)('auth');
|
|
55
|
+
(0, usageTracking_1.trackAuthAction)('auth', authType, TRACKING_STATUS.STARTED, providedAccountId);
|
|
57
56
|
let configData;
|
|
58
57
|
let updatedConfig;
|
|
59
58
|
let validName;
|
|
@@ -61,104 +60,107 @@ exports.handler = async (options) => {
|
|
|
61
60
|
let token;
|
|
62
61
|
let defaultName;
|
|
63
62
|
switch (authType) {
|
|
64
|
-
case OAUTH_AUTH_METHOD.value:
|
|
65
|
-
configData = await promptUser(OAUTH_FLOW);
|
|
66
|
-
await authenticateWithOauth({
|
|
63
|
+
case auth_1.OAUTH_AUTH_METHOD.value:
|
|
64
|
+
configData = await (0, promptUtils_1.promptUser)(personalAccessKeyPrompt_1.OAUTH_FLOW);
|
|
65
|
+
await (0, oauth_1.authenticateWithOauth)({
|
|
67
66
|
...configData,
|
|
68
67
|
env,
|
|
69
68
|
});
|
|
70
|
-
successAuthMethod = OAUTH_AUTH_METHOD.name;
|
|
69
|
+
successAuthMethod = auth_1.OAUTH_AUTH_METHOD.name;
|
|
71
70
|
break;
|
|
72
|
-
case PERSONAL_ACCESS_KEY_AUTH_METHOD.value:
|
|
73
|
-
configData = await personalAccessKeyPrompt({
|
|
71
|
+
case auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value:
|
|
72
|
+
configData = await (0, personalAccessKeyPrompt_1.personalAccessKeyPrompt)({
|
|
74
73
|
env,
|
|
75
74
|
account: providedAccountId,
|
|
76
75
|
});
|
|
77
76
|
try {
|
|
78
|
-
token = await getAccessToken(configData.personalAccessKey, env);
|
|
79
|
-
defaultName = toKebabCase(token.hubName);
|
|
80
|
-
updatedConfig = await updateConfigWithAccessToken(token, configData.personalAccessKey, env);
|
|
77
|
+
token = await (0, personalAccessKey_1.getAccessToken)(configData.personalAccessKey, env);
|
|
78
|
+
defaultName = (0, text_1.toKebabCase)(token.hubName);
|
|
79
|
+
updatedConfig = await (0, personalAccessKey_1.updateConfigWithAccessToken)(token, configData.personalAccessKey, env);
|
|
81
80
|
}
|
|
82
81
|
catch (e) {
|
|
83
|
-
logError(e);
|
|
82
|
+
(0, index_1.logError)(e);
|
|
84
83
|
}
|
|
85
84
|
if (!updatedConfig) {
|
|
86
85
|
break;
|
|
87
86
|
}
|
|
88
87
|
validName = updatedConfig.name;
|
|
89
88
|
if (!validName) {
|
|
90
|
-
const { name: namePrompt } = await cliAccountNamePrompt(defaultName);
|
|
89
|
+
const { name: namePrompt } = await (0, accountNamePrompt_1.cliAccountNamePrompt)(defaultName);
|
|
91
90
|
validName = namePrompt;
|
|
92
91
|
}
|
|
93
|
-
updateAccountConfig({
|
|
92
|
+
(0, config_2.updateAccountConfig)({
|
|
94
93
|
...updatedConfig,
|
|
95
|
-
|
|
94
|
+
env: updatedConfig.env,
|
|
96
95
|
tokenInfo: updatedConfig.auth.tokenInfo,
|
|
97
96
|
name: validName,
|
|
98
97
|
});
|
|
99
|
-
writeConfig();
|
|
100
|
-
successAuthMethod = PERSONAL_ACCESS_KEY_AUTH_METHOD.name;
|
|
98
|
+
(0, config_2.writeConfig)();
|
|
99
|
+
successAuthMethod = auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.name;
|
|
101
100
|
break;
|
|
102
101
|
default:
|
|
103
|
-
logger.error(i18n(`${i18nKey}.errors.unsupportedAuthType`, {
|
|
102
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.unsupportedAuthType`, {
|
|
104
103
|
supportedProtocols: SUPPORTED_AUTHENTICATION_PROTOCOLS_TEXT,
|
|
105
|
-
type,
|
|
104
|
+
type: authType,
|
|
106
105
|
}));
|
|
107
106
|
break;
|
|
108
107
|
}
|
|
109
108
|
if (!successAuthMethod) {
|
|
110
|
-
await trackAuthAction('auth', authType, TRACKING_STATUS.ERROR);
|
|
111
|
-
process.exit(EXIT_CODES.ERROR);
|
|
109
|
+
await (0, usageTracking_1.trackAuthAction)('auth', authType, TRACKING_STATUS.ERROR, providedAccountId);
|
|
110
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
112
111
|
}
|
|
113
|
-
const
|
|
114
|
-
const
|
|
115
|
-
|
|
112
|
+
const nameFromConfigData = 'name' in configData ? configData.name : undefined;
|
|
113
|
+
const accountName = (updatedConfig && updatedConfig.name) || validName || nameFromConfigData;
|
|
114
|
+
const setAsDefault = await (0, setAsDefaultAccountPrompt_1.setAsDefaultAccountPrompt)(accountName);
|
|
115
|
+
logger_1.logger.log('');
|
|
116
116
|
if (setAsDefault) {
|
|
117
|
-
logger.success(i18n(`lib.prompts.setAsDefaultAccountPrompt.setAsDefaultAccount`, {
|
|
117
|
+
logger_1.logger.success((0, lang_1.i18n)(`lib.prompts.setAsDefaultAccountPrompt.setAsDefaultAccount`, {
|
|
118
118
|
accountName,
|
|
119
119
|
}));
|
|
120
120
|
}
|
|
121
121
|
else {
|
|
122
|
-
logger.info(i18n(`lib.prompts.setAsDefaultAccountPrompt.keepingCurrentDefault`, {
|
|
123
|
-
accountName: getConfigDefaultAccount(),
|
|
122
|
+
logger_1.logger.info((0, lang_1.i18n)(`lib.prompts.setAsDefaultAccountPrompt.keepingCurrentDefault`, {
|
|
123
|
+
accountName: (0, config_2.getConfigDefaultAccount)(),
|
|
124
124
|
}));
|
|
125
125
|
}
|
|
126
|
-
logger.success(i18n(`${i18nKey}.success.configFileUpdated`, {
|
|
127
|
-
configFilename: DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
|
|
126
|
+
logger_1.logger.success((0, lang_1.i18n)(`${i18nKey}.success.configFileUpdated`, {
|
|
127
|
+
configFilename: config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
|
|
128
128
|
authType: successAuthMethod,
|
|
129
129
|
accountName,
|
|
130
130
|
}));
|
|
131
|
-
uiFeatureHighlight([
|
|
131
|
+
(0, ui_1.uiFeatureHighlight)([
|
|
132
132
|
'accountsUseCommand',
|
|
133
133
|
'accountOption',
|
|
134
134
|
'accountsListCommand',
|
|
135
135
|
]);
|
|
136
|
-
const accountId = getAccountId(accountName);
|
|
137
|
-
await trackAuthAction('auth', authType, TRACKING_STATUS.COMPLETE, accountId);
|
|
138
|
-
process.exit(EXIT_CODES.SUCCESS);
|
|
139
|
-
}
|
|
140
|
-
|
|
136
|
+
const accountId = (0, config_2.getAccountId)(accountName) || undefined;
|
|
137
|
+
await (0, usageTracking_1.trackAuthAction)('auth', authType, TRACKING_STATUS.COMPLETE, accountId);
|
|
138
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
139
|
+
}
|
|
140
|
+
function authBuilder(yargs) {
|
|
141
141
|
yargs.options({
|
|
142
142
|
'auth-type': {
|
|
143
|
-
describe: i18n(`${i18nKey}.options.authType.describe`),
|
|
143
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.authType.describe`),
|
|
144
144
|
type: 'string',
|
|
145
145
|
choices: [
|
|
146
|
-
`${PERSONAL_ACCESS_KEY_AUTH_METHOD.value}`,
|
|
147
|
-
`${OAUTH_AUTH_METHOD.value}`,
|
|
146
|
+
`${auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value}`,
|
|
147
|
+
`${auth_1.OAUTH_AUTH_METHOD.value}`,
|
|
148
148
|
],
|
|
149
|
-
default: PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
150
|
-
defaultDescription: i18n(`${i18nKey}.options.authType.defaultDescription`, {
|
|
151
|
-
authMethod: PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
152
|
-
}),
|
|
149
|
+
default: auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
153
150
|
},
|
|
154
151
|
account: {
|
|
155
|
-
describe: i18n(`${i18nKey}.options.account.describe`),
|
|
152
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.account.describe`),
|
|
156
153
|
type: 'string',
|
|
157
154
|
alias: 'a',
|
|
158
155
|
},
|
|
159
156
|
});
|
|
160
|
-
addConfigOptions(yargs);
|
|
161
|
-
addTestingOptions(yargs);
|
|
162
|
-
addGlobalOptions(yargs);
|
|
163
157
|
return yargs;
|
|
164
|
-
}
|
|
158
|
+
}
|
|
159
|
+
exports.builder = (0, yargsUtils_1.makeYargsBuilder)(authBuilder, exports.command, (0, lang_1.i18n)(`${i18nKey}.verboseDescribe`, {
|
|
160
|
+
authMethod: auth_1.PERSONAL_ACCESS_KEY_AUTH_METHOD.value,
|
|
161
|
+
configName: config_1.DEFAULT_HUBSPOT_CONFIG_YAML_FILE_NAME,
|
|
162
|
+
}), {
|
|
163
|
+
useGlobalOptions: true,
|
|
164
|
+
useConfigOptions: true,
|
|
165
|
+
useTestingOptions: true,
|
|
166
|
+
});
|
package/commands/config/set.d.ts
CHANGED
|
@@ -1,13 +1 @@
|
|
|
1
|
-
import { ArgumentsCamelCase, Argv } from 'yargs';
|
|
2
|
-
import { CommonArgs } from '../../types/Yargs';
|
|
3
|
-
import { CmsPublishMode } from '@hubspot/local-dev-lib/types/Files';
|
|
4
|
-
export declare const command = "set";
|
|
5
|
-
export declare const describe: string;
|
|
6
|
-
type ConfigSetArgs = CommonArgs & {
|
|
7
|
-
defaultCmsPublishMode: CmsPublishMode;
|
|
8
|
-
allowUsageTracking?: boolean;
|
|
9
|
-
httpTimeout?: string;
|
|
10
|
-
};
|
|
11
|
-
export declare function handler(args: ArgumentsCamelCase<ConfigSetArgs>): Promise<void>;
|
|
12
|
-
export declare function builder(yargs: Argv): Argv<ConfigSetArgs>;
|
|
13
1
|
export {};
|
package/commands/config/set.js
CHANGED
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const exitCodes_1 = require("../../lib/enums/exitCodes");
|
|
10
|
-
const configOptions_1 = require("../../lib/configOptions");
|
|
3
|
+
// @ts-nocheck
|
|
4
|
+
const { i18n } = require('../../lib/lang');
|
|
5
|
+
const { trackCommandUsage } = require('../../lib/usageTracking');
|
|
6
|
+
const { promptUser } = require('../../lib/prompts/promptUtils');
|
|
7
|
+
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
8
|
+
const { setDefaultCmsPublishMode, setHttpTimeout, setAllowUsageTracking, } = require('../../lib/configOptions');
|
|
11
9
|
const i18nKey = 'commands.config.subcommands.set';
|
|
12
10
|
exports.command = 'set';
|
|
13
|
-
exports.describe =
|
|
14
|
-
async
|
|
15
|
-
const { cmsPublishMode } = await
|
|
11
|
+
exports.describe = i18n(`${i18nKey}.describe`);
|
|
12
|
+
const selectOptions = async () => {
|
|
13
|
+
const { cmsPublishMode } = await promptUser([
|
|
16
14
|
{
|
|
17
15
|
type: 'list',
|
|
16
|
+
look: false,
|
|
18
17
|
name: 'cmsPublishMode',
|
|
19
18
|
pageSize: 20,
|
|
20
|
-
message:
|
|
19
|
+
message: i18n(`${i18nKey}.promptMessage`),
|
|
21
20
|
choices: [
|
|
22
21
|
{
|
|
23
22
|
name: 'Default CMS publish mode',
|
|
@@ -29,52 +28,52 @@ async function selectOptions() {
|
|
|
29
28
|
},
|
|
30
29
|
]);
|
|
31
30
|
return cmsPublishMode;
|
|
32
|
-
}
|
|
33
|
-
async
|
|
31
|
+
};
|
|
32
|
+
const handleConfigUpdate = async (accountId, options) => {
|
|
34
33
|
const { allowUsageTracking, defaultCmsPublishMode, httpTimeout } = options;
|
|
35
34
|
if (typeof defaultCmsPublishMode !== 'undefined') {
|
|
36
|
-
await
|
|
35
|
+
await setDefaultCmsPublishMode({ defaultCmsPublishMode, accountId });
|
|
37
36
|
return true;
|
|
38
37
|
}
|
|
39
38
|
else if (typeof httpTimeout !== 'undefined') {
|
|
40
|
-
await
|
|
39
|
+
await setHttpTimeout({ httpTimeout, accountId });
|
|
41
40
|
return true;
|
|
42
41
|
}
|
|
43
42
|
else if (typeof allowUsageTracking !== 'undefined') {
|
|
44
|
-
await
|
|
43
|
+
await setAllowUsageTracking({ allowUsageTracking, accountId });
|
|
45
44
|
return true;
|
|
46
45
|
}
|
|
47
46
|
return false;
|
|
48
|
-
}
|
|
49
|
-
async
|
|
50
|
-
const { derivedAccountId } =
|
|
51
|
-
|
|
52
|
-
const configUpdated = await handleConfigUpdate(derivedAccountId,
|
|
47
|
+
};
|
|
48
|
+
exports.handler = async (options) => {
|
|
49
|
+
const { derivedAccountId } = options;
|
|
50
|
+
trackCommandUsage('config-set', null, derivedAccountId);
|
|
51
|
+
const configUpdated = await handleConfigUpdate(derivedAccountId, options);
|
|
53
52
|
if (!configUpdated) {
|
|
54
53
|
const selectedOptions = await selectOptions();
|
|
55
54
|
await handleConfigUpdate(derivedAccountId, selectedOptions);
|
|
56
55
|
}
|
|
57
|
-
process.exit(
|
|
58
|
-
}
|
|
59
|
-
|
|
56
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
57
|
+
};
|
|
58
|
+
exports.builder = yargs => {
|
|
60
59
|
yargs
|
|
61
60
|
.options({
|
|
62
61
|
'default-cms-publish-mode': {
|
|
63
|
-
describe:
|
|
62
|
+
describe: i18n(`${i18nKey}.options.defaultMode.describe`),
|
|
64
63
|
type: 'string',
|
|
65
64
|
},
|
|
66
65
|
'allow-usage-tracking': {
|
|
67
|
-
describe:
|
|
66
|
+
describe: i18n(`${i18nKey}.options.allowUsageTracking.describe`),
|
|
68
67
|
type: 'boolean',
|
|
69
68
|
},
|
|
70
69
|
'http-timeout': {
|
|
71
|
-
describe:
|
|
70
|
+
describe: i18n(`${i18nKey}.options.httpTimeout.describe`),
|
|
72
71
|
type: 'string',
|
|
73
72
|
},
|
|
74
73
|
})
|
|
75
74
|
.conflicts('defaultCmsPublishMode', 'allowUsageTracking')
|
|
76
75
|
.conflicts('defaultCmsPublishMode', 'httpTimeout')
|
|
77
76
|
.conflicts('allowUsageTracking', 'httpTimeout')
|
|
78
|
-
.example([['$0 config set',
|
|
77
|
+
.example([['$0 config set', i18n(`${i18nKey}.examples.default`)]]);
|
|
79
78
|
return yargs;
|
|
80
|
-
}
|
|
79
|
+
};
|
package/commands/config.d.ts
CHANGED