@hubspot/cli 7.4.7-experimental.0 → 7.4.7
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/api/migrate.d.ts +14 -4
- package/api/migrate.js +16 -2
- package/bin/cli.js +8 -183
- package/commands/account/auth.d.ts +10 -0
- package/commands/account/auth.js +188 -0
- package/commands/account/clean.js +38 -5
- package/commands/account/createOverride.d.ts +10 -0
- package/commands/account/createOverride.js +104 -0
- package/commands/account/info.js +38 -4
- package/commands/account/list.js +23 -5
- package/commands/account/remove.js +36 -2
- package/commands/account/removeOverride.d.ts +10 -0
- package/commands/account/removeOverride.js +76 -0
- package/commands/account/use.js +25 -3
- package/commands/account.js +7 -2
- package/commands/app/migrate.d.ts +6 -6
- package/commands/app/migrate.js +62 -45
- package/commands/app.js +0 -2
- package/commands/auth.js +14 -11
- package/commands/cms/lighthouseScore.js +7 -3
- package/commands/cms.js +1 -2
- package/commands/completion.js +2 -3
- package/commands/config/migrate.d.ts +10 -0
- package/commands/config/migrate.js +84 -0
- package/commands/config/set.d.ts +10 -0
- package/commands/config/set.js +34 -29
- package/commands/config.d.ts +4 -1
- package/commands/config.js +45 -11
- package/commands/create/api-sample.js +3 -1
- package/commands/create/website-theme.js +1 -1
- package/commands/create.js +7 -8
- package/commands/customObject/schema/delete.js +4 -1
- package/commands/customObject/schema/fetch-all.js +2 -1
- package/commands/customObject/schema/fetch.js +2 -1
- package/commands/customObject.js +3 -4
- package/commands/doctor.js +5 -6
- package/commands/feedback.js +7 -8
- package/commands/fetch.js +6 -7
- package/commands/filemanager.js +1 -2
- package/commands/function.js +1 -2
- package/commands/hubdb/clear.js +5 -6
- package/commands/hubdb/create.js +7 -8
- package/commands/hubdb/delete.js +8 -7
- package/commands/hubdb/fetch.js +4 -5
- package/commands/hubdb.js +1 -2
- package/commands/init.js +18 -20
- package/commands/lint.js +3 -4
- package/commands/list.js +5 -6
- package/commands/logs.js +12 -13
- package/commands/module/marketplace-validate.js +5 -6
- package/commands/module.js +1 -3
- package/commands/mv.js +4 -5
- package/commands/open.js +4 -5
- package/commands/project/add.d.ts +3 -7
- package/commands/project/add.js +28 -23
- package/commands/project/cloneApp.d.ts +6 -8
- package/commands/project/cloneApp.js +49 -45
- package/commands/project/create.d.ts +10 -1
- package/commands/project/create.js +85 -63
- package/commands/project/deploy.d.ts +3 -6
- package/commands/project/deploy.js +27 -25
- package/commands/project/dev/deprecatedFlow.js +32 -25
- package/commands/project/dev/index.d.ts +4 -2
- package/commands/project/dev/index.js +31 -18
- package/commands/project/dev/unifiedFlow.js +10 -11
- package/commands/project/download.d.ts +3 -7
- package/commands/project/download.js +18 -19
- package/commands/project/installDeps.d.ts +6 -1
- package/commands/project/installDeps.js +48 -32
- package/commands/project/listBuilds.d.ts +3 -7
- package/commands/project/listBuilds.js +32 -27
- package/commands/project/logs.d.ts +10 -1
- package/commands/project/logs.js +73 -65
- package/commands/project/migrate.d.ts +6 -0
- package/commands/project/migrate.js +71 -0
- package/commands/project/migrateApp.d.ts +3 -8
- package/commands/project/migrateApp.js +23 -20
- package/commands/project/open.d.ts +3 -7
- package/commands/project/open.js +29 -21
- package/commands/project/upload.d.ts +9 -1
- package/commands/project/upload.js +78 -54
- package/commands/project/watch.d.ts +6 -1
- package/commands/project/watch.js +95 -61
- package/commands/project.d.ts +3 -1
- package/commands/project.js +47 -35
- package/commands/remove.js +7 -5
- package/commands/sandbox/create.js +10 -11
- package/commands/sandbox/delete.js +18 -19
- package/commands/sandbox.js +1 -2
- package/commands/secret/addSecret.js +5 -6
- package/commands/secret/deleteSecret.js +12 -9
- package/commands/secret/listSecret.js +3 -4
- package/commands/secret/updateSecret.js +9 -8
- package/commands/secret.js +1 -2
- package/commands/theme/generate-selectors.js +5 -6
- package/commands/theme/marketplace-validate.js +5 -6
- package/commands/theme/preview.js +16 -16
- package/commands/theme.js +1 -2
- package/commands/upload.js +23 -24
- package/commands/watch.js +18 -19
- package/lang/en.d.ts +2806 -0
- package/lang/en.js +2659 -3300
- package/lang/en.lyaml +98 -41
- package/lib/accountTypes.d.ts +1 -0
- package/lib/accountTypes.js +12 -0
- package/lib/app/migrate.d.ts +10 -4
- package/lib/app/migrate.js +208 -94
- package/lib/app/migrate_legacy.d.ts +2 -2
- package/lib/app/migrate_legacy.js +10 -7
- package/lib/buildAccount.d.ts +1 -2
- package/lib/buildAccount.js +11 -10
- package/lib/commonOpts.d.ts +3 -4
- package/lib/commonOpts.js +46 -18
- package/lib/configMigrate.d.ts +2 -0
- package/lib/configMigrate.js +104 -0
- package/lib/configOptions.js +11 -10
- package/lib/constants.d.ts +4 -0
- package/lib/constants.js +5 -1
- package/lib/dependencyManagement.js +2 -2
- package/lib/doctor/Diagnosis.d.ts +1 -2
- package/lib/doctor/Diagnosis.js +19 -16
- package/lib/doctor/DiagnosticInfoBuilder.d.ts +2 -1
- package/lib/doctor/DiagnosticInfoBuilder.js +10 -9
- package/lib/doctor/Doctor.d.ts +1 -0
- package/lib/doctor/Doctor.js +57 -44
- package/lib/errorHandlers/index.js +6 -7
- package/lib/errorHandlers/suppressError.js +6 -7
- package/lib/generateSelectors.js +1 -2
- package/lib/hasFeature.d.ts +3 -1
- package/lib/middleware/__test__/configMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/configMiddleware.test.js +194 -0
- package/lib/middleware/__test__/gitMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/gitMiddleware.test.js +76 -0
- package/lib/middleware/__test__/notificationsMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/notificationsMiddleware.test.js +10 -0
- package/lib/middleware/__test__/requestMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/requestMiddleware.test.js +20 -0
- package/lib/middleware/__test__/utils.test.d.ts +1 -0
- package/lib/middleware/__test__/utils.test.js +53 -0
- package/lib/middleware/__test__/yargsChecksMiddleware.test.d.ts +1 -0
- package/lib/middleware/__test__/yargsChecksMiddleware.test.js +81 -0
- package/lib/middleware/configMiddleware.d.ts +13 -0
- package/lib/middleware/configMiddleware.js +116 -0
- package/lib/middleware/fireAlarmMiddleware.d.ts +4 -0
- package/lib/middleware/fireAlarmMiddleware.js +123 -0
- package/lib/middleware/gitMiddleware.d.ts +2 -0
- package/lib/middleware/gitMiddleware.js +14 -0
- package/lib/middleware/notificationsMiddleware.d.ts +1 -0
- package/lib/middleware/notificationsMiddleware.js +38 -0
- package/lib/middleware/requestMiddleware.d.ts +1 -0
- package/lib/middleware/requestMiddleware.js +11 -0
- package/lib/middleware/utils.d.ts +8 -0
- package/lib/middleware/utils.js +17 -0
- package/lib/middleware/yargsChecksMiddleware.d.ts +4 -0
- package/lib/middleware/yargsChecksMiddleware.js +24 -0
- package/lib/oauth.js +1 -2
- package/lib/process.js +1 -2
- package/lib/projects/ProjectLogsManager.d.ts +1 -1
- package/lib/projects/ProjectLogsManager.js +16 -21
- package/lib/projects/buildAndDeploy.js +28 -39
- package/lib/projects/config.d.ts +9 -0
- package/lib/projects/config.js +79 -0
- package/lib/projects/create.js +5 -6
- package/lib/projects/ensureProjectExists.d.ts +11 -0
- package/lib/projects/ensureProjectExists.js +97 -0
- package/lib/{DevServerManager.d.ts → projects/localDev/DevServerManager.d.ts} +1 -1
- package/lib/{DevServerManager.js → projects/localDev/DevServerManager.js} +6 -6
- package/lib/{DevServerManagerV2.d.ts → projects/localDev/DevServerManagerV2.d.ts} +1 -1
- package/lib/{DevServerManagerV2.js → projects/localDev/DevServerManagerV2.js} +3 -4
- package/lib/{LocalDevManager.d.ts → projects/localDev/LocalDevManager.d.ts} +1 -1
- package/lib/{LocalDevManager.js → projects/localDev/LocalDevManager.js} +49 -82
- package/lib/{LocalDevManagerV2.d.ts → projects/localDev/LocalDevManagerV2.d.ts} +2 -2
- package/lib/{LocalDevManagerV2.js → projects/localDev/LocalDevManagerV2.js} +43 -75
- package/lib/{localDev.d.ts → projects/localDev/helpers.d.ts} +5 -4
- package/lib/{localDev.js → projects/localDev/helpers.js} +97 -114
- package/lib/projects/ui.d.ts +1 -0
- package/lib/projects/ui.js +15 -0
- package/lib/projects/upload.d.ts +13 -2
- package/lib/projects/upload.js +18 -34
- package/lib/projects/urls.d.ts +1 -0
- package/lib/projects/urls.js +6 -0
- package/lib/projects/watch.d.ts +1 -1
- package/lib/projects/watch.js +21 -18
- package/lib/prompts/accountNamePrompt.js +16 -13
- package/lib/prompts/accountsPrompt.js +1 -2
- package/lib/prompts/cmsFieldPrompt.js +1 -2
- package/lib/prompts/createApiSamplePrompt.js +4 -5
- package/lib/prompts/createFunctionPrompt.js +13 -14
- package/lib/prompts/createModulePrompt.js +8 -9
- package/lib/prompts/createProjectPrompt.d.ts +11 -4
- package/lib/prompts/createProjectPrompt.js +14 -9
- package/lib/prompts/createTemplatePrompt.js +1 -2
- package/lib/prompts/downloadProjectPrompt.js +3 -4
- package/lib/prompts/installPublicAppPrompt.js +6 -5
- package/lib/prompts/personalAccessKeyPrompt.js +17 -18
- package/lib/prompts/previewPrompt.js +5 -6
- package/lib/prompts/projectAddPrompt.js +4 -5
- package/lib/prompts/projectDevTargetAccountPrompt.js +11 -12
- package/lib/prompts/projectNamePrompt.js +5 -6
- package/lib/prompts/projectsLogsPrompt.js +3 -2
- package/lib/prompts/promptUtils.d.ts +1 -1
- package/lib/prompts/sandboxesPrompt.js +5 -6
- package/lib/prompts/secretPrompt.js +2 -3
- package/lib/prompts/selectHubDBTablePrompt.js +11 -8
- package/lib/prompts/selectPublicAppPrompt.js +6 -7
- package/lib/prompts/setAsDefaultAccountPrompt.js +1 -2
- package/lib/prompts/uploadPrompt.js +4 -5
- package/lib/sandboxSync.js +15 -14
- package/lib/sandboxes.js +12 -13
- package/lib/serverlessLogs.js +4 -6
- package/lib/ui/SpinniesManager.d.ts +1 -1
- package/lib/ui/boxen.d.ts +5 -0
- package/lib/ui/boxen.js +30 -0
- package/lib/ui/git.js +8 -9
- package/lib/ui/index.d.ts +4 -2
- package/lib/ui/index.js +16 -16
- package/lib/ui/logger.d.ts +10 -0
- package/lib/ui/logger.js +15 -0
- package/lib/ui/serverlessFunctionLogs.js +2 -3
- package/lib/ui/spinniesUtils.d.ts +5 -5
- package/lib/yargsUtils.d.ts +1 -1
- package/package.json +7 -6
- package/types/Yargs.d.ts +5 -11
- package/lib/projects/index.d.ts +0 -20
- package/lib/projects/index.js +0 -195
|
@@ -13,9 +13,8 @@ const usageTracking_1 = require("../../lib/usageTracking");
|
|
|
13
13
|
const ui_1 = require("../../lib/ui");
|
|
14
14
|
const commonOpts_1 = require("../../lib/commonOpts");
|
|
15
15
|
const lang_1 = require("../../lib/lang");
|
|
16
|
-
const i18nKey = 'commands.secret.subcommands.delete';
|
|
17
16
|
exports.command = 'delete [name]';
|
|
18
|
-
exports.describe = (0, lang_1.i18n)(
|
|
17
|
+
exports.describe = (0, lang_1.i18n)(`commands.secret.subcommands.delete.describe`);
|
|
19
18
|
async function handler(args) {
|
|
20
19
|
const { name, derivedAccountId, force } = args;
|
|
21
20
|
let secretName = name;
|
|
@@ -23,30 +22,34 @@ async function handler(args) {
|
|
|
23
22
|
try {
|
|
24
23
|
const { data: { results: secrets }, } = await (0, secrets_1.fetchSecrets)(derivedAccountId);
|
|
25
24
|
if (secretName && !secrets.includes(secretName)) {
|
|
26
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
25
|
+
logger_1.logger.error((0, lang_1.i18n)(`commands.secret.subcommands.delete.errors.noSecret`, {
|
|
26
|
+
secretName,
|
|
27
|
+
}));
|
|
27
28
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
28
29
|
}
|
|
29
30
|
if (!secretName) {
|
|
30
|
-
const { secretToModify } = await (0, secretPrompt_1.secretListPrompt)(secrets, (0, lang_1.i18n)(
|
|
31
|
+
const { secretToModify } = await (0, secretPrompt_1.secretListPrompt)(secrets, (0, lang_1.i18n)(`commands.secret.subcommands.delete.selectSecret`));
|
|
31
32
|
secretName = secretToModify;
|
|
32
33
|
}
|
|
33
34
|
const confirmDelete = force ||
|
|
34
|
-
(await (0, promptUtils_1.confirmPrompt)((0, lang_1.i18n)(
|
|
35
|
+
(await (0, promptUtils_1.confirmPrompt)((0, lang_1.i18n)(`commands.secret.subcommands.delete.confirmDelete`, {
|
|
36
|
+
secretName,
|
|
37
|
+
}), {
|
|
35
38
|
defaultAnswer: false,
|
|
36
39
|
}));
|
|
37
40
|
if (!confirmDelete) {
|
|
38
|
-
logger_1.logger.success((0, lang_1.i18n)(
|
|
41
|
+
logger_1.logger.success((0, lang_1.i18n)(`commands.secret.subcommands.delete.deleteCanceled`));
|
|
39
42
|
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
40
43
|
}
|
|
41
44
|
await (0, secrets_1.deleteSecret)(derivedAccountId, secretName);
|
|
42
|
-
logger_1.logger.success((0, lang_1.i18n)(
|
|
45
|
+
logger_1.logger.success((0, lang_1.i18n)(`commands.secret.subcommands.delete.success.delete`, {
|
|
43
46
|
accountIdentifier: (0, ui_1.uiAccountDescription)(derivedAccountId),
|
|
44
47
|
secretName,
|
|
45
48
|
}));
|
|
46
49
|
}
|
|
47
50
|
catch (err) {
|
|
48
51
|
if (secretName) {
|
|
49
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
52
|
+
logger_1.logger.error((0, lang_1.i18n)(`commands.secret.subcommands.delete.errors.delete`, {
|
|
50
53
|
secretName,
|
|
51
54
|
}));
|
|
52
55
|
}
|
|
@@ -62,7 +65,7 @@ function builder(yargs) {
|
|
|
62
65
|
(0, commonOpts_1.addUseEnvironmentOptions)(yargs);
|
|
63
66
|
yargs
|
|
64
67
|
.positional('name', {
|
|
65
|
-
describe: (0, lang_1.i18n)(
|
|
68
|
+
describe: (0, lang_1.i18n)(`commands.secret.subcommands.delete.positionals.name.describe`),
|
|
66
69
|
type: 'string',
|
|
67
70
|
})
|
|
68
71
|
.options('force', {
|
|
@@ -10,15 +10,14 @@ const usageTracking_1 = require("../../lib/usageTracking");
|
|
|
10
10
|
const ui_1 = require("../../lib/ui");
|
|
11
11
|
const commonOpts_1 = require("../../lib/commonOpts");
|
|
12
12
|
const lang_1 = require("../../lib/lang");
|
|
13
|
-
const i18nKey = 'commands.secret.subcommands.list';
|
|
14
13
|
exports.command = 'list';
|
|
15
|
-
exports.describe = (0, lang_1.i18n)(
|
|
14
|
+
exports.describe = (0, lang_1.i18n)(`commands.secret.subcommands.list.describe`);
|
|
16
15
|
async function handler(args) {
|
|
17
16
|
const { derivedAccountId } = args;
|
|
18
17
|
(0, usageTracking_1.trackCommandUsage)('secrets-list', {}, derivedAccountId);
|
|
19
18
|
try {
|
|
20
19
|
const { data: { results }, } = await (0, secrets_1.fetchSecrets)(derivedAccountId);
|
|
21
|
-
const groupLabel = (0, lang_1.i18n)(
|
|
20
|
+
const groupLabel = (0, lang_1.i18n)(`commands.secret.subcommands.list.groupLabel`, {
|
|
22
21
|
accountIdentifier: (0, ui_1.uiAccountDescription)(derivedAccountId),
|
|
23
22
|
});
|
|
24
23
|
logger_1.logger.group(groupLabel);
|
|
@@ -26,7 +25,7 @@ async function handler(args) {
|
|
|
26
25
|
logger_1.logger.groupEnd();
|
|
27
26
|
}
|
|
28
27
|
catch (err) {
|
|
29
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
28
|
+
logger_1.logger.error((0, lang_1.i18n)(`commands.secret.subcommands.list.errors.list`));
|
|
30
29
|
(0, index_1.logError)(err, new index_1.ApiErrorContext({
|
|
31
30
|
request: 'add secret',
|
|
32
31
|
accountId: derivedAccountId,
|
|
@@ -12,9 +12,8 @@ const ui_1 = require("../../lib/ui");
|
|
|
12
12
|
const commonOpts_1 = require("../../lib/commonOpts");
|
|
13
13
|
const secretPrompt_1 = require("../../lib/prompts/secretPrompt");
|
|
14
14
|
const lang_1 = require("../../lib/lang");
|
|
15
|
-
const i18nKey = 'commands.secret.subcommands.update';
|
|
16
15
|
exports.command = 'update [name]';
|
|
17
|
-
exports.describe = (0, lang_1.i18n)(
|
|
16
|
+
exports.describe = (0, lang_1.i18n)(`commands.secret.subcommands.update.describe`);
|
|
18
17
|
async function handler(args) {
|
|
19
18
|
const { name, derivedAccountId } = args;
|
|
20
19
|
let secretName = name;
|
|
@@ -22,23 +21,25 @@ async function handler(args) {
|
|
|
22
21
|
try {
|
|
23
22
|
const { data: { results: secrets }, } = await (0, secrets_1.fetchSecrets)(derivedAccountId);
|
|
24
23
|
if (secretName && !secrets.includes(secretName)) {
|
|
25
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
24
|
+
logger_1.logger.error((0, lang_1.i18n)(`commands.secret.subcommands.update.errors.noSecret`, {
|
|
25
|
+
secretName,
|
|
26
|
+
}));
|
|
26
27
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
27
28
|
}
|
|
28
29
|
if (!secretName) {
|
|
29
|
-
const { secretToModify } = await (0, secretPrompt_1.secretListPrompt)(secrets, (0, lang_1.i18n)(
|
|
30
|
+
const { secretToModify } = await (0, secretPrompt_1.secretListPrompt)(secrets, (0, lang_1.i18n)(`commands.secret.subcommands.update.selectSecret`));
|
|
30
31
|
secretName = secretToModify;
|
|
31
32
|
}
|
|
32
33
|
const { secretValue } = await (0, secretPrompt_1.secretValuePrompt)();
|
|
33
34
|
await (0, secrets_1.updateSecret)(derivedAccountId, secretName, secretValue);
|
|
34
|
-
logger_1.logger.success((0, lang_1.i18n)(
|
|
35
|
+
logger_1.logger.success((0, lang_1.i18n)(`commands.secret.subcommands.update.success.update`, {
|
|
35
36
|
accountIdentifier: (0, ui_1.uiAccountDescription)(derivedAccountId),
|
|
36
37
|
secretName,
|
|
37
38
|
}));
|
|
38
|
-
logger_1.logger.log((0, lang_1.i18n)(
|
|
39
|
+
logger_1.logger.log((0, lang_1.i18n)(`commands.secret.subcommands.update.success.updateExplanation`));
|
|
39
40
|
}
|
|
40
41
|
catch (err) {
|
|
41
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
42
|
+
logger_1.logger.error((0, lang_1.i18n)(`commands.secret.subcommands.update.errors.update`, {
|
|
42
43
|
secretName: secretName || '',
|
|
43
44
|
}));
|
|
44
45
|
(0, index_1.logError)(err, new index_1.ApiErrorContext({
|
|
@@ -52,7 +53,7 @@ function builder(yargs) {
|
|
|
52
53
|
(0, commonOpts_1.addAccountOptions)(yargs);
|
|
53
54
|
(0, commonOpts_1.addUseEnvironmentOptions)(yargs);
|
|
54
55
|
yargs.positional('name', {
|
|
55
|
-
describe: (0, lang_1.i18n)(
|
|
56
|
+
describe: (0, lang_1.i18n)(`commands.secret.subcommands.update.positionals.name.describe`),
|
|
56
57
|
type: 'string',
|
|
57
58
|
});
|
|
58
59
|
return yargs;
|
package/commands/secret.js
CHANGED
|
@@ -41,9 +41,8 @@ const listSecretCommand = __importStar(require("./secret/listSecret"));
|
|
|
41
41
|
const deleteSecretCommand = __importStar(require("./secret/deleteSecret"));
|
|
42
42
|
const updateSecretCommand = __importStar(require("./secret/updateSecret"));
|
|
43
43
|
const lang_1 = require("../lib/lang");
|
|
44
|
-
const i18nKey = 'commands.secret';
|
|
45
44
|
exports.command = ['secret', 'secrets'];
|
|
46
|
-
exports.describe = (0, lang_1.i18n)(
|
|
45
|
+
exports.describe = (0, lang_1.i18n)(`commands.secret.describe`);
|
|
47
46
|
function builder(yargs) {
|
|
48
47
|
(0, commonOpts_1.addGlobalOptions)(yargs);
|
|
49
48
|
yargs
|
|
@@ -20,14 +20,13 @@ const CSS_VARS_NAME_REGEX = new RegExp(/(--[\w.(,\d\-)]*)/, 'g');
|
|
|
20
20
|
const CSS_SELECTORS_REGEX = new RegExp(/([\s\w:.,\0-[\]]*){/, 'i');
|
|
21
21
|
const CSS_EXPRESSION_REGEX = new RegExp(/(?!\s)([^}])*(?![.#\s,>])[^}]*}/, 'g');
|
|
22
22
|
const THEME_PATH_REGEX = new RegExp(/=\s*.*(theme\.(\w|\.)*)/, 'i');
|
|
23
|
-
const i18nKey = 'commands.theme.subcommands.generateSelectors';
|
|
24
23
|
exports.command = 'generate-selectors <path>';
|
|
25
|
-
exports.describe = (0, lang_1.i18n)(
|
|
24
|
+
exports.describe = (0, lang_1.i18n)('commands.theme.subcommands.generateSelectors.describe');
|
|
26
25
|
async function handler(args) {
|
|
27
26
|
const { path } = args;
|
|
28
27
|
const fieldsJsonPath = (0, generateSelectors_1.findFieldsJsonPath)(path);
|
|
29
28
|
if (!fieldsJsonPath) {
|
|
30
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
29
|
+
logger_1.logger.error((0, lang_1.i18n)('commands.theme.subcommands.generateSelectors.errors.fieldsNotFound'));
|
|
31
30
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
32
31
|
}
|
|
33
32
|
let fieldsJson = JSON.parse(fs_1.default.readFileSync(fieldsJsonPath, 'utf-8'));
|
|
@@ -137,7 +136,7 @@ async function handler(args) {
|
|
|
137
136
|
return themeFieldsSelectorMap;
|
|
138
137
|
}, {});
|
|
139
138
|
if (!Object.keys(finalMap).length) {
|
|
140
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
139
|
+
logger_1.logger.error((0, lang_1.i18n)('commands.theme.subcommands.generateSelectors.errors.noSelectorsFound'));
|
|
141
140
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
142
141
|
}
|
|
143
142
|
Object.keys(finalMap).forEach(themeFieldKey => {
|
|
@@ -154,14 +153,14 @@ async function handler(args) {
|
|
|
154
153
|
const selectorsMap = (0, generateSelectors_1.generateSelectorsMap)(fieldsJson);
|
|
155
154
|
const selectorsPath = `${path}/editor-preview.json`;
|
|
156
155
|
fs_1.default.writeFileSync(selectorsPath, `${JSON.stringify({ selectors: selectorsMap }, null, 2)}\n`);
|
|
157
|
-
logger_1.logger.success((0, lang_1.i18n)(
|
|
156
|
+
logger_1.logger.success((0, lang_1.i18n)('commands.theme.subcommands.generateSelectors.success', {
|
|
158
157
|
themePath: path,
|
|
159
158
|
selectorsPath,
|
|
160
159
|
}));
|
|
161
160
|
}
|
|
162
161
|
function builder(yargs) {
|
|
163
162
|
yargs.positional('path', {
|
|
164
|
-
describe: (0, lang_1.i18n)(
|
|
163
|
+
describe: (0, lang_1.i18n)('commands.theme.subcommands.generateSelectors.positionals.path.describe'),
|
|
165
164
|
type: 'string',
|
|
166
165
|
required: true,
|
|
167
166
|
});
|
|
@@ -11,15 +11,14 @@ const commonOpts_1 = require("../../lib/commonOpts");
|
|
|
11
11
|
const usageTracking_1 = require("../../lib/usageTracking");
|
|
12
12
|
const marketplaceValidate_1 = require("../../lib/marketplaceValidate");
|
|
13
13
|
const lang_1 = require("../../lib/lang");
|
|
14
|
-
const i18nKey = 'commands.theme.subcommands.marketplaceValidate';
|
|
15
14
|
exports.command = 'marketplace-validate <path>';
|
|
16
|
-
exports.describe = (0, lang_1.i18n)(
|
|
15
|
+
exports.describe = (0, lang_1.i18n)('commands.theme.subcommands.marketplaceValidate.describe');
|
|
17
16
|
async function handler(args) {
|
|
18
17
|
const { path, derivedAccountId } = args;
|
|
19
18
|
(0, usageTracking_1.trackCommandUsage)('validate', {}, derivedAccountId);
|
|
20
19
|
SpinniesManager_1.default.init();
|
|
21
20
|
SpinniesManager_1.default.add('marketplaceValidation', {
|
|
22
|
-
text: (0, lang_1.i18n)(
|
|
21
|
+
text: (0, lang_1.i18n)('commands.theme.subcommands.marketplaceValidate.logs.validatingTheme', {
|
|
23
22
|
path,
|
|
24
23
|
}),
|
|
25
24
|
});
|
|
@@ -28,8 +27,8 @@ async function handler(args) {
|
|
|
28
27
|
await (0, marketplaceValidate_1.pollForValidationFinish)(derivedAccountId, validationId);
|
|
29
28
|
SpinniesManager_1.default.remove('marketplaceValidation');
|
|
30
29
|
const validationResults = await (0, marketplaceValidate_1.fetchValidationResults)(derivedAccountId, validationId);
|
|
31
|
-
(0, marketplaceValidate_1.processValidationErrors)(
|
|
32
|
-
(0, marketplaceValidate_1.displayValidationResults)(
|
|
30
|
+
(0, marketplaceValidate_1.processValidationErrors)('commands.theme.subcommands.marketplaceValidate', validationResults);
|
|
31
|
+
(0, marketplaceValidate_1.displayValidationResults)('commands.theme.subcommands.marketplaceValidate', validationResults);
|
|
33
32
|
process.exit();
|
|
34
33
|
}
|
|
35
34
|
function builder(yargs) {
|
|
@@ -37,7 +36,7 @@ function builder(yargs) {
|
|
|
37
36
|
(0, commonOpts_1.addAccountOptions)(yargs);
|
|
38
37
|
(0, commonOpts_1.addUseEnvironmentOptions)(yargs);
|
|
39
38
|
yargs.positional('path', {
|
|
40
|
-
describe: (0, lang_1.i18n)(
|
|
39
|
+
describe: (0, lang_1.i18n)('commands.theme.subcommands.marketplaceValidate.positionals.path.describe'),
|
|
41
40
|
type: 'string',
|
|
42
41
|
required: true,
|
|
43
42
|
});
|
|
@@ -22,16 +22,16 @@ const previewPrompt_1 = require("../../lib/prompts/previewPrompt");
|
|
|
22
22
|
const exitCodes_1 = require("../../lib/enums/exitCodes");
|
|
23
23
|
const index_1 = require("../../lib/errorHandlers/index");
|
|
24
24
|
const process_1 = require("../../lib/process");
|
|
25
|
-
const
|
|
25
|
+
const config_1 = require("../../lib/projects/config");
|
|
26
26
|
const structure_1 = require("../../lib/projects/structure");
|
|
27
27
|
const Projects_1 = require("../../types/Projects");
|
|
28
28
|
const hasFeature_1 = require("../../lib/hasFeature");
|
|
29
|
-
const
|
|
29
|
+
const constants_1 = require("../../lib/constants");
|
|
30
30
|
exports.command = 'preview [--src] [--dest]';
|
|
31
|
-
exports.describe = (0, lang_1.i18n)(
|
|
31
|
+
exports.describe = (0, lang_1.i18n)('commands.theme.subcommands.preview.describe');
|
|
32
32
|
function validateSrcPath(src) {
|
|
33
33
|
const logInvalidPath = () => {
|
|
34
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
34
|
+
logger_1.logger.error((0, lang_1.i18n)('commands.theme.subcommands.preview.errors.invalidPath', {
|
|
35
35
|
path: src,
|
|
36
36
|
}));
|
|
37
37
|
};
|
|
@@ -50,7 +50,7 @@ function validateSrcPath(src) {
|
|
|
50
50
|
}
|
|
51
51
|
function handleUserInput() {
|
|
52
52
|
const onTerminate = () => {
|
|
53
|
-
logger_1.logger.log((0, lang_1.i18n)(
|
|
53
|
+
logger_1.logger.log((0, lang_1.i18n)('commands.theme.subcommands.preview.logs.processExited'));
|
|
54
54
|
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
55
55
|
};
|
|
56
56
|
(0, process_1.handleExit)(onTerminate);
|
|
@@ -63,7 +63,7 @@ function handleUserInput() {
|
|
|
63
63
|
async function determineSrcAndDest(args) {
|
|
64
64
|
let absoluteSrc;
|
|
65
65
|
let dest;
|
|
66
|
-
const { projectDir, projectConfig } = await (0,
|
|
66
|
+
const { projectDir, projectConfig } = await (0, config_1.getProjectConfig)();
|
|
67
67
|
if (!(projectDir && projectConfig)) {
|
|
68
68
|
// Not in a project, prompt for src and dest of traditional theme
|
|
69
69
|
const previewPromptAnswers = await (0, previewPrompt_1.previewPrompt)(args);
|
|
@@ -81,7 +81,7 @@ async function determineSrcAndDest(args) {
|
|
|
81
81
|
const projectComponents = await (0, structure_1.findProjectComponents)(projectDir);
|
|
82
82
|
const themeComponents = projectComponents.filter(c => c.type === Projects_1.ComponentTypes.HublTheme);
|
|
83
83
|
if (themeComponents.length === 0) {
|
|
84
|
-
logger_1.logger.error((0, lang_1.i18n)(
|
|
84
|
+
logger_1.logger.error((0, lang_1.i18n)('commands.theme.subcommands.preview.errors.noThemeComponents'));
|
|
85
85
|
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
86
86
|
}
|
|
87
87
|
const answer = await (0, previewPrompt_1.previewProjectPrompt)(themeComponents);
|
|
@@ -105,7 +105,7 @@ async function handler(args) {
|
|
|
105
105
|
hideCursor: true,
|
|
106
106
|
}, cli_progress_1.default.Presets.rect);
|
|
107
107
|
initialUploadProgressBar.start(numFiles, 0, {
|
|
108
|
-
label: (0, lang_1.i18n)(
|
|
108
|
+
label: (0, lang_1.i18n)('commands.theme.subcommands.preview.initialUploadProgressBar.start'),
|
|
109
109
|
});
|
|
110
110
|
let uploadsHaveStarted = false;
|
|
111
111
|
const uploadOptions = {
|
|
@@ -117,7 +117,7 @@ async function handler(args) {
|
|
|
117
117
|
if (!uploadsHaveStarted) {
|
|
118
118
|
uploadsHaveStarted = true;
|
|
119
119
|
initialUploadProgressBar.update(0, {
|
|
120
|
-
label: (0, lang_1.i18n)(
|
|
120
|
+
label: (0, lang_1.i18n)('commands.theme.subcommands.preview.initialUploadProgressBar.uploading'),
|
|
121
121
|
});
|
|
122
122
|
}
|
|
123
123
|
},
|
|
@@ -130,7 +130,7 @@ async function handler(args) {
|
|
|
130
130
|
onFinalErrorCallback: () => initialUploadProgressBar.increment(),
|
|
131
131
|
onFinishCallback: (results) => {
|
|
132
132
|
initialUploadProgressBar.update(numFiles, {
|
|
133
|
-
label: (0, lang_1.i18n)(
|
|
133
|
+
label: (0, lang_1.i18n)('commands.theme.subcommands.preview.initialUploadProgressBar.finish'),
|
|
134
134
|
});
|
|
135
135
|
initialUploadProgressBar.stop();
|
|
136
136
|
results.forEach(result => {
|
|
@@ -159,7 +159,7 @@ async function handler(args) {
|
|
|
159
159
|
catch (e) {
|
|
160
160
|
logger_1.logger.warn('Unified dev server requires node 20 to run. Defaulting to legacy preview.');
|
|
161
161
|
}
|
|
162
|
-
const isUngatedForUnified = await (0, hasFeature_1.hasFeature)(derivedAccountId,
|
|
162
|
+
const isUngatedForUnified = await (0, hasFeature_1.hasFeature)(derivedAccountId, constants_1.FEATURES.UNIFIED_THEME_PREVIEW);
|
|
163
163
|
if (isUngatedForUnified && createUnifiedDevServer) {
|
|
164
164
|
if (port) {
|
|
165
165
|
process.env['PORT'] = port.toString();
|
|
@@ -188,27 +188,27 @@ function builder(yargs) {
|
|
|
188
188
|
(0, commonOpts_1.addAccountOptions)(yargs);
|
|
189
189
|
yargs
|
|
190
190
|
.option('src', {
|
|
191
|
-
describe: (0, lang_1.i18n)(
|
|
191
|
+
describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.src.describe'),
|
|
192
192
|
type: 'string',
|
|
193
193
|
requiresArg: true,
|
|
194
194
|
})
|
|
195
195
|
.option('dest', {
|
|
196
|
-
describe: (0, lang_1.i18n)(
|
|
196
|
+
describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.dest.describe'),
|
|
197
197
|
type: 'string',
|
|
198
198
|
requiresArg: true,
|
|
199
199
|
})
|
|
200
200
|
.option('notify', {
|
|
201
201
|
alias: 'n',
|
|
202
|
-
describe: (0, lang_1.i18n)(
|
|
202
|
+
describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.notify.describe'),
|
|
203
203
|
type: 'string',
|
|
204
204
|
requiresArg: true,
|
|
205
205
|
})
|
|
206
206
|
.option('no-ssl', {
|
|
207
|
-
describe: (0, lang_1.i18n)(
|
|
207
|
+
describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.noSsl.describe'),
|
|
208
208
|
type: 'boolean',
|
|
209
209
|
})
|
|
210
210
|
.option('port', {
|
|
211
|
-
describe: (0, lang_1.i18n)(
|
|
211
|
+
describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.port.describe'),
|
|
212
212
|
type: 'number',
|
|
213
213
|
})
|
|
214
214
|
.option('resetSession', {
|
package/commands/theme.js
CHANGED
|
@@ -40,9 +40,8 @@ const generateSelectors = __importStar(require("./theme/generate-selectors"));
|
|
|
40
40
|
const previewCommand = __importStar(require("./theme/preview"));
|
|
41
41
|
const commonOpts_1 = require("../lib/commonOpts");
|
|
42
42
|
const lang_1 = require("../lib/lang");
|
|
43
|
-
const i18nKey = 'commands.theme';
|
|
44
43
|
exports.command = ['theme', 'themes'];
|
|
45
|
-
exports.describe = (0, lang_1.i18n)(
|
|
44
|
+
exports.describe = (0, lang_1.i18n)('commands.theme.describe');
|
|
46
45
|
function builder(yargs) {
|
|
47
46
|
(0, commonOpts_1.addGlobalOptions)(yargs);
|
|
48
47
|
yargs
|
package/commands/upload.js
CHANGED
|
@@ -19,16 +19,15 @@ const { validateCmsPublishMode } = require('../lib/validation');
|
|
|
19
19
|
const { trackCommandUsage } = require('../lib/usageTracking');
|
|
20
20
|
const { getUploadableFileList } = require('../lib/upload');
|
|
21
21
|
const { i18n } = require('../lib/lang');
|
|
22
|
-
const i18nKey = 'commands.upload';
|
|
23
22
|
const { EXIT_CODES } = require('../lib/enums/exitCodes');
|
|
24
23
|
const { FieldsJs, isConvertableFieldJs, cleanupTmpDirSync, } = require('@hubspot/local-dev-lib/cms/handleFieldsJS');
|
|
25
24
|
exports.command = 'upload [src] [dest]';
|
|
26
|
-
exports.describe = i18n(
|
|
25
|
+
exports.describe = i18n('commands.upload.describe');
|
|
27
26
|
const logThemePreview = (filePath, accountId) => {
|
|
28
27
|
const previewUrl = getThemePreviewUrl(filePath, accountId);
|
|
29
28
|
// Only log if we are actually in a theme
|
|
30
29
|
if (previewUrl) {
|
|
31
|
-
logger.log(i18n(
|
|
30
|
+
logger.log(i18n('commands.upload.previewUrl', {
|
|
32
31
|
previewUrl,
|
|
33
32
|
}));
|
|
34
33
|
}
|
|
@@ -45,7 +44,7 @@ exports.handler = async (options) => {
|
|
|
45
44
|
let dest = options.dest || uploadPromptAnswers.dest;
|
|
46
45
|
let absoluteSrcPath = path.resolve(getCwd(), src);
|
|
47
46
|
if (!dest) {
|
|
48
|
-
logger.error(i18n(
|
|
47
|
+
logger.error(i18n('commands.upload.errors.destinationRequired'));
|
|
49
48
|
return;
|
|
50
49
|
}
|
|
51
50
|
// Check for theme.json file and determine the root path for the project based on it if it exists
|
|
@@ -68,14 +67,14 @@ exports.handler = async (options) => {
|
|
|
68
67
|
try {
|
|
69
68
|
stats = fs.statSync(absoluteSrcPath);
|
|
70
69
|
if (!stats.isFile() && !stats.isDirectory()) {
|
|
71
|
-
logger.error(i18n(
|
|
70
|
+
logger.error(i18n('commands.upload.errors.invalidPath', {
|
|
72
71
|
path: src,
|
|
73
72
|
}));
|
|
74
73
|
return;
|
|
75
74
|
}
|
|
76
75
|
}
|
|
77
76
|
catch (e) {
|
|
78
|
-
logger.error(i18n(
|
|
77
|
+
logger.error(i18n('commands.upload.errors.invalidPath', {
|
|
79
78
|
path: src,
|
|
80
79
|
}));
|
|
81
80
|
return;
|
|
@@ -89,20 +88,20 @@ exports.handler = async (options) => {
|
|
|
89
88
|
}
|
|
90
89
|
if (stats.isFile()) {
|
|
91
90
|
if (!isAllowedExtension(src) && !convertFields) {
|
|
92
|
-
logger.error(i18n(
|
|
91
|
+
logger.error(i18n('commands.upload.errors.invalidPath', {
|
|
93
92
|
path: src,
|
|
94
93
|
}));
|
|
95
94
|
return;
|
|
96
95
|
}
|
|
97
96
|
if (shouldIgnoreFile(absoluteSrcPath)) {
|
|
98
|
-
logger.error(i18n(
|
|
97
|
+
logger.error(i18n('commands.upload.errors.fileIgnored', {
|
|
99
98
|
path: src,
|
|
100
99
|
}));
|
|
101
100
|
return;
|
|
102
101
|
}
|
|
103
102
|
upload(derivedAccountId, absoluteSrcPath, normalizedDest, getFileMapperQueryValues(cmsPublishMode, options))
|
|
104
103
|
.then(() => {
|
|
105
|
-
logger.success(i18n(
|
|
104
|
+
logger.success(i18n('commands.upload.success.fileUploaded', {
|
|
106
105
|
accountId: derivedAccountId,
|
|
107
106
|
dest: normalizedDest,
|
|
108
107
|
src,
|
|
@@ -110,7 +109,7 @@ exports.handler = async (options) => {
|
|
|
110
109
|
logThemePreview(src, derivedAccountId);
|
|
111
110
|
})
|
|
112
111
|
.catch(error => {
|
|
113
|
-
logger.error(i18n(
|
|
112
|
+
logger.error(i18n('commands.upload.errors.uploadFailed', {
|
|
114
113
|
dest: normalizedDest,
|
|
115
114
|
src,
|
|
116
115
|
}));
|
|
@@ -131,7 +130,7 @@ exports.handler = async (options) => {
|
|
|
131
130
|
});
|
|
132
131
|
}
|
|
133
132
|
else {
|
|
134
|
-
logger.log(i18n(
|
|
133
|
+
logger.log(i18n('commands.upload.uploading', {
|
|
135
134
|
accountId: derivedAccountId,
|
|
136
135
|
dest,
|
|
137
136
|
src,
|
|
@@ -142,7 +141,7 @@ exports.handler = async (options) => {
|
|
|
142
141
|
// If clean is true, will first delete the dest folder and then upload src. Cleans up files that only exist on HS.
|
|
143
142
|
let cleanUpload = options.force;
|
|
144
143
|
if (!options.force) {
|
|
145
|
-
cleanUpload = await confirmPrompt(i18n(
|
|
144
|
+
cleanUpload = await confirmPrompt(i18n('commands.upload.confirmCleanUpload', {
|
|
146
145
|
accountId: derivedAccountId,
|
|
147
146
|
path: dest,
|
|
148
147
|
}), { defaultAnswer: false });
|
|
@@ -150,13 +149,13 @@ exports.handler = async (options) => {
|
|
|
150
149
|
if (cleanUpload) {
|
|
151
150
|
try {
|
|
152
151
|
await deleteFile(derivedAccountId, dest);
|
|
153
|
-
logger.log(i18n(
|
|
152
|
+
logger.log(i18n('commands.upload.cleaning', {
|
|
154
153
|
accountId: derivedAccountId,
|
|
155
154
|
filePath: dest,
|
|
156
155
|
}));
|
|
157
156
|
}
|
|
158
157
|
catch (error) {
|
|
159
|
-
logger.error(i18n(
|
|
158
|
+
logger.error(i18n('commands.upload.errors.deleteFailed', {
|
|
160
159
|
accountId: derivedAccountId,
|
|
161
160
|
path: dest,
|
|
162
161
|
}));
|
|
@@ -168,20 +167,20 @@ exports.handler = async (options) => {
|
|
|
168
167
|
}, options, filePaths)
|
|
169
168
|
.then(results => {
|
|
170
169
|
if (!hasUploadErrors(results)) {
|
|
171
|
-
logger.success(i18n(
|
|
170
|
+
logger.success(i18n('commands.upload.success.uploadComplete', {
|
|
172
171
|
dest,
|
|
173
172
|
}));
|
|
174
173
|
logThemePreview(src, derivedAccountId);
|
|
175
174
|
}
|
|
176
175
|
else {
|
|
177
|
-
logger.error(i18n(
|
|
176
|
+
logger.error(i18n('commands.upload.errors.someFilesFailed', {
|
|
178
177
|
dest,
|
|
179
178
|
}));
|
|
180
179
|
process.exit(EXIT_CODES.WARNING);
|
|
181
180
|
}
|
|
182
181
|
})
|
|
183
182
|
.catch(error => {
|
|
184
|
-
logger.error(i18n(
|
|
183
|
+
logger.error(i18n('commands.upload.errors.uploadFailed', {
|
|
185
184
|
dest,
|
|
186
185
|
src,
|
|
187
186
|
}));
|
|
@@ -194,36 +193,36 @@ exports.handler = async (options) => {
|
|
|
194
193
|
};
|
|
195
194
|
exports.builder = yargs => {
|
|
196
195
|
yargs.positional('src', {
|
|
197
|
-
describe: i18n(
|
|
196
|
+
describe: i18n('commands.upload.positionals.src.describe'),
|
|
198
197
|
type: 'string',
|
|
199
198
|
});
|
|
200
199
|
yargs.positional('dest', {
|
|
201
|
-
describe: i18n(
|
|
200
|
+
describe: i18n('commands.upload.positionals.dest.describe'),
|
|
202
201
|
type: 'string',
|
|
203
202
|
});
|
|
204
203
|
yargs.option('fieldOptions', {
|
|
205
|
-
describe: i18n(
|
|
204
|
+
describe: i18n('commands.upload.options.options.describe'),
|
|
206
205
|
type: 'array',
|
|
207
206
|
default: [''],
|
|
208
207
|
hidden: true,
|
|
209
208
|
});
|
|
210
209
|
yargs.option('saveOutput', {
|
|
211
|
-
describe: i18n(
|
|
210
|
+
describe: i18n('commands.upload.options.saveOutput.describe'),
|
|
212
211
|
type: 'boolean',
|
|
213
212
|
default: false,
|
|
214
213
|
});
|
|
215
214
|
yargs.option('convertFields', {
|
|
216
|
-
describe: i18n(
|
|
215
|
+
describe: i18n('commands.upload.options.convertFields.describe'),
|
|
217
216
|
type: 'boolean',
|
|
218
217
|
default: false,
|
|
219
218
|
});
|
|
220
219
|
yargs.option('clean', {
|
|
221
|
-
describe: i18n(
|
|
220
|
+
describe: i18n('commands.upload.options.clean.describe'),
|
|
222
221
|
type: 'boolean',
|
|
223
222
|
default: false,
|
|
224
223
|
});
|
|
225
224
|
yargs.option('force', {
|
|
226
|
-
describe: i18n(
|
|
225
|
+
describe: i18n('commands.upload.options.force.describe'),
|
|
227
226
|
type: 'boolean',
|
|
228
227
|
default: false,
|
|
229
228
|
});
|