@hubspot/cli 7.2.4-experimental.0 → 7.3.0-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 (38) hide show
  1. package/bin/cli.js +76 -21
  2. package/commands/customObject.d.ts +1 -1
  3. package/commands/mv.d.ts +1 -1
  4. package/commands/project/add.d.ts +10 -0
  5. package/commands/project/add.js +64 -52
  6. package/commands/project/deploy.d.ts +11 -1
  7. package/commands/project/deploy.js +79 -71
  8. package/commands/project/dev/index.d.ts +1 -1
  9. package/commands/project/download.d.ts +11 -0
  10. package/commands/project/download.js +56 -54
  11. package/commands/project/listBuilds.d.ts +10 -0
  12. package/commands/project/listBuilds.js +101 -91
  13. package/commands/project/open.d.ts +9 -0
  14. package/commands/project/open.js +43 -35
  15. package/commands/sandbox/create.d.ts +1 -1
  16. package/commands/sandbox/delete.d.ts +1 -1
  17. package/commands/sandbox.d.ts +1 -1
  18. package/lang/en.js +3448 -0
  19. package/lang/en.lyaml +5 -3
  20. package/lib/dependencyManagement.d.ts +0 -5
  21. package/lib/dependencyManagement.js +13 -39
  22. package/lib/doctor/Doctor.js +2 -1
  23. package/lib/errorHandlers/index.js +17 -0
  24. package/lib/npm.d.ts +9 -0
  25. package/lib/npm.js +36 -0
  26. package/lib/projects/buildAndDeploy.d.ts +1 -1
  27. package/lib/projects/buildAndDeploy.js +14 -12
  28. package/lib/projects/index.d.ts +1 -1
  29. package/lib/projects/index.js +1 -1
  30. package/lib/prompts/downloadProjectPrompt.js +5 -1
  31. package/lib/prompts/projectNamePrompt.d.ts +6 -1
  32. package/lib/prompts/projectNamePrompt.js +17 -16
  33. package/lib/testUtils.d.ts +4 -2
  34. package/lib/testUtils.js +17 -3
  35. package/lib/ui/index.d.ts +2 -1
  36. package/lib/yargsUtils.d.ts +2 -2
  37. package/lib/yargsUtils.js +2 -2
  38. package/package.json +5 -5
package/bin/cli.js CHANGED
@@ -16,6 +16,8 @@ const { i18n } = require('../lib/lang');
16
16
  const { EXIT_CODES } = require('../lib/enums/exitCodes');
17
17
  const { UI_COLORS, uiCommandReference, uiDeprecatedTag } = require('../lib/ui');
18
18
  const { checkAndWarnGitInclusion } = require('../lib/ui/git');
19
+ const SpinniesManager = require('../lib/ui/SpinniesManager');
20
+ const { isGloballyInstalled, executeInstall } = require('../lib/npm');
19
21
  const removeCommand = require('../commands/remove');
20
22
  const initCommand = require('../commands/init');
21
23
  const logsCommand = require('../commands/logs');
@@ -50,27 +52,29 @@ const notifier = updateNotifier({
50
52
  });
51
53
  const i18nKey = 'commands.generalErrors';
52
54
  const CMS_CLI_PACKAGE_NAME = '@hubspot/cms-cli';
53
- notifier.notify({
54
- message: pkg.name === CMS_CLI_PACKAGE_NAME
55
- ? i18n(`${i18nKey}.updateNotify.cmsUpdateNotification`, {
56
- packageName: CMS_CLI_PACKAGE_NAME,
57
- updateCommand: uiCommandReference('{updateCommand}'),
58
- })
59
- : i18n(`${i18nKey}.updateNotify.cliUpdateNotification`, {
60
- updateCommand: uiCommandReference('{updateCommand}'),
61
- }),
62
- defer: false,
63
- boxenOptions: {
64
- borderColor: UI_COLORS.MARIGOLD_DARK,
65
- margin: 1,
66
- padding: 1,
67
- textAlignment: 'center',
68
- borderStyle: 'round',
69
- title: pkg.name === CMS_CLI_PACKAGE_NAME
70
- ? null
71
- : chalk.bold(i18n(`${i18nKey}.updateNotify.notifyTitle`)),
72
- },
73
- });
55
+ const showUpdateNotification = () => {
56
+ notifier.notify({
57
+ message: pkg.name === CMS_CLI_PACKAGE_NAME
58
+ ? i18n(`${i18nKey}.updateNotify.cmsUpdateNotification`, {
59
+ packageName: CMS_CLI_PACKAGE_NAME,
60
+ updateCommand: uiCommandReference('{updateCommand}'),
61
+ })
62
+ : i18n(`${i18nKey}.updateNotify.cliUpdateNotification`, {
63
+ updateCommand: uiCommandReference('{updateCommand}'),
64
+ }),
65
+ defer: false,
66
+ boxenOptions: {
67
+ borderColor: UI_COLORS.MARIGOLD_DARK,
68
+ margin: 1,
69
+ padding: 1,
70
+ textAlignment: 'center',
71
+ borderStyle: 'round',
72
+ title: pkg.name === CMS_CLI_PACKAGE_NAME
73
+ ? null
74
+ : chalk.bold(i18n(`${i18nKey}.updateNotify.notifyTitle`)),
75
+ },
76
+ });
77
+ };
74
78
  const getTerminalWidth = () => {
75
79
  const width = yargs.terminalWidth();
76
80
  if (width >= 100)
@@ -120,6 +124,56 @@ const performChecks = argv => {
120
124
  const setRequestHeaders = () => {
121
125
  addUserAgentHeader('HubSpot CLI', pkg.version);
122
126
  };
127
+ const updateCLIVersion = async () => {
128
+ if (!process.env.SKIP_HUBSPOT_CLI_AUTO_UPDATES &&
129
+ notifier &&
130
+ notifier.update) {
131
+ let updateInfo;
132
+ try {
133
+ updateInfo = await notifier.fetchInfo();
134
+ }
135
+ catch (e) {
136
+ return;
137
+ }
138
+ // Update if the current version is not the latest version.
139
+ // Don't auto-update if the current version is a pre-release
140
+ // or if this would be a major version update
141
+ if (updateInfo.current.includes('-') &&
142
+ !['major', 'latest'].includes(updateInfo.type)) {
143
+ SpinniesManager.init({
144
+ succeedColor: 'white',
145
+ });
146
+ SpinniesManager.add('cliAutoUpdate', {
147
+ text: `New HubSpot CLI version available. Updating to version ${updateInfo.latest}`,
148
+ });
149
+ let showManualInstallHelp = false;
150
+ try {
151
+ if (await isGloballyInstalled()) {
152
+ await executeInstall(['@hubspot/cli@latest'], '-g');
153
+ SpinniesManager.succeed('cliAutoUpdate', {
154
+ text: `Successfully updated HubSpot CLI to version ${updateInfo.latest}`,
155
+ });
156
+ }
157
+ else {
158
+ SpinniesManager.fail('cliAutoUpdate', {
159
+ text: `Cannot auto-update the HubSpot CLI if it is not globall installed with NPM`,
160
+ });
161
+ showManualInstallHelp = true;
162
+ }
163
+ }
164
+ catch (e) {
165
+ logger.debug(e);
166
+ SpinniesManager.fail('cliAutoUpdate', {
167
+ text: `Failed to update HubSpot CLI to version ${updateInfo.latest}`,
168
+ });
169
+ showManualInstallHelp = true;
170
+ }
171
+ if (showManualInstallHelp) {
172
+ showUpdateNotification();
173
+ }
174
+ }
175
+ }
176
+ };
123
177
  const isTargetedCommand = (options, commandMap) => {
124
178
  const checkCommand = (options, commandMap) => {
125
179
  const currentCommand = options._[0];
@@ -243,6 +297,7 @@ const argv = yargs
243
297
  // loadConfigMiddleware loads the new hidden config for all commands
244
298
  .middleware([
245
299
  setLogLevel,
300
+ updateCLIVersion,
246
301
  setRequestHeaders,
247
302
  handleDeprecatedEnvVariables,
248
303
  loadConfigMiddleware,
@@ -1,4 +1,4 @@
1
1
  import { Argv } from 'yargs';
2
2
  export declare const command: string[];
3
- export declare const describe: string | undefined;
3
+ export declare const describe: string;
4
4
  export declare function builder(yargs: Argv): Argv;
package/commands/mv.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Argv, ArgumentsCamelCase } from 'yargs';
2
2
  import { CommonArgs, ConfigArgs, EnvironmentArgs } from '../types/Yargs';
3
3
  export declare const command = "mv <srcPath> <destPath>";
4
- export declare const describe: string | undefined;
4
+ export declare const describe: string;
5
5
  type MvArgs = CommonArgs & ConfigArgs & EnvironmentArgs & {
6
6
  srcPath: string;
7
7
  destPath: string;
@@ -1 +1,11 @@
1
+ import { Argv, ArgumentsCamelCase } from 'yargs';
2
+ import { CommonArgs } from '../../types/Yargs';
3
+ export declare const command = "add";
4
+ export declare const describe: string;
5
+ type ProjectAddArgs = CommonArgs & {
6
+ type: string;
7
+ name: string;
8
+ };
9
+ export declare function handler(args: ArgumentsCamelCase<ProjectAddArgs>): Promise<void>;
10
+ export declare const builder: (yargs: Argv) => Promise<Argv<ProjectAddArgs>>;
1
11
  export {};
@@ -1,106 +1,118 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // @ts-nocheck
4
- const path = require('path');
5
- const { logger } = require('@hubspot/local-dev-lib/logger');
6
- const { cloneGithubRepo, fetchReleaseData, } = require('@hubspot/local-dev-lib/github');
7
- const { debugError } = require('../../lib/errorHandlers');
8
- const { trackCommandUsage } = require('../../lib/usageTracking');
9
- const { i18n } = require('../../lib/lang');
10
- const { projectAddPrompt } = require('../../lib/prompts/projectAddPrompt');
11
- const { getProjectConfig } = require('../../lib/projects');
12
- const { getProjectComponentListFromRepo, } = require('../../lib/projects/create');
13
- const { findProjectComponents } = require('../../lib/projects/structure');
14
- const { ComponentTypes } = require('../../types/Projects');
15
- const { uiBetaTag } = require('../../lib/ui');
16
- const { HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, } = require('../../lib/constants');
17
- const { EXIT_CODES } = require('../../lib/enums/exitCodes');
6
+ exports.builder = exports.describe = exports.command = void 0;
7
+ exports.handler = handler;
8
+ const path_1 = __importDefault(require("path"));
9
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
10
+ const github_1 = require("@hubspot/local-dev-lib/github");
11
+ const errorHandlers_1 = require("../../lib/errorHandlers");
12
+ const usageTracking_1 = require("../../lib/usageTracking");
13
+ const lang_1 = require("../../lib/lang");
14
+ const projectAddPrompt_1 = require("../../lib/prompts/projectAddPrompt");
15
+ const projects_1 = require("../../lib/projects");
16
+ const create_1 = require("../../lib/projects/create");
17
+ const structure_1 = require("../../lib/projects/structure");
18
+ const Projects_1 = require("../../types/Projects");
19
+ const ui_1 = require("../../lib/ui");
20
+ const constants_1 = require("../../lib/constants");
21
+ const exitCodes_1 = require("../../lib/enums/exitCodes");
22
+ const yargsUtils_1 = require("../../lib/yargsUtils");
18
23
  const i18nKey = 'commands.project.subcommands.add';
19
24
  exports.command = 'add';
20
- exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
21
- exports.handler = async (options) => {
22
- const { derivedAccountId } = options;
23
- trackCommandUsage('project-add', null, derivedAccountId);
24
- const { projectConfig, projectDir } = await getProjectConfig();
25
+ exports.describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`${i18nKey}.describe`), false);
26
+ async function handler(args) {
27
+ const { derivedAccountId } = args;
28
+ (0, usageTracking_1.trackCommandUsage)('project-add', undefined, derivedAccountId);
29
+ const { projectConfig, projectDir } = await (0, projects_1.getProjectConfig)();
25
30
  if (!projectDir || !projectConfig) {
26
- logger.error(i18n(`${i18nKey}.error.locationInProject`));
27
- process.exit(EXIT_CODES.ERROR);
31
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.locationInProject`));
32
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
28
33
  }
29
34
  // We currently only support adding private apps to projects
30
35
  let projectContainsPublicApp = false;
31
36
  try {
32
- const components = await findProjectComponents(projectDir);
33
- projectContainsPublicApp = components.some(c => c.type === ComponentTypes.PublicApp);
37
+ const components = await (0, structure_1.findProjectComponents)(projectDir);
38
+ projectContainsPublicApp = components.some(c => c.type === Projects_1.ComponentTypes.PublicApp);
34
39
  }
35
40
  catch (err) {
36
- debugError(err);
41
+ (0, errorHandlers_1.debugError)(err);
37
42
  }
38
43
  if (projectContainsPublicApp) {
39
- logger.error(i18n(`${i18nKey}.error.projectContainsPublicApp`));
40
- process.exit(EXIT_CODES.ERROR);
44
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.projectContainsPublicApp`));
45
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
41
46
  }
42
- logger.log('');
43
- logger.log(i18n(`${i18nKey}.creatingComponent`, {
47
+ logger_1.logger.log('');
48
+ logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.creatingComponent`, {
44
49
  projectName: projectConfig.name,
45
50
  }));
46
- logger.log('');
51
+ logger_1.logger.log('');
47
52
  let latestRepoReleaseTag;
48
53
  try {
49
54
  // We want the tag_name from the latest release of the components repo
50
- const repoReleaseData = await fetchReleaseData(HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH);
55
+ const repoReleaseData = await (0, github_1.fetchReleaseData)(constants_1.HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH);
51
56
  if (repoReleaseData) {
52
57
  latestRepoReleaseTag = repoReleaseData.tag_name;
53
58
  }
54
59
  }
55
60
  catch (err) {
56
- debugError(err);
61
+ (0, errorHandlers_1.debugError)(err);
57
62
  }
58
63
  if (!latestRepoReleaseTag) {
59
- logger.error(i18n(`${i18nKey}.error.failedToFetchComponentList`));
60
- process.exit(EXIT_CODES.ERROR);
64
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.failedToFetchComponentList`));
65
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
61
66
  }
62
- const components = await getProjectComponentListFromRepo(latestRepoReleaseTag);
67
+ const components = await (0, create_1.getProjectComponentListFromRepo)(latestRepoReleaseTag);
63
68
  if (!components.length) {
64
- logger.error(i18n(`${i18nKey}.error.failedToFetchComponentList`));
65
- process.exit(EXIT_CODES.ERROR);
69
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.failedToFetchComponentList`));
70
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
66
71
  }
67
- const projectAddPromptResponse = await projectAddPrompt(components, options);
72
+ const projectAddPromptResponse = await (0, projectAddPrompt_1.projectAddPrompt)(components, args);
68
73
  try {
69
- const componentPath = path.join(projectDir, projectConfig.srcDir, projectAddPromptResponse.componentTemplate.insertPath, projectAddPromptResponse.name);
70
- await cloneGithubRepo(HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, componentPath, {
74
+ const componentPath = path_1.default.join(projectDir, projectConfig.srcDir, projectAddPromptResponse.componentTemplate.insertPath, projectAddPromptResponse.name);
75
+ await (0, github_1.cloneGithubRepo)(constants_1.HUBSPOT_PROJECT_COMPONENTS_GITHUB_PATH, componentPath, {
71
76
  sourceDir: projectAddPromptResponse.componentTemplate.path,
72
77
  tag: latestRepoReleaseTag,
73
78
  hideLogs: true,
74
79
  });
75
- logger.log('');
76
- logger.success(i18n(`${i18nKey}.success`, {
80
+ logger_1.logger.log('');
81
+ logger_1.logger.success((0, lang_1.i18n)(`${i18nKey}.success`, {
77
82
  componentName: projectAddPromptResponse.name,
78
83
  }));
79
84
  }
80
85
  catch (error) {
81
- debugError(error);
82
- logger.error(i18n(`${i18nKey}.error.failedToDownloadComponent`));
83
- process.exit(EXIT_CODES.ERROR);
86
+ (0, errorHandlers_1.debugError)(error);
87
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.error.failedToDownloadComponent`));
88
+ process.exit(exitCodes_1.EXIT_CODES.ERROR);
84
89
  }
85
- process.exit(EXIT_CODES.SUCCESS);
86
- };
87
- exports.builder = yargs => {
90
+ process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
91
+ }
92
+ function projectAddBuilder(yargs) {
88
93
  yargs.options({
89
94
  type: {
90
- describe: i18n(`${i18nKey}.options.type.describe`),
95
+ describe: (0, lang_1.i18n)(`${i18nKey}.options.type.describe`),
91
96
  type: 'string',
92
97
  },
93
98
  name: {
94
- describe: i18n(`${i18nKey}.options.name.describe`),
99
+ describe: (0, lang_1.i18n)(`${i18nKey}.options.name.describe`),
95
100
  type: 'string',
96
101
  },
97
102
  });
98
- yargs.example([['$0 project add', i18n(`${i18nKey}.examples.default`)]]);
103
+ yargs.example([['$0 project add', (0, lang_1.i18n)(`${i18nKey}.examples.default`)]]);
99
104
  yargs.example([
100
105
  [
101
106
  '$0 project add --name="my-component" --type="components/example-app"',
102
- i18n(`${i18nKey}.examples.withFlags`),
107
+ (0, lang_1.i18n)(`${i18nKey}.examples.withFlags`),
103
108
  ],
104
109
  ]);
105
110
  return yargs;
111
+ }
112
+ exports.builder = (0, yargsUtils_1.makeYargsBuilder)(projectAddBuilder, exports.command, exports.describe);
113
+ module.exports = {
114
+ command: exports.command,
115
+ describe: exports.describe,
116
+ builder: exports.builder,
117
+ handler,
106
118
  };
@@ -1 +1,11 @@
1
- export {};
1
+ import { Argv, ArgumentsCamelCase } from 'yargs';
2
+ import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs } from '../../types/Yargs';
3
+ export declare const command = "deploy";
4
+ export declare const describe: string;
5
+ export type ProjectDeployArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
6
+ project?: string;
7
+ build?: number;
8
+ buildId?: number;
9
+ };
10
+ export declare function handler(args: ArgumentsCamelCase<ProjectDeployArgs>): Promise<void>;
11
+ export declare const builder: (yargs: Argv) => Promise<Argv<ProjectDeployArgs>>;
@@ -1,78 +1,80 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // @ts-nocheck
4
- const { useV3Api } = require('../../lib/projects/buildAndDeploy');
5
- const chalk = require('chalk');
6
- const { addAccountOptions, addConfigOptions, addUseEnvironmentOptions, } = require('../../lib/commonOpts');
7
- const { trackCommandUsage } = require('../../lib/usageTracking');
8
- const { logError, ApiErrorContext } = require('../../lib/errorHandlers/index');
9
- const { logger } = require('@hubspot/local-dev-lib/logger');
10
- const { deployProject, fetchProject, } = require('@hubspot/local-dev-lib/api/projects');
11
- const { getProjectConfig } = require('../../lib/projects');
12
- const { pollDeployStatus } = require('../../lib/projects/buildAndDeploy');
13
- const { getProjectDetailUrl } = require('../../lib/projects/urls');
14
- const { projectNamePrompt } = require('../../lib/prompts/projectNamePrompt');
15
- const { promptUser } = require('../../lib/prompts/promptUtils');
16
- const { i18n } = require('../../lib/lang');
17
- const { uiBetaTag, uiLink } = require('../../lib/ui');
18
- const { getAccountConfig } = require('@hubspot/local-dev-lib/config');
19
- const { EXIT_CODES } = require('../../lib/enums/exitCodes');
20
- const { uiCommandReference, uiAccountDescription } = require('../../lib/ui');
21
- const { isHubSpotHttpError } = require('@hubspot/local-dev-lib/errors/index');
6
+ exports.builder = exports.describe = exports.command = void 0;
7
+ exports.handler = handler;
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const projects_1 = require("@hubspot/local-dev-lib/api/projects");
10
+ const config_1 = require("@hubspot/local-dev-lib/config");
11
+ const logger_1 = require("@hubspot/local-dev-lib/logger");
12
+ const index_1 = require("@hubspot/local-dev-lib/errors/index");
13
+ const buildAndDeploy_1 = require("../../lib/projects/buildAndDeploy");
14
+ const usageTracking_1 = require("../../lib/usageTracking");
15
+ const index_2 = require("../../lib/errorHandlers/index");
16
+ const projects_2 = require("../../lib/projects");
17
+ const buildAndDeploy_2 = require("../../lib/projects/buildAndDeploy");
18
+ const urls_1 = require("../../lib/projects/urls");
19
+ const projectNamePrompt_1 = require("../../lib/prompts/projectNamePrompt");
20
+ const promptUtils_1 = require("../../lib/prompts/promptUtils");
21
+ const lang_1 = require("../../lib/lang");
22
+ const ui_1 = require("../../lib/ui");
23
+ const exitCodes_1 = require("../../lib/enums/exitCodes");
24
+ const ui_2 = require("../../lib/ui");
25
+ const yargsUtils_1 = require("../../lib/yargsUtils");
22
26
  const i18nKey = 'commands.project.subcommands.deploy';
23
27
  exports.command = 'deploy';
24
- exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
25
- const validateBuildId = (buildId, deployedBuildId, latestBuildId, projectName, accountId) => {
28
+ exports.describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`${i18nKey}.describe`), false);
29
+ function validateBuildId(buildId, deployedBuildId, latestBuildId, projectName, accountId) {
26
30
  if (Number(buildId) > latestBuildId) {
27
- return i18n(`${i18nKey}.errors.buildIdDoesNotExist`, {
31
+ return (0, lang_1.i18n)(`${i18nKey}.errors.buildIdDoesNotExist`, {
28
32
  buildId: buildId,
29
- projectName,
30
- linkToProject: uiLink(i18n(`${i18nKey}.errors.viewProjectsBuilds`), getProjectDetailUrl(projectName, accountId)),
33
+ projectName: projectName,
34
+ linkToProject: (0, ui_1.uiLink)((0, lang_1.i18n)(`${i18nKey}.errors.viewProjectsBuilds`), (0, urls_1.getProjectDetailUrl)(projectName, accountId)),
31
35
  });
32
36
  }
33
37
  if (Number(buildId) === deployedBuildId) {
34
- return i18n(`${i18nKey}.errors.buildAlreadyDeployed`, {
38
+ return (0, lang_1.i18n)(`${i18nKey}.errors.buildAlreadyDeployed`, {
35
39
  buildId: buildId,
36
- linkToProject: uiLink(i18n(`${i18nKey}.errors.viewProjectsBuilds`), getProjectDetailUrl(projectName, accountId)),
40
+ linkToProject: (0, ui_1.uiLink)((0, lang_1.i18n)(`${i18nKey}.errors.viewProjectsBuilds`), (0, urls_1.getProjectDetailUrl)(projectName, accountId)),
37
41
  });
38
42
  }
39
43
  return true;
40
- };
41
- exports.handler = async (options) => {
42
- const { derivedAccountId } = options;
43
- const accountConfig = getAccountConfig(derivedAccountId);
44
- const { project: projectOption, buildId: buildIdOption } = options;
44
+ }
45
+ async function handler(args) {
46
+ const { derivedAccountId } = args;
47
+ const accountConfig = (0, config_1.getAccountConfig)(derivedAccountId);
48
+ const { project: projectOption, buildId: buildIdOption } = args;
45
49
  const accountType = accountConfig && accountConfig.accountType;
46
- trackCommandUsage('project-deploy', { type: accountType }, derivedAccountId);
47
- const { projectConfig } = await getProjectConfig();
50
+ (0, usageTracking_1.trackCommandUsage)('project-deploy', accountType ? { type: accountType } : undefined, derivedAccountId);
51
+ const { projectConfig } = await (0, projects_2.getProjectConfig)();
48
52
  let projectName = projectOption;
49
53
  if (!projectOption && projectConfig) {
50
54
  projectName = projectConfig.name;
51
55
  }
52
- const namePromptResponse = await projectNamePrompt(derivedAccountId, {
56
+ const namePromptResponse = await (0, projectNamePrompt_1.projectNamePrompt)(derivedAccountId, {
53
57
  project: projectName,
54
58
  });
55
- if (!projectName && namePromptResponse.projectName) {
56
- projectName = namePromptResponse.projectName;
57
- }
59
+ projectName = namePromptResponse.projectName;
58
60
  let buildIdToDeploy = buildIdOption;
59
61
  try {
60
- const { data: { latestBuild, deployedBuildId }, } = await fetchProject(derivedAccountId, projectName);
62
+ const { data: { latestBuild, deployedBuildId }, } = await (0, projects_1.fetchProject)(derivedAccountId, projectName);
61
63
  if (!latestBuild || !latestBuild.buildId) {
62
- logger.error(i18n(`${i18nKey}.errors.noBuilds`));
63
- return process.exit(EXIT_CODES.ERROR);
64
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.noBuilds`));
65
+ return process.exit(exitCodes_1.EXIT_CODES.ERROR);
64
66
  }
65
67
  if (buildIdToDeploy) {
66
68
  const validationResult = validateBuildId(buildIdToDeploy, deployedBuildId, latestBuild.buildId, projectName, derivedAccountId);
67
69
  if (validationResult !== true) {
68
- logger.error(validationResult);
69
- return process.exit(EXIT_CODES.ERROR);
70
+ logger_1.logger.error(validationResult);
71
+ return process.exit(exitCodes_1.EXIT_CODES.ERROR);
70
72
  }
71
73
  }
72
74
  else {
73
- const deployBuildIdPromptResponse = await promptUser({
75
+ const deployBuildIdPromptResponse = await (0, promptUtils_1.promptUser)({
74
76
  name: 'buildId',
75
- message: i18n(`${i18nKey}.deployBuildIdPrompt`),
77
+ message: (0, lang_1.i18n)(`${i18nKey}.deployBuildIdPrompt`),
76
78
  default: latestBuild.buildId === deployedBuildId
77
79
  ? undefined
78
80
  : latestBuild.buildId,
@@ -81,59 +83,65 @@ exports.handler = async (options) => {
81
83
  buildIdToDeploy = deployBuildIdPromptResponse.buildId;
82
84
  }
83
85
  if (!buildIdToDeploy) {
84
- logger.error(i18n(`${i18nKey}.errors.noBuildId`));
85
- return process.exit(EXIT_CODES.ERROR);
86
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.noBuildId`));
87
+ return process.exit(exitCodes_1.EXIT_CODES.ERROR);
86
88
  }
87
- const { data: deployResp } = await deployProject(derivedAccountId, projectName, buildIdToDeploy, useV3Api(projectConfig?.platformVersion));
88
- if (!deployResp || deployResp.error) {
89
- logger.error(i18n(`${i18nKey}.errors.deploy`, {
90
- details: deployResp.error.message,
91
- }));
92
- return process.exit(EXIT_CODES.ERROR);
89
+ const { data: deployResp } = await (0, projects_1.deployProject)(derivedAccountId, projectName, buildIdToDeploy, (0, buildAndDeploy_1.useV3Api)(projectConfig?.platformVersion));
90
+ if (!deployResp) {
91
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.deploy`));
92
+ return process.exit(exitCodes_1.EXIT_CODES.ERROR);
93
93
  }
94
- await pollDeployStatus(derivedAccountId, projectName, deployResp.id, buildIdToDeploy);
94
+ await (0, buildAndDeploy_2.pollDeployStatus)(derivedAccountId, projectName, Number(deployResp.id), buildIdToDeploy);
95
95
  }
96
96
  catch (e) {
97
- if (isHubSpotHttpError(e) && e.status === 404) {
98
- logger.error(i18n(`${i18nKey}.errors.projectNotFound`, {
99
- projectName: chalk.bold(projectName),
100
- accountIdentifier: uiAccountDescription(derivedAccountId),
101
- command: uiCommandReference('hs project upload'),
97
+ if ((0, index_1.isHubSpotHttpError)(e) && e.status === 404) {
98
+ logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.projectNotFound`, {
99
+ projectName: chalk_1.default.bold(projectName),
100
+ accountIdentifier: (0, ui_2.uiAccountDescription)(derivedAccountId),
101
+ command: (0, ui_2.uiCommandReference)('hs project upload'),
102
102
  }));
103
103
  }
104
- else if (isHubSpotHttpError(e) && e.status === 400) {
105
- logger.error(e.message);
104
+ else if ((0, index_1.isHubSpotHttpError)(e) && e.status === 400) {
105
+ logger_1.logger.error(e.message);
106
106
  }
107
107
  else {
108
- logError(e, new ApiErrorContext({
108
+ (0, index_2.logError)(e, new index_2.ApiErrorContext({
109
109
  accountId: derivedAccountId,
110
110
  request: 'project deploy',
111
111
  }));
112
112
  }
113
- return process.exit(EXIT_CODES.ERROR);
113
+ return process.exit(exitCodes_1.EXIT_CODES.ERROR);
114
114
  }
115
- };
116
- exports.builder = yargs => {
115
+ }
116
+ function projectDeployBuilder(yargs) {
117
117
  yargs.options({
118
118
  project: {
119
- describe: i18n(`${i18nKey}.options.project.describe`),
119
+ describe: (0, lang_1.i18n)(`${i18nKey}.options.project.describe`),
120
120
  type: 'string',
121
121
  },
122
122
  build: {
123
123
  alias: ['build-id'],
124
- describe: i18n(`${i18nKey}.options.build.describe`),
124
+ describe: (0, lang_1.i18n)(`${i18nKey}.options.build.describe`),
125
125
  type: 'number',
126
126
  },
127
127
  });
128
128
  yargs.example([
129
- ['$0 project deploy', i18n(`${i18nKey}.examples.default`)],
129
+ ['$0 project deploy', (0, lang_1.i18n)(`${i18nKey}.examples.default`)],
130
130
  [
131
131
  '$0 project deploy --project="my-project" --build=5',
132
- i18n(`${i18nKey}.examples.withOptions`),
132
+ (0, lang_1.i18n)(`${i18nKey}.examples.withOptions`),
133
133
  ],
134
134
  ]);
135
- addConfigOptions(yargs);
136
- addAccountOptions(yargs);
137
- addUseEnvironmentOptions(yargs);
138
135
  return yargs;
136
+ }
137
+ exports.builder = (0, yargsUtils_1.makeYargsBuilder)(projectDeployBuilder, exports.command, exports.describe, {
138
+ useConfigOptions: true,
139
+ useAccountOptions: true,
140
+ useEnvironmentOptions: true,
141
+ });
142
+ module.exports = {
143
+ command: exports.command,
144
+ describe: exports.describe,
145
+ builder: exports.builder,
146
+ handler,
139
147
  };
@@ -1,6 +1,6 @@
1
1
  import { ArgumentsCamelCase, Argv } from 'yargs';
2
2
  import { ProjectDevArgs } from '../../../types/Yargs';
3
3
  export declare const command = "dev";
4
- export declare const describe: string | undefined;
4
+ export declare const describe: string;
5
5
  export declare function handler(args: ArgumentsCamelCase<ProjectDevArgs>): Promise<void>;
6
6
  export declare function builder(yargs: Argv): Argv<ProjectDevArgs>;
@@ -1 +1,12 @@
1
+ import { Argv, ArgumentsCamelCase } from 'yargs';
2
+ import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs } from '../../types/Yargs';
3
+ export declare const command = "download";
4
+ export declare const describe: string;
5
+ type ProjectDownloadArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
6
+ project?: string;
7
+ dest?: string;
8
+ build?: number;
9
+ };
10
+ export declare function handler(args: ArgumentsCamelCase<ProjectDownloadArgs>): Promise<void>;
11
+ export declare const builder: (yargs: Argv) => Promise<Argv<ProjectDownloadArgs>>;
1
12
  export {};