@hubspot/cli 8.0.10-experimental.7 → 8.0.11-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 +2 -0
- package/commands/account/auth.js +12 -22
- package/commands/account/clean.js +5 -6
- package/commands/account/createOverride.js +7 -7
- package/commands/account/info.js +2 -1
- package/commands/account/list.js +3 -5
- package/commands/account/remove.js +2 -3
- package/commands/account/removeOverride.js +8 -10
- package/commands/account/rename.js +5 -6
- package/commands/account/use.js +8 -19
- package/commands/api.d.ts +10 -0
- package/commands/api.js +164 -0
- package/commands/app/migrate.js +8 -8
- package/commands/app/secret/add.js +6 -7
- package/commands/app/secret/delete.js +9 -10
- package/commands/app/secret/list.js +6 -7
- package/commands/app/secret/update.js +8 -9
- package/commands/auth.js +12 -12
- package/commands/cms/app/create.js +9 -5
- package/commands/cms/convertFields.js +8 -8
- package/commands/cms/delete.js +2 -3
- package/commands/cms/fetch.js +7 -7
- package/commands/cms/function/create.js +9 -5
- package/commands/cms/function/deploy.js +2 -3
- package/commands/cms/function/list.js +11 -7
- package/commands/cms/function/logs.js +17 -23
- package/commands/cms/function/server.js +2 -3
- package/commands/cms/getReactModule.js +7 -8
- package/commands/cms/lighthouseScore.js +25 -24
- package/commands/cms/lint.js +4 -5
- package/commands/cms/list.js +5 -6
- package/commands/cms/module/create.js +9 -5
- package/commands/cms/module/marketplace-validate.js +7 -8
- package/commands/cms/mv.js +2 -3
- package/commands/cms/template/create.js +10 -6
- package/commands/cms/theme/create.js +5 -5
- package/commands/cms/theme/generate-selectors.js +5 -4
- package/commands/cms/theme/marketplace-validate.js +8 -9
- package/commands/cms/theme/preview.js +16 -8
- package/commands/cms/upload.js +15 -12
- package/commands/cms/watch.js +5 -5
- package/commands/cms/webpack/create.js +5 -5
- package/commands/completion.js +3 -5
- package/commands/config/migrate.js +6 -7
- package/commands/config/set.js +5 -6
- package/commands/customObject/create.js +4 -5
- package/commands/customObject/createSchema.js +4 -5
- package/commands/customObject/deleteSchema.js +4 -5
- package/commands/customObject/fetchAllSchemas.js +2 -3
- package/commands/customObject/fetchSchema.js +2 -3
- package/commands/customObject/listSchemas.js +2 -3
- package/commands/customObject/updateSchema.js +4 -5
- package/commands/doctor.js +8 -8
- package/commands/feedback.js +6 -4
- package/commands/filemanager/fetch.js +5 -6
- package/commands/filemanager/upload.js +5 -5
- package/commands/getStarted.js +14 -16
- package/commands/hubdb/clear.js +5 -6
- package/commands/hubdb/create.js +4 -5
- package/commands/hubdb/delete.js +8 -9
- package/commands/hubdb/fetch.js +5 -6
- package/commands/hubdb/list.js +16 -14
- package/commands/init.js +14 -17
- package/commands/mcp/setup.js +5 -6
- package/commands/mcp/start.js +2 -3
- package/commands/open.js +4 -5
- package/commands/project/add.js +10 -5
- package/commands/project/create.js +10 -10
- package/commands/project/delete.d.ts +7 -0
- package/commands/project/delete.js +74 -0
- package/commands/project/deploy.js +36 -34
- package/commands/project/dev/deprecatedFlow.js +42 -15
- package/commands/project/dev/index.d.ts +3 -3
- package/commands/project/dev/index.js +24 -30
- package/commands/project/dev/unifiedFlow.js +37 -14
- package/commands/project/download.js +10 -11
- package/commands/project/info.d.ts +4 -0
- package/commands/project/info.js +67 -0
- package/commands/project/installDeps.js +9 -6
- package/commands/project/lint.js +11 -8
- package/commands/project/list.js +14 -14
- package/commands/project/listBuilds.js +8 -6
- package/commands/project/logs.js +5 -6
- package/commands/project/migrate.js +8 -8
- package/commands/project/open.js +5 -6
- package/commands/project/profile/add.js +12 -8
- package/commands/project/profile/delete.js +15 -11
- package/commands/project/updateDeps.js +9 -6
- package/commands/project/upload.js +31 -17
- package/commands/project/validate.js +11 -11
- package/commands/project/watch.js +20 -20
- package/commands/project.js +4 -0
- package/commands/sandbox/create.js +15 -15
- package/commands/sandbox/delete.js +13 -14
- package/commands/secret/addSecret.js +6 -7
- package/commands/secret/deleteSecret.js +5 -6
- package/commands/secret/listSecret.js +2 -3
- package/commands/secret/updateSecret.js +4 -5
- package/commands/testAccount/create.d.ts +1 -1
- package/commands/testAccount/create.js +20 -16
- package/commands/testAccount/createConfig.js +7 -8
- package/commands/testAccount/delete.js +27 -18
- package/commands/testAccount/importData.js +6 -7
- package/commands/upgrade.js +9 -10
- package/lang/en.d.ts +123 -5
- package/lang/en.js +121 -6
- package/lib/accountAuth.js +2 -2
- package/lib/buildAccount.js +3 -3
- package/lib/constants.d.ts +0 -1
- package/lib/constants.js +0 -1
- package/lib/doctor/Diagnosis.js +5 -5
- package/lib/errorHandlers/index.js +4 -3
- package/lib/errorHandlers/suppressError.js +4 -0
- package/lib/errors/PromptExitError.d.ts +4 -2
- package/lib/errors/PromptExitError.js +3 -0
- package/lib/hasFeature.js +1 -2
- package/lib/middleware/autoUpdateMiddleware.js +6 -3
- package/lib/process.d.ts +1 -1
- package/lib/process.js +10 -3
- package/lib/projects/create/v2.js +1 -2
- package/lib/projects/delete.d.ts +13 -0
- package/lib/projects/delete.js +193 -0
- package/lib/projects/localDev/AppDevModeInterface.js +11 -11
- package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
- package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
- package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
- package/lib/projects/localDev/DevSessionManager.js +31 -19
- package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
- package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
- package/lib/projects/localDev/LocalDevProcess.js +6 -5
- package/lib/projects/localDev/LocalDevState.d.ts +3 -2
- package/lib/projects/localDev/LocalDevState.js +3 -1
- package/lib/projects/localDev/helpers/account.d.ts +4 -3
- package/lib/projects/localDev/helpers/account.js +16 -19
- package/lib/projects/localDev/helpers/process.d.ts +1 -1
- package/lib/projects/localDev/helpers/process.js +4 -10
- package/lib/projects/localDev/helpers/project.d.ts +4 -3
- package/lib/projects/localDev/helpers/project.js +31 -15
- package/lib/projects/projectInfo.d.ts +5 -0
- package/lib/projects/projectInfo.js +82 -0
- package/lib/projects/projectProfiles.d.ts +1 -2
- package/lib/projects/projectProfiles.js +5 -17
- package/lib/projects/upload.js +19 -0
- package/lib/projects/workspaces.d.ts +42 -0
- package/lib/projects/workspaces.js +350 -0
- package/lib/prompts/createApiSamplePrompt.js +4 -0
- package/lib/prompts/projectProfilePrompt.d.ts +2 -0
- package/lib/prompts/projectProfilePrompt.js +46 -0
- package/lib/prompts/promptUtils.js +3 -2
- package/lib/prompts/selectHubDBTablePrompt.js +2 -2
- package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
- package/lib/theme/cmsDevServerProcess.d.ts +2 -0
- package/lib/theme/cmsDevServerProcess.js +7 -6
- package/lib/ui/SpinniesManager.d.ts +1 -0
- package/lib/ui/SpinniesManager.js +20 -6
- package/lib/ui/spinniesUtils.d.ts +0 -1
- package/lib/ui/spinniesUtils.js +6 -16
- package/lib/usageTracking.d.ts +3 -4
- package/lib/yargs/makeYargsBuilder.d.ts +13 -0
- package/lib/yargs/makeYargsBuilder.js +33 -0
- package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
- package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
- package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
- package/lib/yargs/strictEnforceBoolean.js +13 -0
- package/lib/yargsUtils.d.ts +3 -16
- package/lib/yargsUtils.js +3 -48
- package/package.json +5 -4
- package/types/LocalDev.d.ts +5 -0
- package/types/Projects.d.ts +19 -0
- package/types/Yargs.d.ts +18 -1
package/commands/app/migrate.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
|
|
2
2
|
import { PLATFORM_VERSIONS } from '@hubspot/local-dev-lib/constants/projects';
|
|
3
|
-
import {
|
|
3
|
+
import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
4
|
+
import { trackCommandMetadataUsage } from '../../lib/usageTracking.js';
|
|
4
5
|
import { commands } from '../../lang/en.js';
|
|
5
6
|
import { uiLogger } from '../../lib/ui/logger.js';
|
|
6
7
|
import { ApiErrorContext, logError } from '../../lib/errorHandlers/index.js';
|
|
@@ -13,12 +14,11 @@ const command = 'migrate';
|
|
|
13
14
|
const describe = commands.project.migrateApp.describe;
|
|
14
15
|
export function handlerGenerator(commandTrackingName) {
|
|
15
16
|
return async function handler(args) {
|
|
16
|
-
const { derivedAccountId, platformVersion, unstable } = args;
|
|
17
|
-
await trackCommandUsage(commandTrackingName, {}, derivedAccountId);
|
|
17
|
+
const { derivedAccountId, platformVersion, unstable, exit } = args;
|
|
18
18
|
const accountConfig = getConfigAccountById(derivedAccountId);
|
|
19
19
|
if (!accountConfig) {
|
|
20
20
|
uiLogger.error(commands.project.migrateApp.errors.noAccountConfig);
|
|
21
|
-
return
|
|
21
|
+
return exit(EXIT_CODES.ERROR);
|
|
22
22
|
}
|
|
23
23
|
uiLogger.log('');
|
|
24
24
|
uiLogger.log(commands.project.migrateApp.header);
|
|
@@ -26,7 +26,7 @@ export function handlerGenerator(commandTrackingName) {
|
|
|
26
26
|
try {
|
|
27
27
|
if (getIsInProject()) {
|
|
28
28
|
uiLogger.error(commands.project.migrateApp.errors.notAllowedWithinProject);
|
|
29
|
-
return
|
|
29
|
+
return exit(EXIT_CODES.ERROR);
|
|
30
30
|
}
|
|
31
31
|
args.platformVersion = unstable
|
|
32
32
|
? PLATFORM_VERSIONS.unstable
|
|
@@ -44,10 +44,10 @@ export function handlerGenerator(commandTrackingName) {
|
|
|
44
44
|
logError(error, new ApiErrorContext({ accountId: derivedAccountId }));
|
|
45
45
|
}
|
|
46
46
|
await trackCommandMetadataUsage(commandTrackingName, { successful: false }, derivedAccountId);
|
|
47
|
-
return
|
|
47
|
+
return exit(EXIT_CODES.ERROR);
|
|
48
48
|
}
|
|
49
49
|
await trackCommandMetadataUsage(commandTrackingName, { successful: true }, derivedAccountId);
|
|
50
|
-
return
|
|
50
|
+
return exit(EXIT_CODES.SUCCESS);
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
53
|
const handler = handlerGenerator('app-migrate');
|
|
@@ -90,7 +90,7 @@ const builder = makeYargsBuilder(appMigrateBuilder, command, commands.project.mi
|
|
|
90
90
|
const migrateCommand = {
|
|
91
91
|
command,
|
|
92
92
|
describe,
|
|
93
|
-
handler,
|
|
93
|
+
handler: makeYargsHandlerWithUsageTracking('app-migrate', handler),
|
|
94
94
|
builder,
|
|
95
95
|
};
|
|
96
96
|
export default migrateCommand;
|
|
@@ -1,24 +1,23 @@
|
|
|
1
1
|
import { addAppSecret } from '@hubspot/local-dev-lib/api/devSecrets';
|
|
2
2
|
import { logError } from '../../../lib/errorHandlers/index.js';
|
|
3
|
-
import { trackCommandUsage } from '../../../lib/usageTracking.js';
|
|
4
3
|
import { secretValuePrompt, secretNamePrompt, } from '../../../lib/prompts/secretPrompt.js';
|
|
5
4
|
import { selectAppPrompt } from '../../../lib/prompts/selectAppPrompt.js';
|
|
6
5
|
import { commands } from '../../../lang/en.js';
|
|
7
6
|
import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
|
|
7
|
+
import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
8
8
|
import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
|
|
9
9
|
import { uiLogger } from '../../../lib/ui/logger.js';
|
|
10
10
|
import { uiBetaTag } from '../../../lib/ui/index.js';
|
|
11
11
|
const command = 'add [name]';
|
|
12
12
|
const describe = uiBetaTag(commands.app.subcommands.secret.subcommands.add.describe, false);
|
|
13
13
|
async function handler(args) {
|
|
14
|
-
const { derivedAccountId } = args;
|
|
15
|
-
trackCommandUsage('app-secret-add', {}, derivedAccountId);
|
|
14
|
+
const { derivedAccountId, exit } = args;
|
|
16
15
|
try {
|
|
17
16
|
const appSecretApp = await selectAppPrompt(derivedAccountId, args.app);
|
|
18
17
|
if (!appSecretApp) {
|
|
19
18
|
uiLogger.log('');
|
|
20
19
|
uiLogger.log(commands.app.subcommands.secret.subcommands.add.errors.noApps);
|
|
21
|
-
return
|
|
20
|
+
return exit(EXIT_CODES.ERROR);
|
|
22
21
|
}
|
|
23
22
|
let appSecretName = args.name;
|
|
24
23
|
if (!appSecretName) {
|
|
@@ -32,9 +31,9 @@ async function handler(args) {
|
|
|
32
31
|
}
|
|
33
32
|
catch (err) {
|
|
34
33
|
logError(err);
|
|
35
|
-
return
|
|
34
|
+
return exit(EXIT_CODES.ERROR);
|
|
36
35
|
}
|
|
37
|
-
|
|
36
|
+
return exit(EXIT_CODES.SUCCESS);
|
|
38
37
|
}
|
|
39
38
|
function addAppSecretBuilder(yargs) {
|
|
40
39
|
yargs.positional('name', {
|
|
@@ -57,7 +56,7 @@ const builder = makeYargsBuilder(addAppSecretBuilder, command, describe, {
|
|
|
57
56
|
const addAppSecretCommand = {
|
|
58
57
|
command,
|
|
59
58
|
describe,
|
|
60
|
-
handler,
|
|
59
|
+
handler: makeYargsHandlerWithUsageTracking('app-secret-add', handler),
|
|
61
60
|
builder,
|
|
62
61
|
};
|
|
63
62
|
export default addAppSecretCommand;
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import { deleteAppSecret, fetchAppSecrets, } from '@hubspot/local-dev-lib/api/devSecrets';
|
|
2
2
|
import { logError } from '../../../lib/errorHandlers/index.js';
|
|
3
|
-
import { trackCommandUsage } from '../../../lib/usageTracking.js';
|
|
4
3
|
import { confirmPrompt, listPrompt } from '../../../lib/prompts/promptUtils.js';
|
|
5
4
|
import { selectAppPrompt } from '../../../lib/prompts/selectAppPrompt.js';
|
|
6
5
|
import { commands } from '../../../lang/en.js';
|
|
7
6
|
import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
|
|
7
|
+
import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
8
8
|
import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
|
|
9
9
|
import { uiLogger } from '../../../lib/ui/logger.js';
|
|
10
10
|
import { uiBetaTag } from '../../../lib/ui/index.js';
|
|
11
11
|
const command = 'delete [name]';
|
|
12
12
|
const describe = uiBetaTag(commands.app.subcommands.secret.subcommands.delete.describe, false);
|
|
13
13
|
async function handler(args) {
|
|
14
|
-
const { derivedAccountId, force } = args;
|
|
15
|
-
trackCommandUsage('app-secret-delete', {}, derivedAccountId);
|
|
14
|
+
const { derivedAccountId, force, exit } = args;
|
|
16
15
|
const appSecretApp = await selectAppPrompt(derivedAccountId, args.app);
|
|
17
16
|
if (!appSecretApp) {
|
|
18
|
-
|
|
17
|
+
return exit(EXIT_CODES.ERROR);
|
|
19
18
|
}
|
|
20
19
|
let appSecretToDelete = args.name;
|
|
21
20
|
if (!appSecretToDelete) {
|
|
@@ -28,11 +27,11 @@ async function handler(args) {
|
|
|
28
27
|
}
|
|
29
28
|
catch (err) {
|
|
30
29
|
logError(err);
|
|
31
|
-
|
|
30
|
+
return exit(EXIT_CODES.ERROR);
|
|
32
31
|
}
|
|
33
32
|
if (appSecrets.length === 0) {
|
|
34
33
|
uiLogger.error(commands.app.subcommands.secret.subcommands.delete.errors.noSecrets);
|
|
35
|
-
|
|
34
|
+
return exit(EXIT_CODES.ERROR);
|
|
36
35
|
}
|
|
37
36
|
appSecretToDelete = await listPrompt(commands.app.subcommands.secret.subcommands.delete.selectSecret, { choices: appSecrets });
|
|
38
37
|
}
|
|
@@ -42,7 +41,7 @@ async function handler(args) {
|
|
|
42
41
|
}));
|
|
43
42
|
if (!confirmDelete) {
|
|
44
43
|
uiLogger.log(commands.app.subcommands.secret.subcommands.delete.deleteCanceled);
|
|
45
|
-
|
|
44
|
+
return exit(EXIT_CODES.SUCCESS);
|
|
46
45
|
}
|
|
47
46
|
try {
|
|
48
47
|
await deleteAppSecret(derivedAccountId, appSecretApp.id, appSecretToDelete);
|
|
@@ -51,9 +50,9 @@ async function handler(args) {
|
|
|
51
50
|
}
|
|
52
51
|
catch (err) {
|
|
53
52
|
logError(err);
|
|
54
|
-
|
|
53
|
+
return exit(EXIT_CODES.ERROR);
|
|
55
54
|
}
|
|
56
|
-
|
|
55
|
+
return exit(EXIT_CODES.SUCCESS);
|
|
57
56
|
}
|
|
58
57
|
function deleteAppSecretBuilder(yargs) {
|
|
59
58
|
yargs.positional('name', {
|
|
@@ -80,7 +79,7 @@ const builder = makeYargsBuilder(deleteAppSecretBuilder, command, describe, {
|
|
|
80
79
|
const deleteAppSecretCommand = {
|
|
81
80
|
command,
|
|
82
81
|
describe,
|
|
83
|
-
handler,
|
|
82
|
+
handler: makeYargsHandlerWithUsageTracking('app-secret-delete', handler),
|
|
84
83
|
builder,
|
|
85
84
|
};
|
|
86
85
|
export default deleteAppSecretCommand;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { fetchAppSecrets } from '@hubspot/local-dev-lib/api/devSecrets';
|
|
2
2
|
import { logError } from '../../../lib/errorHandlers/index.js';
|
|
3
|
-
import { trackCommandUsage } from '../../../lib/usageTracking.js';
|
|
4
3
|
import { commands } from '../../../lang/en.js';
|
|
5
4
|
import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
|
|
5
|
+
import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
6
6
|
import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
|
|
7
7
|
import { selectAppPrompt } from '../../../lib/prompts/selectAppPrompt.js';
|
|
8
8
|
import { uiLogger } from '../../../lib/ui/logger.js';
|
|
@@ -10,11 +10,10 @@ import { uiBetaTag } from '../../../lib/ui/index.js';
|
|
|
10
10
|
const command = 'list';
|
|
11
11
|
const describe = uiBetaTag(commands.app.subcommands.secret.subcommands.list.describe, false);
|
|
12
12
|
async function handler(args) {
|
|
13
|
-
const { derivedAccountId } = args;
|
|
14
|
-
trackCommandUsage('app-secret-list', {}, derivedAccountId);
|
|
13
|
+
const { derivedAccountId, exit } = args;
|
|
15
14
|
const appSecretApp = await selectAppPrompt(derivedAccountId, args.app);
|
|
16
15
|
if (!appSecretApp) {
|
|
17
|
-
|
|
16
|
+
return exit(EXIT_CODES.ERROR);
|
|
18
17
|
}
|
|
19
18
|
let appSecrets = [];
|
|
20
19
|
try {
|
|
@@ -25,7 +24,7 @@ async function handler(args) {
|
|
|
25
24
|
}
|
|
26
25
|
catch (err) {
|
|
27
26
|
logError(err);
|
|
28
|
-
|
|
27
|
+
return exit(EXIT_CODES.ERROR);
|
|
29
28
|
}
|
|
30
29
|
if (appSecrets.length === 0) {
|
|
31
30
|
uiLogger.log('');
|
|
@@ -38,7 +37,7 @@ async function handler(args) {
|
|
|
38
37
|
uiLogger.log(`- ${secret}`);
|
|
39
38
|
});
|
|
40
39
|
}
|
|
41
|
-
|
|
40
|
+
return exit(EXIT_CODES.SUCCESS);
|
|
42
41
|
}
|
|
43
42
|
function listAppSecretBuilder(yargs) {
|
|
44
43
|
yargs.option('app', {
|
|
@@ -57,7 +56,7 @@ const builder = makeYargsBuilder(listAppSecretBuilder, command, describe, {
|
|
|
57
56
|
const listAppSecretCommand = {
|
|
58
57
|
command,
|
|
59
58
|
describe,
|
|
60
|
-
handler,
|
|
59
|
+
handler: makeYargsHandlerWithUsageTracking('app-secret-list', handler),
|
|
61
60
|
builder,
|
|
62
61
|
};
|
|
63
62
|
export default listAppSecretCommand;
|
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
import { fetchAppSecrets, updateAppSecret, } from '@hubspot/local-dev-lib/api/devSecrets';
|
|
2
2
|
import { logError } from '../../../lib/errorHandlers/index.js';
|
|
3
|
-
import { trackCommandUsage } from '../../../lib/usageTracking.js';
|
|
4
3
|
import { secretValuePrompt } from '../../../lib/prompts/secretPrompt.js';
|
|
5
4
|
import { selectAppPrompt } from '../../../lib/prompts/selectAppPrompt.js';
|
|
6
5
|
import { listPrompt } from '../../../lib/prompts/promptUtils.js';
|
|
7
6
|
import { commands } from '../../../lang/en.js';
|
|
8
7
|
import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
|
|
8
|
+
import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
9
9
|
import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
|
|
10
10
|
import { uiLogger } from '../../../lib/ui/logger.js';
|
|
11
11
|
import { uiBetaTag } from '../../../lib/ui/index.js';
|
|
12
12
|
const command = 'update [name]';
|
|
13
13
|
const describe = uiBetaTag(commands.app.subcommands.secret.subcommands.update.describe, false);
|
|
14
14
|
async function handler(args) {
|
|
15
|
-
const { derivedAccountId } = args;
|
|
16
|
-
trackCommandUsage('app-secret-update', {}, derivedAccountId);
|
|
15
|
+
const { derivedAccountId, exit } = args;
|
|
17
16
|
const appSecretApp = await selectAppPrompt(derivedAccountId, args.app);
|
|
18
17
|
if (!appSecretApp) {
|
|
19
|
-
|
|
18
|
+
return exit(EXIT_CODES.ERROR);
|
|
20
19
|
}
|
|
21
20
|
let appSecretToUpdate = args.name;
|
|
22
21
|
if (!appSecretToUpdate) {
|
|
@@ -29,11 +28,11 @@ async function handler(args) {
|
|
|
29
28
|
}
|
|
30
29
|
catch (err) {
|
|
31
30
|
logError(err);
|
|
32
|
-
|
|
31
|
+
return exit(EXIT_CODES.ERROR);
|
|
33
32
|
}
|
|
34
33
|
if (appSecrets.length === 0) {
|
|
35
34
|
uiLogger.error(commands.app.subcommands.secret.subcommands.update.errors.noSecrets);
|
|
36
|
-
|
|
35
|
+
return exit(EXIT_CODES.ERROR);
|
|
37
36
|
}
|
|
38
37
|
appSecretToUpdate = await listPrompt(commands.app.subcommands.secret.subcommands.update.selectSecret, { choices: appSecrets });
|
|
39
38
|
}
|
|
@@ -45,9 +44,9 @@ async function handler(args) {
|
|
|
45
44
|
}
|
|
46
45
|
catch (err) {
|
|
47
46
|
logError(err);
|
|
48
|
-
|
|
47
|
+
return exit(EXIT_CODES.ERROR);
|
|
49
48
|
}
|
|
50
|
-
|
|
49
|
+
return exit(EXIT_CODES.SUCCESS);
|
|
51
50
|
}
|
|
52
51
|
function updateAppSecretBuilder(yargs) {
|
|
53
52
|
yargs.positional('name', {
|
|
@@ -70,7 +69,7 @@ const builder = makeYargsBuilder(updateAppSecretBuilder, command, describe, {
|
|
|
70
69
|
const updateAppSecretCommand = {
|
|
71
70
|
command,
|
|
72
71
|
describe,
|
|
73
|
-
handler,
|
|
72
|
+
handler: makeYargsHandlerWithUsageTracking('app-secret-update', handler),
|
|
74
73
|
builder,
|
|
75
74
|
};
|
|
76
75
|
export default updateAppSecretCommand;
|
package/commands/auth.js
CHANGED
|
@@ -11,12 +11,13 @@ import { cliAccountNamePrompt } from '../lib/prompts/accountNamePrompt.js';
|
|
|
11
11
|
import { setAsDefaultAccountPrompt } from '../lib/prompts/setAsDefaultAccountPrompt.js';
|
|
12
12
|
import { setCLILogLevel } from '../lib/commonOpts.js';
|
|
13
13
|
import { makeYargsBuilder } from '../lib/yargsUtils.js';
|
|
14
|
-
import { trackAuthAction
|
|
14
|
+
import { trackAuthAction } from '../lib/usageTracking.js';
|
|
15
15
|
import { authenticateWithOauth } from '../lib/oauth.js';
|
|
16
16
|
import { EXIT_CODES } from '../lib/enums/exitCodes.js';
|
|
17
17
|
import { uiFeatureHighlight } from '../lib/ui/index.js';
|
|
18
18
|
import { logError } from '../lib/errorHandlers/index.js';
|
|
19
|
-
import {
|
|
19
|
+
import { isPromptExitError } from '../lib/errors/PromptExitError.js';
|
|
20
|
+
import { makeYargsHandlerWithUsageTracking } from '../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
20
21
|
import { commands } from '../lang/en.js';
|
|
21
22
|
import { uiLogger } from '../lib/ui/logger.js';
|
|
22
23
|
import { parseStringToNumber } from '../lib/parsing.js';
|
|
@@ -33,7 +34,7 @@ const SUPPORTED_AUTHENTICATION_PROTOCOLS_TEXT = commaSeparatedValues(ALLOWED_AUT
|
|
|
33
34
|
const command = 'auth';
|
|
34
35
|
const describe = commands.auth.describe;
|
|
35
36
|
async function handler(args) {
|
|
36
|
-
const { authType: authTypeFlagValue, config: configFlagValue, qa, personalAccessKey: providedPersonalAccessKey, userProvidedAccount, disableTracking, } = args;
|
|
37
|
+
const { authType: authTypeFlagValue, config: configFlagValue, qa, personalAccessKey: providedPersonalAccessKey, userProvidedAccount, disableTracking, exit, } = args;
|
|
37
38
|
let parsedUserProvidedAccountId;
|
|
38
39
|
try {
|
|
39
40
|
if (userProvidedAccount) {
|
|
@@ -42,7 +43,7 @@ async function handler(args) {
|
|
|
42
43
|
}
|
|
43
44
|
catch (err) {
|
|
44
45
|
uiLogger.error(commands.auth.errors.invalidAccountIdProvided);
|
|
45
|
-
|
|
46
|
+
return exit(EXIT_CODES.ERROR);
|
|
46
47
|
}
|
|
47
48
|
const authType = (authTypeFlagValue && authTypeFlagValue.toLowerCase()) ||
|
|
48
49
|
PERSONAL_ACCESS_KEY_AUTH_METHOD.value;
|
|
@@ -54,10 +55,9 @@ async function handler(args) {
|
|
|
54
55
|
}
|
|
55
56
|
if (!configFlagValue && globalConfigFileExists()) {
|
|
56
57
|
uiLogger.error(commands.auth.errors.globalConfigFileExists('hs account auth'));
|
|
57
|
-
|
|
58
|
+
return exit(EXIT_CODES.ERROR);
|
|
58
59
|
}
|
|
59
60
|
if (!disableTracking) {
|
|
60
|
-
trackCommandUsage('auth');
|
|
61
61
|
trackAuthAction('auth', authType, TRACKING_STATUS.STARTED, parsedUserProvidedAccountId);
|
|
62
62
|
}
|
|
63
63
|
let configData;
|
|
@@ -87,7 +87,7 @@ async function handler(args) {
|
|
|
87
87
|
}
|
|
88
88
|
catch (e) {
|
|
89
89
|
logError(e);
|
|
90
|
-
|
|
90
|
+
return exit(EXIT_CODES.ERROR);
|
|
91
91
|
}
|
|
92
92
|
break;
|
|
93
93
|
case PERSONAL_ACCESS_KEY_AUTH_METHOD.value:
|
|
@@ -103,8 +103,8 @@ async function handler(args) {
|
|
|
103
103
|
updatedConfig = await updateConfigWithAccessToken(token, personalAccessKey, env);
|
|
104
104
|
}
|
|
105
105
|
catch (e) {
|
|
106
|
-
if (e
|
|
107
|
-
|
|
106
|
+
if (isPromptExitError(e)) {
|
|
107
|
+
throw e;
|
|
108
108
|
}
|
|
109
109
|
logError(e);
|
|
110
110
|
}
|
|
@@ -128,7 +128,7 @@ async function handler(args) {
|
|
|
128
128
|
}
|
|
129
129
|
if (!successAuthMethod && !disableTracking) {
|
|
130
130
|
await trackAuthAction('auth', authType, TRACKING_STATUS.ERROR, parsedUserProvidedAccountId);
|
|
131
|
-
|
|
131
|
+
return exit(EXIT_CODES.ERROR);
|
|
132
132
|
}
|
|
133
133
|
const nameFromConfigData = configData && 'name' in configData ? configData.name : undefined;
|
|
134
134
|
const accountName = (updatedConfig && updatedConfig.name) || validName || nameFromConfigData;
|
|
@@ -144,7 +144,7 @@ async function handler(args) {
|
|
|
144
144
|
if (!disableTracking) {
|
|
145
145
|
await trackAuthAction('auth', authType, TRACKING_STATUS.COMPLETE, accountId);
|
|
146
146
|
}
|
|
147
|
-
|
|
147
|
+
return exit(EXIT_CODES.SUCCESS);
|
|
148
148
|
}
|
|
149
149
|
function authBuilder(yargs) {
|
|
150
150
|
yargs.options({
|
|
@@ -184,7 +184,7 @@ const builder = makeYargsBuilder(authBuilder, command, commands.auth.verboseDesc
|
|
|
184
184
|
const authCommand = {
|
|
185
185
|
command,
|
|
186
186
|
describe,
|
|
187
|
-
handler,
|
|
187
|
+
handler: makeYargsHandlerWithUsageTracking('auth', handler),
|
|
188
188
|
builder,
|
|
189
189
|
};
|
|
190
190
|
export default authCommand;
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import { logError } from '../../../lib/errorHandlers/index.js';
|
|
3
3
|
import { resolveLocalPath } from '../../../lib/filesystem.js';
|
|
4
|
-
import { trackCommandUsage } from '../../../lib/usageTracking.js';
|
|
5
4
|
import { commands } from '../../../lang/en.js';
|
|
6
5
|
import { uiLogger } from '../../../lib/ui/logger.js';
|
|
7
6
|
import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
|
|
7
|
+
import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
8
8
|
import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
|
|
9
|
+
import { isPromptExitError } from '../../../lib/errors/PromptExitError.js';
|
|
9
10
|
import assets from '../../../lib/cmsAssets/index.js';
|
|
10
11
|
const APP_ASSET_TYPES = ['api-sample', 'app', 'react-app', 'vue-app'];
|
|
11
12
|
const command = 'create <type> [name] [dest]';
|
|
12
13
|
const describe = commands.cms.subcommands.app.subcommands.create.describe;
|
|
13
14
|
async function handler(args) {
|
|
14
|
-
const {
|
|
15
|
+
const { name, internal: getInternalVersion, type, dest, exit, addUsageMetadata, } = args;
|
|
15
16
|
const assetType = type.toLowerCase();
|
|
16
17
|
if (!assetType || !APP_ASSET_TYPES.includes(assetType)) {
|
|
17
18
|
uiLogger.error(commands.cms.subcommands.app.subcommands.create.errors.unsupportedAssetType(assetType, APP_ASSET_TYPES.filter(t => !assets[t].hidden).join(', ')));
|
|
18
19
|
return;
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
+
addUsageMetadata({ assetType });
|
|
21
22
|
const asset = assets[assetType];
|
|
22
23
|
const argsToPass = {
|
|
23
24
|
commandArgs: args,
|
|
@@ -43,8 +44,11 @@ async function handler(args) {
|
|
|
43
44
|
await asset.execute(argsToPass);
|
|
44
45
|
}
|
|
45
46
|
catch (e) {
|
|
47
|
+
if (isPromptExitError(e)) {
|
|
48
|
+
throw e;
|
|
49
|
+
}
|
|
46
50
|
logError(e);
|
|
47
|
-
|
|
51
|
+
return exit(EXIT_CODES.ERROR);
|
|
48
52
|
}
|
|
49
53
|
}
|
|
50
54
|
function appCreateBuilder(yargs) {
|
|
@@ -76,6 +80,6 @@ const appCreateCommand = {
|
|
|
76
80
|
command,
|
|
77
81
|
describe,
|
|
78
82
|
builder,
|
|
79
|
-
handler,
|
|
83
|
+
handler: makeYargsHandlerWithUsageTracking('create', handler),
|
|
80
84
|
};
|
|
81
85
|
export default appCreateCommand;
|
|
@@ -10,14 +10,16 @@ import { FieldsJs, isConvertableFieldJs, } from '@hubspot/local-dev-lib/cms/hand
|
|
|
10
10
|
import { trackConvertFieldsUsage } from '../../lib/usageTracking.js';
|
|
11
11
|
import { logError } from '../../lib/errorHandlers/index.js';
|
|
12
12
|
import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
|
|
13
|
+
import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
13
14
|
import { makeYargsBuilder } from '../../lib/yargsUtils.js';
|
|
14
15
|
const command = 'convert-fields';
|
|
15
16
|
const describe = commands.convertFields.describe;
|
|
16
|
-
function invalidPath(src) {
|
|
17
|
+
function invalidPath(src, exit) {
|
|
17
18
|
uiLogger.error(commands.convertFields.errors.invalidPath(src));
|
|
18
|
-
|
|
19
|
+
return exit(EXIT_CODES.ERROR);
|
|
19
20
|
}
|
|
20
21
|
async function handler(args) {
|
|
22
|
+
const { exit } = args;
|
|
21
23
|
let stats;
|
|
22
24
|
let projectRoot;
|
|
23
25
|
let src;
|
|
@@ -29,17 +31,15 @@ async function handler(args) {
|
|
|
29
31
|
: path.dirname(getCwd());
|
|
30
32
|
stats = fs.statSync(src);
|
|
31
33
|
if (!stats.isFile() && !stats.isDirectory()) {
|
|
32
|
-
invalidPath(args.src);
|
|
33
|
-
return;
|
|
34
|
+
return invalidPath(args.src, exit);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
36
37
|
catch (e) {
|
|
37
|
-
invalidPath(args.src);
|
|
38
|
+
return invalidPath(args.src, exit);
|
|
38
39
|
}
|
|
39
40
|
trackConvertFieldsUsage('process');
|
|
40
41
|
if (!src || !stats || !projectRoot) {
|
|
41
|
-
invalidPath(args.src);
|
|
42
|
-
return;
|
|
42
|
+
return invalidPath(args.src, exit);
|
|
43
43
|
}
|
|
44
44
|
if (stats.isFile()) {
|
|
45
45
|
const fieldsJs = await new FieldsJs(projectRoot, src, undefined, args.fieldOptions).init();
|
|
@@ -91,7 +91,7 @@ const builder = makeYargsBuilder(convertFieldsBuilder, command, describe);
|
|
|
91
91
|
const convertFieldsCommand = {
|
|
92
92
|
command,
|
|
93
93
|
describe,
|
|
94
|
-
handler,
|
|
94
|
+
handler: makeYargsHandlerWithUsageTracking('convert-fields', handler),
|
|
95
95
|
builder,
|
|
96
96
|
};
|
|
97
97
|
export default convertFieldsCommand;
|
package/commands/cms/delete.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { deleteFile } from '@hubspot/local-dev-lib/api/fileMapper';
|
|
2
2
|
import { logError, ApiErrorContext } from '../../lib/errorHandlers/index.js';
|
|
3
|
-
import { trackCommandUsage } from '../../lib/usageTracking.js';
|
|
4
3
|
import { commands } from '../../lang/en.js';
|
|
4
|
+
import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
5
5
|
import { makeYargsBuilder } from '../../lib/yargsUtils.js';
|
|
6
6
|
import { uiLogger } from '../../lib/ui/logger.js';
|
|
7
7
|
const command = 'delete <path>';
|
|
8
8
|
const describe = commands.cms.subcommands.delete.describe;
|
|
9
9
|
async function handler(args) {
|
|
10
10
|
const { path: hsPath, derivedAccountId } = args;
|
|
11
|
-
trackCommandUsage('delete', undefined, derivedAccountId);
|
|
12
11
|
try {
|
|
13
12
|
await deleteFile(derivedAccountId, hsPath);
|
|
14
13
|
uiLogger.log(commands.cms.subcommands.delete.deleted(hsPath, derivedAccountId));
|
|
@@ -37,7 +36,7 @@ const builder = makeYargsBuilder(cmsDeleteBuilder, command, describe, {
|
|
|
37
36
|
const cmsDeleteCommand = {
|
|
38
37
|
command,
|
|
39
38
|
describe,
|
|
40
|
-
handler,
|
|
39
|
+
handler: makeYargsHandlerWithUsageTracking('delete', handler),
|
|
41
40
|
builder,
|
|
42
41
|
};
|
|
43
42
|
export default cmsDeleteCommand;
|
package/commands/cms/fetch.js
CHANGED
|
@@ -2,8 +2,8 @@ import { downloadFileOrFolder } from '@hubspot/local-dev-lib/fileMapper';
|
|
|
2
2
|
import { addCmsPublishModeOptions, addOverwriteOptions, getCmsPublishMode, } from '../../lib/commonOpts.js';
|
|
3
3
|
import { resolveLocalPath } from '../../lib/filesystem.js';
|
|
4
4
|
import { validateCmsPublishMode } from '../../lib/validation.js';
|
|
5
|
-
import { trackCommandUsage } from '../../lib/usageTracking.js';
|
|
6
5
|
import { makeYargsBuilder } from '../../lib/yargsUtils.js';
|
|
6
|
+
import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
7
7
|
import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
|
|
8
8
|
import { logError } from '../../lib/errorHandlers/index.js';
|
|
9
9
|
import { commands } from '../../lang/en.js';
|
|
@@ -12,16 +12,16 @@ const command = 'fetch <src> [dest]';
|
|
|
12
12
|
const describe = commands.cms.subcommands.fetch.describe;
|
|
13
13
|
async function handler(options) {
|
|
14
14
|
const { src, dest } = options;
|
|
15
|
+
const { derivedAccountId, exit, addUsageMetadata } = options;
|
|
15
16
|
if (!validateCmsPublishMode(options)) {
|
|
16
|
-
|
|
17
|
+
return exit(EXIT_CODES.ERROR);
|
|
17
18
|
}
|
|
18
19
|
if (typeof src !== 'string') {
|
|
19
20
|
uiLogger.error(commands.cms.subcommands.fetch.errors.sourceRequired);
|
|
20
|
-
|
|
21
|
+
return exit(EXIT_CODES.ERROR);
|
|
21
22
|
}
|
|
22
|
-
const { derivedAccountId } = options;
|
|
23
23
|
const cmsPublishMode = getCmsPublishMode(options);
|
|
24
|
-
|
|
24
|
+
addUsageMetadata({ mode: cmsPublishMode });
|
|
25
25
|
const { assetVersion, staging, overwrite } = options;
|
|
26
26
|
try {
|
|
27
27
|
// Fetch and write file/folder with increased timeout for large themes.
|
|
@@ -34,7 +34,7 @@ async function handler(options) {
|
|
|
34
34
|
}
|
|
35
35
|
catch (err) {
|
|
36
36
|
logError(err);
|
|
37
|
-
|
|
37
|
+
return exit(EXIT_CODES.ERROR);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
const fetchBuilder = (yargs) => {
|
|
@@ -74,7 +74,7 @@ const builder = makeYargsBuilder(fetchBuilder, command, describe, {
|
|
|
74
74
|
const fetchCommand = {
|
|
75
75
|
command,
|
|
76
76
|
describe,
|
|
77
|
-
handler,
|
|
77
|
+
handler: makeYargsHandlerWithUsageTracking('fetch', handler),
|
|
78
78
|
builder,
|
|
79
79
|
};
|
|
80
80
|
export default fetchCommand;
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import fs from 'fs-extra';
|
|
2
2
|
import { logError } from '../../../lib/errorHandlers/index.js';
|
|
3
3
|
import { resolveLocalPath } from '../../../lib/filesystem.js';
|
|
4
|
-
import { trackCommandUsage } from '../../../lib/usageTracking.js';
|
|
5
4
|
import { commands } from '../../../lang/en.js';
|
|
6
5
|
import { uiLogger } from '../../../lib/ui/logger.js';
|
|
7
6
|
import { HTTP_METHODS } from '../../../types/Cms.js';
|
|
8
7
|
import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
|
|
8
|
+
import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
9
9
|
import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
|
|
10
|
+
import { isPromptExitError } from '../../../lib/errors/PromptExitError.js';
|
|
10
11
|
import assets from '../../../lib/cmsAssets/index.js';
|
|
11
12
|
const command = 'create [name] [dest]';
|
|
12
13
|
const describe = commands.cms.subcommands.function.subcommands.create.describe;
|
|
13
14
|
async function handler(args) {
|
|
14
|
-
const {
|
|
15
|
+
const { name, dest, exit, addUsageMetadata } = args;
|
|
15
16
|
const assetType = 'function';
|
|
16
|
-
|
|
17
|
+
addUsageMetadata({ assetType });
|
|
17
18
|
const asset = assets[assetType];
|
|
18
19
|
const argsToPass = {
|
|
19
20
|
commandArgs: args,
|
|
@@ -36,8 +37,11 @@ async function handler(args) {
|
|
|
36
37
|
await asset.execute(argsToPass);
|
|
37
38
|
}
|
|
38
39
|
catch (e) {
|
|
40
|
+
if (isPromptExitError(e)) {
|
|
41
|
+
throw e;
|
|
42
|
+
}
|
|
39
43
|
logError(e);
|
|
40
|
-
|
|
44
|
+
return exit(EXIT_CODES.ERROR);
|
|
41
45
|
}
|
|
42
46
|
}
|
|
43
47
|
function functionCreateBuilder(yargs) {
|
|
@@ -79,6 +83,6 @@ const functionCreateCommand = {
|
|
|
79
83
|
command,
|
|
80
84
|
describe,
|
|
81
85
|
builder,
|
|
82
|
-
handler,
|
|
86
|
+
handler: makeYargsHandlerWithUsageTracking('create', handler),
|
|
83
87
|
};
|
|
84
88
|
export default functionCreateCommand;
|
|
@@ -2,12 +2,12 @@ import { uiLogger } from '../../../lib/ui/logger.js';
|
|
|
2
2
|
import { buildPackage, getBuildStatus, } from '@hubspot/local-dev-lib/api/functions';
|
|
3
3
|
import { isHubSpotHttpError } from '@hubspot/local-dev-lib/errors/index';
|
|
4
4
|
import SpinniesManager from '../../../lib/ui/SpinniesManager.js';
|
|
5
|
-
import { trackCommandUsage } from '../../../lib/usageTracking.js';
|
|
6
5
|
import { logError, ApiErrorContext } from '../../../lib/errorHandlers/index.js';
|
|
7
6
|
import { uiAccountDescription } from '../../../lib/ui/index.js';
|
|
8
7
|
import { poll } from '../../../lib/polling.js';
|
|
9
8
|
import { outputBuildLog } from '../../../lib/serverlessLogs.js';
|
|
10
9
|
import { commands } from '../../../lang/en.js';
|
|
10
|
+
import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
|
|
11
11
|
import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
|
|
12
12
|
function isFunctionBuildError(e) {
|
|
13
13
|
return (typeof e === 'object' && e !== null && 'status' in e && e.status === 'ERROR');
|
|
@@ -17,7 +17,6 @@ const describe = undefined; // Hidden command
|
|
|
17
17
|
async function handler(args) {
|
|
18
18
|
const { path: functionPath, derivedAccountId } = args;
|
|
19
19
|
const splitFunctionPath = functionPath.split('.');
|
|
20
|
-
trackCommandUsage('function-deploy', undefined, derivedAccountId);
|
|
21
20
|
if (!splitFunctionPath.length ||
|
|
22
21
|
splitFunctionPath[splitFunctionPath.length - 1] !== 'functions') {
|
|
23
22
|
uiLogger.error(commands.cms.subcommands.function.subcommands.deploy.errors.notFunctionsFolder(functionPath));
|
|
@@ -83,7 +82,7 @@ const builder = makeYargsBuilder(functionDeployBuilder, command, describe, {
|
|
|
83
82
|
const functionDeployCommand = {
|
|
84
83
|
command,
|
|
85
84
|
describe,
|
|
86
|
-
handler,
|
|
85
|
+
handler: makeYargsHandlerWithUsageTracking('function-deploy', handler),
|
|
87
86
|
builder,
|
|
88
87
|
};
|
|
89
88
|
export default functionDeployCommand;
|