@hubspot/cli 7.7.0-experimental.2 → 7.7.1-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.
Files changed (65) hide show
  1. package/bin/cli.js +96 -94
  2. package/commands/account.js +0 -2
  3. package/commands/app.js +0 -2
  4. package/commands/auth.js +0 -2
  5. package/commands/cms.js +0 -2
  6. package/commands/completion.js +0 -2
  7. package/commands/config.js +0 -2
  8. package/commands/create.js +0 -2
  9. package/commands/customObject.js +0 -2
  10. package/commands/doctor.js +0 -2
  11. package/commands/feedback.js +0 -2
  12. package/commands/filemanager.js +0 -2
  13. package/commands/function.js +0 -2
  14. package/commands/hubdb.js +0 -2
  15. package/commands/init.js +0 -2
  16. package/commands/lint.js +0 -2
  17. package/commands/list.js +0 -2
  18. package/commands/mv.js +0 -2
  19. package/commands/open.js +0 -2
  20. package/commands/project/dev/deprecatedFlow.d.ts +8 -2
  21. package/commands/project/dev/deprecatedFlow.js +9 -1
  22. package/commands/project/dev/index.js +59 -34
  23. package/commands/project/dev/unifiedFlow.d.ts +10 -2
  24. package/commands/project/dev/unifiedFlow.js +27 -41
  25. package/commands/project.js +0 -4
  26. package/commands/remove.js +0 -2
  27. package/commands/sandbox.js +0 -2
  28. package/commands/secret.js +0 -2
  29. package/commands/theme.js +0 -2
  30. package/commands/upload.js +0 -2
  31. package/lang/en.d.ts +14 -54
  32. package/lang/en.js +14 -54
  33. package/lib/accountTypes.js +1 -3
  34. package/lib/commonOpts.d.ts +1 -3
  35. package/lib/commonOpts.js +1 -1
  36. package/lib/middleware/fireAlarmMiddleware.d.ts +2 -2
  37. package/lib/middleware/fireAlarmMiddleware.js +5 -3
  38. package/lib/projects/localDev/AppDevModeInterface.js +0 -6
  39. package/lib/projects/upload.js +6 -0
  40. package/package.json +4 -7
  41. package/types/Yargs.d.ts +2 -0
  42. package/bin/hsmcp.d.ts +0 -2
  43. package/bin/hsmcp.js +0 -13
  44. package/commands/project/validate.d.ts +0 -4
  45. package/commands/project/validate.js +0 -53
  46. package/commands/setupMcp.d.ts +0 -8
  47. package/commands/setupMcp.js +0 -229
  48. package/mcp-server/index.d.ts +0 -1
  49. package/mcp-server/index.js +0 -17
  50. package/mcp-server/mcpLoader.d.ts +0 -5
  51. package/mcp-server/mcpLoader.js +0 -24
  52. package/mcp-server/tools/ExplainProjectStructureTool.d.ts +0 -33
  53. package/mcp-server/tools/ExplainProjectStructureTool.js +0 -266
  54. package/mcp-server/tools/GenerateAppComponentTool.d.ts +0 -99
  55. package/mcp-server/tools/GenerateAppComponentTool.js +0 -193
  56. package/mcp-server/tools/GenerateCardComponentTool.d.ts +0 -74
  57. package/mcp-server/tools/GenerateCardComponentTool.js +0 -146
  58. package/mcp-server/tools/GenerateProjectConfigTool.d.ts +0 -32
  59. package/mcp-server/tools/GenerateProjectConfigTool.js +0 -40
  60. package/mcp-server/tools/HubSpotCLIHelper.d.ts +0 -24
  61. package/mcp-server/tools/HubSpotCLIHelper.js +0 -110
  62. package/mcp-server/tools/UploadProjectTool.d.ts +0 -44
  63. package/mcp-server/tools/UploadProjectTool.js +0 -166
  64. package/mcp-server/tools/ValidateProjectTool.d.ts +0 -62
  65. package/mcp-server/tools/ValidateProjectTool.js +0 -336
package/bin/cli.js CHANGED
@@ -1,80 +1,83 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
- const yargs = require('yargs');
4
- const { logger } = require('@hubspot/local-dev-lib/logger');
5
- const { logError } = require('../lib/errorHandlers/index');
6
- const { setLogLevel, getCommandName } = require('../lib/commonOpts');
7
- const { trackHelpUsage, trackConvertFieldsUsage, } = require('../lib/usageTracking');
8
- const { EXIT_CODES } = require('../lib/enums/exitCodes');
9
- const { loadConfigMiddleware, injectAccountIdMiddleware, validateAccountOptions, handleDeprecatedEnvVariables, } = require('../lib/middleware/configMiddleware');
10
- const { autoUpdateCLI } = require('../lib/middleware/autoUpdateMiddleware');
11
- const { checkAndWarnGitInclusionMiddleware, } = require('../lib/middleware/gitMiddleware');
12
- const { performChecks } = require('../lib/middleware/yargsChecksMiddleware');
13
- const { setRequestHeaders } = require('../lib/middleware/requestMiddleware');
14
- const { checkFireAlarms } = require('../lib/middleware/fireAlarmMiddleware');
15
- const removeCommand = require('../commands/remove');
16
- const initCommand = require('../commands/init');
17
- const logsCommand = require('../commands/logs');
18
- const lintCommand = require('../commands/lint');
19
- const hubdbCommand = require('../commands/hubdb');
20
- const watchCommand = require('../commands/watch');
21
- const authCommand = require('../commands/auth');
22
- const uploadCommand = require('../commands/upload');
23
- const createCommand = require('../commands/create');
24
- const fetchCommand = require('../commands/fetch');
25
- const filemanagerCommand = require('../commands/filemanager');
26
- const secretCommands = require('../commands/secret');
27
- const customObjectCommand = require('../commands/customObject');
28
- const functionCommands = require('../commands/function');
29
- const listCommand = require('../commands/list');
30
- const openCommand = require('../commands/open');
31
- const mvCommand = require('../commands/mv');
32
- const projectCommands = require('../commands/project');
33
- const themeCommand = require('../commands/theme');
34
- const moduleCommand = require('../commands/module');
35
- const configCommand = require('../commands/config');
36
- const accountCommands = require('../commands/account');
37
- const sandboxesCommand = require('../commands/sandbox');
38
- const cmsCommand = require('../commands/cms');
39
- const feedbackCommand = require('../commands/feedback');
40
- const doctorCommand = require('../commands/doctor');
41
- const completionCommand = require('../commands/completion');
42
- const appCommand = require('../commands/app');
43
- const setupMcpCommand = require('../commands/setupMcp');
44
- const getTerminalWidth = () => {
45
- const width = yargs.terminalWidth();
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const yargs_1 = __importDefault(require("yargs"));
8
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
9
+ const index_1 = require("../lib/errorHandlers/index");
10
+ const commonOpts_1 = require("../lib/commonOpts");
11
+ const usageTracking_1 = require("../lib/usageTracking");
12
+ const exitCodes_1 = require("../lib/enums/exitCodes");
13
+ const configMiddleware_1 = require("../lib/middleware/configMiddleware");
14
+ const autoUpdateMiddleware_1 = require("../lib/middleware/autoUpdateMiddleware");
15
+ const gitMiddleware_1 = require("../lib/middleware/gitMiddleware");
16
+ const yargsChecksMiddleware_1 = require("../lib/middleware/yargsChecksMiddleware");
17
+ const requestMiddleware_1 = require("../lib/middleware/requestMiddleware");
18
+ const fireAlarmMiddleware_1 = require("../lib/middleware/fireAlarmMiddleware");
19
+ const remove_1 = __importDefault(require("../commands/remove"));
20
+ const init_1 = __importDefault(require("../commands/init"));
21
+ const logs_1 = __importDefault(require("../commands/logs"));
22
+ const lint_1 = __importDefault(require("../commands/lint"));
23
+ const hubdb_1 = __importDefault(require("../commands/hubdb"));
24
+ const watch_1 = __importDefault(require("../commands/watch"));
25
+ const auth_1 = __importDefault(require("../commands/auth"));
26
+ const upload_1 = __importDefault(require("../commands/upload"));
27
+ const create_1 = __importDefault(require("../commands/create"));
28
+ const fetch_1 = __importDefault(require("../commands/fetch"));
29
+ const filemanager_1 = __importDefault(require("../commands/filemanager"));
30
+ const secret_1 = __importDefault(require("../commands/secret"));
31
+ const customObject_1 = __importDefault(require("../commands/customObject"));
32
+ const function_1 = __importDefault(require("../commands/function"));
33
+ const list_1 = __importDefault(require("../commands/list"));
34
+ const open_1 = __importDefault(require("../commands/open"));
35
+ const mv_1 = __importDefault(require("../commands/mv"));
36
+ const project_1 = __importDefault(require("../commands/project"));
37
+ const theme_1 = __importDefault(require("../commands/theme"));
38
+ const module_1 = __importDefault(require("../commands/module"));
39
+ const config_1 = __importDefault(require("../commands/config"));
40
+ const account_1 = __importDefault(require("../commands/account"));
41
+ const sandbox_1 = __importDefault(require("../commands/sandbox"));
42
+ const cms_1 = __importDefault(require("../commands/cms"));
43
+ const feedback_1 = __importDefault(require("../commands/feedback"));
44
+ const doctor_1 = __importDefault(require("../commands/doctor"));
45
+ const completion_1 = __importDefault(require("../commands/completion"));
46
+ const app_1 = __importDefault(require("../commands/app"));
47
+ function getTerminalWidth() {
48
+ const width = yargs_1.default.terminalWidth();
46
49
  if (width >= 100)
47
50
  return width * 0.9;
48
51
  return width;
49
- };
50
- const handleFailure = (msg, err, yargs) => {
52
+ }
53
+ function handleFailure(msg, err, yargs) {
51
54
  if (msg) {
52
- logger.error(msg);
55
+ logger_1.logger.error(msg);
53
56
  }
54
57
  else if (err) {
55
- logError(err);
58
+ (0, index_1.logError)(err);
56
59
  }
57
60
  if (msg === null) {
58
61
  yargs.showHelp('log');
59
- process.exit(EXIT_CODES.SUCCESS);
62
+ process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
60
63
  }
61
64
  else {
62
- process.exit(EXIT_CODES.ERROR);
65
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
63
66
  }
64
- };
65
- const argv = yargs
67
+ }
68
+ const argv = yargs_1.default
66
69
  .usage('The command line interface to interact with HubSpot.')
67
70
  // loadConfigMiddleware loads the new hidden config for all commands
68
71
  .middleware([
69
- setLogLevel,
70
- setRequestHeaders,
71
- handleDeprecatedEnvVariables,
72
- loadConfigMiddleware,
73
- injectAccountIdMiddleware,
74
- autoUpdateCLI,
75
- checkAndWarnGitInclusionMiddleware,
76
- validateAccountOptions,
77
- checkFireAlarms,
72
+ commonOpts_1.setLogLevel,
73
+ requestMiddleware_1.setRequestHeaders,
74
+ configMiddleware_1.handleDeprecatedEnvVariables,
75
+ configMiddleware_1.loadConfigMiddleware,
76
+ configMiddleware_1.injectAccountIdMiddleware,
77
+ autoUpdateMiddleware_1.autoUpdateCLI,
78
+ gitMiddleware_1.checkAndWarnGitInclusionMiddleware,
79
+ configMiddleware_1.validateAccountOptions,
80
+ fireAlarmMiddleware_1.checkFireAlarms,
78
81
  ])
79
82
  .exitProcess(false)
80
83
  .fail(handleFailure)
@@ -90,45 +93,44 @@ const argv = yargs
90
93
  hidden: true,
91
94
  type: 'boolean',
92
95
  })
93
- .check(performChecks)
94
- .command(authCommand)
95
- .command(initCommand)
96
- .command(logsCommand)
97
- .command(cmsCommand)
98
- .command(lintCommand)
99
- .command(hubdbCommand)
100
- .command(watchCommand)
101
- .command(removeCommand)
102
- .command(uploadCommand)
103
- .command(createCommand)
104
- .command(fetchCommand)
105
- .command(filemanagerCommand)
106
- .command(secretCommands)
107
- .command(customObjectCommand)
108
- .command(functionCommands)
109
- .command(listCommand)
110
- .command(openCommand)
111
- .command(mvCommand)
112
- .command(projectCommands)
113
- .command(themeCommand)
114
- .command(moduleCommand)
115
- .command(configCommand)
116
- .command(accountCommands)
117
- .command(sandboxesCommand)
118
- .command(feedbackCommand)
119
- .command(doctorCommand)
120
- .command(completionCommand)
121
- .command(appCommand)
122
- .command(setupMcpCommand)
96
+ .check(yargsChecksMiddleware_1.performChecks)
97
+ .command(auth_1.default)
98
+ .command(init_1.default)
99
+ .command(logs_1.default)
100
+ .command(cms_1.default)
101
+ .command(lint_1.default)
102
+ .command(hubdb_1.default)
103
+ .command(watch_1.default)
104
+ .command(remove_1.default)
105
+ .command(upload_1.default)
106
+ .command(create_1.default)
107
+ .command(fetch_1.default)
108
+ .command(filemanager_1.default)
109
+ .command(secret_1.default)
110
+ .command(customObject_1.default)
111
+ .command(function_1.default)
112
+ .command(list_1.default)
113
+ .command(open_1.default)
114
+ .command(mv_1.default)
115
+ .command(project_1.default)
116
+ .command(theme_1.default)
117
+ .command(module_1.default)
118
+ .command(config_1.default)
119
+ .command(account_1.default)
120
+ .command(sandbox_1.default)
121
+ .command(feedback_1.default)
122
+ .command(doctor_1.default)
123
+ .command(completion_1.default)
124
+ .command(app_1.default)
123
125
  .help()
124
126
  .alias('h', 'help')
125
127
  .recommendCommands()
126
128
  .demandCommand(1, '')
127
129
  .wrap(getTerminalWidth())
128
130
  .strict().argv;
129
- if (argv.help) {
130
- trackHelpUsage(getCommandName(argv));
131
+ if ('help' in argv && argv.help !== undefined) {
132
+ (0, usageTracking_1.trackHelpUsage)((0, commonOpts_1.getCommandName)(argv));
131
133
  }
132
- if (argv.convertFields) {
133
- trackConvertFieldsUsage(getCommandName(argv));
134
+ if ('convertFields' in argv && argv.convertFields !== undefined) {
135
+ (0, usageTracking_1.trackConvertFieldsUsage)((0, commonOpts_1.getCommandName)(argv));
134
136
  }
@@ -38,5 +38,3 @@ const accountCommand = {
38
38
  handler: () => { },
39
39
  };
40
40
  exports.default = accountCommand;
41
- // TODO Remove this legacy export once we've migrated all commands to TS
42
- module.exports = accountCommand;
package/commands/app.js CHANGED
@@ -21,5 +21,3 @@ const appCommand = {
21
21
  handler: () => { },
22
22
  };
23
23
  exports.default = appCommand;
24
- // TODO Remove this legacy export once we've migrated all commands to TS
25
- module.exports = appCommand;
package/commands/auth.js CHANGED
@@ -172,5 +172,3 @@ const authCommand = {
172
172
  builder,
173
173
  };
174
174
  exports.default = authCommand;
175
- // TODO Remove this legacy export once we've migrated all commands to TS
176
- module.exports = authCommand;
package/commands/cms.js CHANGED
@@ -26,5 +26,3 @@ const cmsCommand = {
26
26
  handler: () => { },
27
27
  };
28
28
  exports.default = cmsCommand;
29
- // TODO Remove this legacy export once we've migrated all commands to TS
30
- module.exports = cmsCommand;
@@ -30,5 +30,3 @@ const completionCommand = {
30
30
  builder,
31
31
  };
32
32
  exports.default = completionCommand;
33
- // TODO Remove this legacy export once we've migrated all commands to TS
34
- module.exports = completionCommand;
@@ -21,5 +21,3 @@ const configCommand = {
21
21
  handler: () => { },
22
22
  };
23
23
  exports.default = configCommand;
24
- // TODO Remove this legacy export once we've migrated all commands to TS
25
- module.exports = configCommand;
@@ -91,5 +91,3 @@ const createCommand = {
91
91
  handler,
92
92
  };
93
93
  exports.default = createCommand;
94
- // TODO Remove this legacy export once we've migrated all commands to TS
95
- module.exports = createCommand;
@@ -29,5 +29,3 @@ const customObjectCommand = {
29
29
  handler: () => { },
30
30
  };
31
31
  exports.default = customObjectCommand;
32
- // TODO Remove this legacy export once we've migrated all commands to TS
33
- module.exports = customObjectCommand;
@@ -68,5 +68,3 @@ const doctorCommand = {
68
68
  builder,
69
69
  };
70
70
  exports.default = doctorCommand;
71
- // TODO Remove this after cli.ts is ported to TS
72
- module.exports = doctorCommand;
@@ -40,5 +40,3 @@ const feedbackCommand = {
40
40
  builder,
41
41
  };
42
42
  exports.default = feedbackCommand;
43
- // TODO remove this after cli.ts is ported to TS
44
- module.exports = feedbackCommand;
@@ -21,5 +21,3 @@ const fileManagerCommand = {
21
21
  handler: () => { },
22
22
  };
23
23
  exports.default = fileManagerCommand;
24
- // TODO Remove this legacy export once we've migrated all commands to TS
25
- module.exports = fileManagerCommand;
@@ -25,5 +25,3 @@ const functionCommand = {
25
25
  handler: () => { },
26
26
  };
27
27
  exports.default = functionCommand;
28
- // TODO Remove this legacy export once we've migrated all commands to TS
29
- module.exports = functionCommand;
package/commands/hubdb.js CHANGED
@@ -29,5 +29,3 @@ const hubdbCommand = {
29
29
  handler: () => { },
30
30
  };
31
31
  exports.default = hubdbCommand;
32
- // TODO Remove this legacy export once we've migrated all commands to TS
33
- module.exports = hubdbCommand;
package/commands/init.js CHANGED
@@ -188,5 +188,3 @@ const initCommand = {
188
188
  builder,
189
189
  };
190
190
  exports.default = initCommand;
191
- // TODO Remove this legacy export once we've migrated all commands to TS
192
- module.exports = initCommand;
package/commands/lint.js CHANGED
@@ -83,5 +83,3 @@ const lintCommand = {
83
83
  builder,
84
84
  };
85
85
  exports.default = lintCommand;
86
- // TODO Remove this after cli.ts is ported to TS
87
- module.exports = lintCommand;
package/commands/list.js CHANGED
@@ -101,5 +101,3 @@ const cmsListCommand = {
101
101
  builder,
102
102
  };
103
103
  exports.default = cmsListCommand;
104
- // TODO Remove this legacy export once we've migrated all commands to TS
105
- module.exports = cmsListCommand;
package/commands/mv.js CHANGED
@@ -72,5 +72,3 @@ const cmsMvCommand = {
72
72
  builder,
73
73
  };
74
74
  exports.default = cmsMvCommand;
75
- // TODO Remove this legacy export once we've migrated all commands to TS
76
- module.exports = cmsMvCommand;
package/commands/open.js CHANGED
@@ -68,5 +68,3 @@ const openCommand = {
68
68
  builder,
69
69
  };
70
70
  exports.default = openCommand;
71
- // TODO Remove this legacy export once we've migrated all commands to TS
72
- module.exports = openCommand;
@@ -1,5 +1,11 @@
1
1
  import { ArgumentsCamelCase } from 'yargs';
2
- import { CLIAccount } from '@hubspot/local-dev-lib/types/Accounts';
3
2
  import { ProjectConfig } from '../../../types/Projects';
4
3
  import { ProjectDevArgs } from '../../../types/Yargs';
5
- export declare function deprecatedProjectDevFlow(args: ArgumentsCamelCase<ProjectDevArgs>, accountConfig: CLIAccount, projectConfig: ProjectConfig, projectDir: string): Promise<void>;
4
+ type DeprecatedProjectDevFlowArgs = {
5
+ args: ArgumentsCamelCase<ProjectDevArgs>;
6
+ accountId: number;
7
+ projectConfig: ProjectConfig;
8
+ projectDir: string;
9
+ };
10
+ export declare function deprecatedProjectDevFlow({ args, accountId, projectConfig, projectDir, }: DeprecatedProjectDevFlowArgs): Promise<void>;
11
+ export {};
@@ -18,7 +18,7 @@ const helpers_1 = require("../../../lib/projects/localDev/helpers");
18
18
  const process_1 = require("../../../lib/process");
19
19
  const accountTypes_1 = require("../../../lib/accountTypes");
20
20
  const ensureProjectExists_1 = require("../../../lib/projects/ensureProjectExists");
21
- async function deprecatedProjectDevFlow(args, accountConfig, projectConfig, projectDir) {
21
+ async function deprecatedProjectDevFlow({ args, accountId, projectConfig, projectDir, }) {
22
22
  const { providedAccountId, derivedAccountId } = args;
23
23
  const env = (0, environment_1.getValidEnv)((0, config_1.getEnv)(derivedAccountId));
24
24
  const components = await (0, structure_1.findProjectComponents)(projectDir);
@@ -26,6 +26,14 @@ async function deprecatedProjectDevFlow(args, accountConfig, projectConfig, proj
26
26
  const componentTypes = (0, structure_1.getProjectComponentTypes)(runnableComponents);
27
27
  const hasPrivateApps = !!componentTypes[Projects_1.ComponentTypes.PrivateApp];
28
28
  const hasPublicApps = !!componentTypes[Projects_1.ComponentTypes.PublicApp];
29
+ const accountConfig = (0, config_1.getAccountConfig)(accountId);
30
+ if (!accountConfig) {
31
+ logger_1.logger.error((0, lang_1.i18n)('commands.project.subcommands.dev.errors.noAccount', {
32
+ accountId: accountId,
33
+ authCommand: (0, ui_1.uiCommandReference)('hs auth'),
34
+ }));
35
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
36
+ }
29
37
  if (runnableComponents.length === 0) {
30
38
  logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.dev.errors.noRunnableComponents`, {
31
39
  projectDir,
@@ -2,8 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.builder = void 0;
4
4
  const usageTracking_1 = require("../../../lib/usageTracking");
5
- const lang_1 = require("../../../lib/lang");
6
- const logger_1 = require("@hubspot/local-dev-lib/logger");
7
5
  const config_1 = require("@hubspot/local-dev-lib/config");
8
6
  const config_2 = require("../../../lib/projects/config");
9
7
  const exitCodes_1 = require("../../../lib/enums/exitCodes");
@@ -13,22 +11,35 @@ const unifiedFlow_1 = require("./unifiedFlow");
13
11
  const buildAndDeploy_1 = require("../../../lib/projects/buildAndDeploy");
14
12
  const yargsUtils_1 = require("../../../lib/yargsUtils");
15
13
  const projectProfiles_1 = require("../../../lib/projectProfiles");
14
+ const en_1 = require("../../../lang/en");
15
+ const logger_1 = require("../../../lib/ui/logger");
16
16
  const command = 'dev';
17
- const describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`commands.project.subcommands.dev.describe`), false);
17
+ const describe = (0, ui_1.uiBetaTag)(en_1.commands.project.dev.describe, false);
18
+ function validateAccountFlags(testingAccount, projectAccount, providedAccountId, useV3) {
19
+ // Legacy projects do not support targetTestingAccount and targetProjectAccount
20
+ if (testingAccount && projectAccount && !useV3) {
21
+ logger_1.uiLogger.error(en_1.commands.project.dev.errors.unsupportedAccountFlagLegacy);
22
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
23
+ }
24
+ if (providedAccountId && useV3) {
25
+ logger_1.uiLogger.error(en_1.commands.project.dev.errors.unsupportedAccountFlagV3);
26
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
27
+ }
28
+ }
18
29
  async function handler(args) {
19
- const { derivedAccountId, providedAccountId } = args;
30
+ const { derivedAccountId, providedAccountId, testingAccount, projectAccount, } = args;
20
31
  const { projectConfig, projectDir } = await (0, config_2.getProjectConfig)();
21
32
  (0, config_2.validateProjectConfig)(projectConfig, projectDir);
33
+ const useV3 = (0, buildAndDeploy_1.useV3Api)(projectConfig.platformVersion);
22
34
  if (!projectDir) {
23
- logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.dev.errors.noProjectConfig`, {
24
- accountId: derivedAccountId,
25
- authCommand: (0, ui_1.uiCommandReference)('hs auth'),
26
- }));
35
+ logger_1.uiLogger.error(en_1.commands.project.dev.errors.noProjectConfig);
27
36
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
28
37
  }
29
- let targetAccountId = providedAccountId;
38
+ validateAccountFlags(testingAccount, projectAccount, providedAccountId, useV3);
39
+ let targetProjectAccountId = (projectAccount && (0, config_1.getAccountId)(projectAccount)) ||
40
+ (providedAccountId && derivedAccountId);
30
41
  let profile;
31
- if (!targetAccountId && (0, buildAndDeploy_1.useV3Api)(projectConfig.platformVersion)) {
42
+ if (!targetProjectAccountId && (0, buildAndDeploy_1.useV3Api)(projectConfig.platformVersion)) {
32
43
  if (args.profile) {
33
44
  (0, projectProfiles_1.logProfileHeader)(args.profile);
34
45
  profile = (0, projectProfiles_1.loadProfile)(projectConfig, projectDir, args.profile);
@@ -36,7 +47,7 @@ async function handler(args) {
36
47
  (0, ui_1.uiLine)();
37
48
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
38
49
  }
39
- targetAccountId = profile.accountId;
50
+ targetProjectAccountId = profile.accountId;
40
51
  (0, projectProfiles_1.logProfileFooter)(profile);
41
52
  }
42
53
  else {
@@ -44,42 +55,56 @@ async function handler(args) {
44
55
  await (0, projectProfiles_1.exitIfUsingProfiles)(projectConfig, projectDir);
45
56
  }
46
57
  }
47
- if (!targetAccountId) {
48
- // The user is not using profiles, so we can use the derived accountId
49
- targetAccountId = derivedAccountId;
50
- }
51
- (0, usageTracking_1.trackCommandUsage)('project-dev', {}, targetAccountId);
52
- const accountConfig = (0, config_1.getAccountConfig)(targetAccountId);
53
- (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`commands.project.subcommands.dev.logs.betaMessage`));
54
- logger_1.logger.log((0, ui_1.uiLink)((0, lang_1.i18n)(`commands.project.subcommands.dev.logs.learnMoreLocalDevServer`), 'https://developers.hubspot.com/docs/platform/project-cli-commands#start-a-local-development-server'));
55
- if (!accountConfig) {
56
- logger_1.logger.error((0, lang_1.i18n)(`commands.project.subcommands.dev.errors.noAccount`, {
57
- accountId: (0, ui_1.uiAccountDescription)(targetAccountId),
58
- authCommand: (0, ui_1.uiCommandReference)('hs auth'),
59
- }));
60
- process.exit(exitCodes_1.EXIT_CODES.ERROR);
58
+ if (!targetProjectAccountId) {
59
+ // The user is not using profile or account flags, so we can use the derived accountId
60
+ targetProjectAccountId = derivedAccountId;
61
61
  }
62
+ (0, usageTracking_1.trackCommandUsage)('project-dev', {}, targetProjectAccountId);
63
+ (0, ui_1.uiBetaTag)(en_1.commands.project.dev.logs.betaMessage);
64
+ logger_1.uiLogger.log(en_1.commands.project.dev.logs.learnMoreLocalDevServer);
62
65
  if ((0, buildAndDeploy_1.useV3Api)(projectConfig.platformVersion)) {
63
- await (0, unifiedFlow_1.unifiedProjectDevFlow)(args, accountConfig, projectConfig, projectDir, profile);
66
+ const targetTestingAccountId = (testingAccount && (0, config_1.getAccountId)(testingAccount)) || undefined;
67
+ await (0, unifiedFlow_1.unifiedProjectDevFlow)({
68
+ args,
69
+ targetProjectAccountId,
70
+ providedTargetTestingAccountId: targetTestingAccountId,
71
+ projectConfig,
72
+ projectDir,
73
+ profileConfig: profile,
74
+ });
64
75
  }
65
76
  else {
66
- await (0, deprecatedFlow_1.deprecatedProjectDevFlow)(args, accountConfig, projectConfig, projectDir);
77
+ await (0, deprecatedFlow_1.deprecatedProjectDevFlow)({
78
+ args,
79
+ accountId: targetProjectAccountId,
80
+ projectConfig,
81
+ projectDir,
82
+ });
67
83
  }
68
84
  }
69
85
  function projectDevBuilder(yargs) {
70
86
  yargs.option('profile', {
71
87
  type: 'string',
72
88
  alias: 'p',
73
- description: (0, lang_1.i18n)(`commands.project.subcommands.dev.options.profile`),
89
+ description: en_1.commands.project.dev.options.profile,
90
+ hidden: true,
91
+ });
92
+ yargs.options('testingAccount', {
93
+ type: 'string',
94
+ description: en_1.commands.project.dev.options.testingAccount,
95
+ hidden: true,
96
+ implies: ['projectAccount'],
97
+ });
98
+ yargs.options('projectAccount', {
99
+ type: 'string',
100
+ description: en_1.commands.project.dev.options.projectAccount,
74
101
  hidden: true,
102
+ implies: ['testingAccount'],
75
103
  });
76
- yargs.example([
77
- [
78
- '$0 project dev',
79
- (0, lang_1.i18n)(`commands.project.subcommands.dev.examples.default`),
80
- ],
81
- ]);
104
+ yargs.example([['$0 project dev', en_1.commands.project.dev.examples.default]]);
82
105
  yargs.conflicts('profile', 'account');
106
+ yargs.conflicts('profile', 'testingAccount');
107
+ yargs.conflicts('profile', 'projectAccount');
83
108
  return yargs;
84
109
  }
85
110
  exports.builder = (0, yargsUtils_1.makeYargsBuilder)(projectDevBuilder, command, describe, {
@@ -1,6 +1,14 @@
1
1
  import { ArgumentsCamelCase } from 'yargs';
2
2
  import { HsProfileFile } from '@hubspot/project-parsing-lib/src/lib/types';
3
- import { CLIAccount } from '@hubspot/local-dev-lib/types/Accounts';
4
3
  import { ProjectDevArgs } from '../../../types/Yargs';
5
4
  import { ProjectConfig } from '../../../types/Projects';
6
- export declare function unifiedProjectDevFlow(args: ArgumentsCamelCase<ProjectDevArgs>, accountConfig: CLIAccount, projectConfig: ProjectConfig, projectDir: string, profileConfig?: HsProfileFile): Promise<void>;
5
+ type UnifiedProjectDevFlowArgs = {
6
+ args: ArgumentsCamelCase<ProjectDevArgs>;
7
+ targetProjectAccountId: number;
8
+ providedTargetTestingAccountId?: number;
9
+ projectConfig: ProjectConfig;
10
+ projectDir: string;
11
+ profileConfig?: HsProfileFile;
12
+ };
13
+ export declare function unifiedProjectDevFlow({ args, targetProjectAccountId, providedTargetTestingAccountId, projectConfig, projectDir, profileConfig, }: UnifiedProjectDevFlowArgs): Promise<void>;
14
+ export {};