@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.
- package/bin/cli.js +76 -21
- package/commands/customObject.d.ts +1 -1
- package/commands/mv.d.ts +1 -1
- package/commands/project/add.d.ts +10 -0
- package/commands/project/add.js +64 -52
- package/commands/project/deploy.d.ts +11 -1
- package/commands/project/deploy.js +79 -71
- package/commands/project/dev/index.d.ts +1 -1
- package/commands/project/download.d.ts +11 -0
- package/commands/project/download.js +56 -54
- package/commands/project/listBuilds.d.ts +10 -0
- package/commands/project/listBuilds.js +101 -91
- package/commands/project/open.d.ts +9 -0
- package/commands/project/open.js +43 -35
- package/commands/sandbox/create.d.ts +1 -1
- package/commands/sandbox/delete.d.ts +1 -1
- package/commands/sandbox.d.ts +1 -1
- package/lang/en.js +3448 -0
- package/lang/en.lyaml +5 -3
- package/lib/dependencyManagement.d.ts +0 -5
- package/lib/dependencyManagement.js +13 -39
- package/lib/doctor/Doctor.js +2 -1
- package/lib/errorHandlers/index.js +17 -0
- package/lib/npm.d.ts +9 -0
- package/lib/npm.js +36 -0
- package/lib/projects/buildAndDeploy.d.ts +1 -1
- package/lib/projects/buildAndDeploy.js +14 -12
- package/lib/projects/index.d.ts +1 -1
- package/lib/projects/index.js +1 -1
- package/lib/prompts/downloadProjectPrompt.js +5 -1
- package/lib/prompts/projectNamePrompt.d.ts +6 -1
- package/lib/prompts/projectNamePrompt.js +17 -16
- package/lib/testUtils.d.ts +4 -2
- package/lib/testUtils.js +17 -3
- package/lib/ui/index.d.ts +2 -1
- package/lib/yargsUtils.d.ts +2 -2
- package/lib/yargsUtils.js +2 -2
- 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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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,
|
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
|
|
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 {};
|
package/commands/project/add.js
CHANGED
|
@@ -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
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
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
|
-
|
|
22
|
-
const { derivedAccountId } =
|
|
23
|
-
trackCommandUsage('project-add',
|
|
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,
|
|
72
|
+
const projectAddPromptResponse = await (0, projectAddPrompt_1.projectAddPrompt)(components, args);
|
|
68
73
|
try {
|
|
69
|
-
const componentPath =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
42
|
-
const { derivedAccountId } =
|
|
43
|
-
const accountConfig = getAccountConfig(derivedAccountId);
|
|
44
|
-
const { project: projectOption, buildId: buildIdOption } =
|
|
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
|
-
|
|
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
|
|
89
|
-
logger.error(i18n(`${i18nKey}.errors.deploy
|
|
90
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
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 {};
|