@hubspot/cli 7.2.4-experimental.0 → 7.3.0-beta.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 +7 -8
- package/commands/account/clean.js +9 -10
- package/commands/account/info.js +9 -10
- package/commands/account/list.js +7 -8
- package/commands/account/remove.js +8 -9
- package/commands/account/rename.js +4 -5
- package/commands/account/use.js +7 -8
- package/commands/cms/convertFields.js +5 -6
- package/commands/cms/getReactModule.js +7 -8
- package/commands/cms/lighthouseScore.js +15 -16
- package/commands/config/set.js +6 -7
- package/commands/create/api-sample.js +6 -7
- package/commands/create/module.js +1 -2
- package/commands/create/template.js +1 -2
- package/commands/customObject/create.js +8 -9
- package/commands/customObject/schema/create.js +5 -6
- package/commands/customObject/schema/delete.js +9 -10
- package/commands/customObject/schema/fetch-all.js +7 -8
- package/commands/customObject/schema/fetch.js +9 -10
- package/commands/customObject/schema/list.js +2 -3
- package/commands/customObject/schema/update.js +7 -8
- package/commands/customObject/schema.js +1 -2
- package/commands/customObject.d.ts +1 -1
- package/commands/filemanager/fetch.js +5 -6
- package/commands/filemanager/upload.js +12 -13
- package/commands/function/deploy.js +9 -10
- package/commands/function/list.js +4 -5
- package/commands/function/server.js +7 -8
- 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/create.js +1 -0
- 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 +3453 -0
- package/lang/en.lyaml +9 -3
- package/lib/DevServerManagerV2.d.ts +1 -2
- package/lib/DevServerManagerV2.js +1 -2
- package/lib/LocalDevManagerV2.js +10 -15
- package/lib/dependencyManagement.js +8 -9
- package/lib/errorHandlers/index.js +17 -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/projects/structure.d.ts +1 -2
- package/lib/projects/structure.js +0 -4
- 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/types/ProjectComponents.d.ts +0 -15
|
@@ -1,87 +1,78 @@
|
|
|
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
|
|
6
|
+
exports.builder = exports.describe = exports.command = void 0;
|
|
7
|
+
exports.handler = handler;
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const path_2 = require("@hubspot/local-dev-lib/path");
|
|
10
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
11
|
+
const archive_1 = require("@hubspot/local-dev-lib/archive");
|
|
12
|
+
const projects_1 = require("@hubspot/local-dev-lib/api/projects");
|
|
13
|
+
const index_1 = require("../../lib/errorHandlers/index");
|
|
14
|
+
const projects_2 = require("../../lib/projects");
|
|
15
|
+
const downloadProjectPrompt_1 = require("../../lib/prompts/downloadProjectPrompt");
|
|
16
|
+
const lang_1 = require("../../lib/lang");
|
|
17
|
+
const ui_1 = require("../../lib/ui");
|
|
18
|
+
const usageTracking_1 = require("../../lib/usageTracking");
|
|
19
|
+
const exitCodes_1 = require("../../lib/enums/exitCodes");
|
|
20
|
+
const yargsUtils_1 = require("../../lib/yargsUtils");
|
|
17
21
|
const i18nKey = 'commands.project.subcommands.download';
|
|
18
|
-
const { EXIT_CODES } = require('../../lib/enums/exitCodes');
|
|
19
22
|
exports.command = 'download';
|
|
20
|
-
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
21
|
-
|
|
22
|
-
const { projectConfig } = await getProjectConfig();
|
|
23
|
+
exports.describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`${i18nKey}.describe`), false);
|
|
24
|
+
async function handler(args) {
|
|
25
|
+
const { projectConfig } = await (0, projects_2.getProjectConfig)();
|
|
23
26
|
if (projectConfig) {
|
|
24
|
-
logger.error(i18n(`${i18nKey}.warnings.cannotDownloadWithinProject`));
|
|
25
|
-
process.exit(EXIT_CODES.ERROR);
|
|
27
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.warnings.cannotDownloadWithinProject`));
|
|
28
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
26
29
|
}
|
|
27
|
-
const {
|
|
28
|
-
const { project:
|
|
29
|
-
let
|
|
30
|
-
trackCommandUsage('project-download',
|
|
30
|
+
const { dest, build, derivedAccountId } = args;
|
|
31
|
+
const { project: projectName } = await (0, downloadProjectPrompt_1.downloadProjectPrompt)(args);
|
|
32
|
+
let buildNumberToDownload = build;
|
|
33
|
+
(0, usageTracking_1.trackCommandUsage)('project-download', undefined, derivedAccountId);
|
|
31
34
|
try {
|
|
32
|
-
const { projectExists } = await ensureProjectExists(derivedAccountId, projectName, {
|
|
33
|
-
allowCreate: false,
|
|
34
|
-
noLogs: true,
|
|
35
|
-
});
|
|
36
|
-
if (!projectExists) {
|
|
37
|
-
logger.error(i18n(`${i18nKey}.errors.projectNotFound`, {
|
|
38
|
-
projectName: chalk.bold(projectName),
|
|
39
|
-
accountId: chalk.bold(derivedAccountId),
|
|
40
|
-
}));
|
|
41
|
-
const { name: promptedProjectName } = await downloadProjectPrompt(options);
|
|
42
|
-
projectName = promptedProjectName || project;
|
|
43
|
-
}
|
|
44
|
-
const absoluteDestPath = dest ? path.resolve(getCwd(), dest) : getCwd();
|
|
45
|
-
let buildNumberToDownload = build;
|
|
46
35
|
if (!buildNumberToDownload) {
|
|
47
|
-
const { data: projectBuildsResult } = await fetchProjectBuilds(derivedAccountId, projectName);
|
|
36
|
+
const { data: projectBuildsResult } = await (0, projects_1.fetchProjectBuilds)(derivedAccountId, projectName);
|
|
48
37
|
const { results: projectBuilds } = projectBuildsResult;
|
|
49
38
|
if (projectBuilds && projectBuilds.length) {
|
|
50
39
|
const latestBuild = projectBuilds[0];
|
|
51
40
|
buildNumberToDownload = latestBuild.buildId;
|
|
52
41
|
}
|
|
53
42
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
43
|
+
if (!buildNumberToDownload) {
|
|
44
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.noBuildIdToDownload`));
|
|
45
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
46
|
+
}
|
|
47
|
+
const absoluteDestPath = dest ? path_1.default.resolve((0, path_2.getCwd)(), dest) : (0, path_2.getCwd)();
|
|
48
|
+
const { data: zippedProject } = await (0, projects_1.downloadProject)(derivedAccountId, projectName, buildNumberToDownload);
|
|
49
|
+
await (0, archive_1.extractZipArchive)(zippedProject, (0, path_2.sanitizeFileName)(projectName), path_1.default.resolve(absoluteDestPath), { includesRootDir: false });
|
|
50
|
+
logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.logs.downloadSucceeded`, {
|
|
57
51
|
buildId: buildNumberToDownload,
|
|
58
52
|
projectName,
|
|
59
53
|
}));
|
|
60
|
-
process.exit(EXIT_CODES.SUCCESS);
|
|
54
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
61
55
|
}
|
|
62
56
|
catch (e) {
|
|
63
|
-
logError(e, new ApiErrorContext({
|
|
57
|
+
(0, index_1.logError)(e, new index_1.ApiErrorContext({
|
|
64
58
|
accountId: derivedAccountId,
|
|
65
59
|
request: 'project download',
|
|
66
60
|
}));
|
|
67
|
-
process.exit(EXIT_CODES.ERROR);
|
|
61
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
68
62
|
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
addAccountOptions(yargs);
|
|
72
|
-
addConfigOptions(yargs);
|
|
73
|
-
addUseEnvironmentOptions(yargs);
|
|
63
|
+
}
|
|
64
|
+
function projectDownloadBuilder(yargs) {
|
|
74
65
|
yargs.options({
|
|
75
66
|
project: {
|
|
76
|
-
describe: i18n(`${i18nKey}.options.project.describe`),
|
|
67
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.project.describe`),
|
|
77
68
|
type: 'string',
|
|
78
69
|
},
|
|
79
70
|
dest: {
|
|
80
|
-
describe: i18n(`${i18nKey}.options.dest.describe`),
|
|
71
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.dest.describe`),
|
|
81
72
|
type: 'string',
|
|
82
73
|
},
|
|
83
74
|
build: {
|
|
84
|
-
describe: i18n(`${i18nKey}.options.build.describe`),
|
|
75
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.build.describe`),
|
|
85
76
|
alias: ['build-id'],
|
|
86
77
|
type: 'number',
|
|
87
78
|
},
|
|
@@ -89,8 +80,19 @@ exports.builder = yargs => {
|
|
|
89
80
|
yargs.example([
|
|
90
81
|
[
|
|
91
82
|
'$0 project download --project=myProject --dest=myProjectFolder',
|
|
92
|
-
i18n(`${i18nKey}.examples.default`),
|
|
83
|
+
(0, lang_1.i18n)(`${i18nKey}.examples.default`),
|
|
93
84
|
],
|
|
94
85
|
]);
|
|
95
86
|
return yargs;
|
|
87
|
+
}
|
|
88
|
+
exports.builder = (0, yargsUtils_1.makeYargsBuilder)(projectDownloadBuilder, exports.command, exports.describe, {
|
|
89
|
+
useConfigOptions: true,
|
|
90
|
+
useAccountOptions: true,
|
|
91
|
+
useEnvironmentOptions: true,
|
|
92
|
+
});
|
|
93
|
+
module.exports = {
|
|
94
|
+
command: exports.command,
|
|
95
|
+
describe: exports.describe,
|
|
96
|
+
builder: exports.builder,
|
|
97
|
+
handler,
|
|
96
98
|
};
|
|
@@ -1 +1,11 @@
|
|
|
1
|
+
import { Argv, ArgumentsCamelCase } from 'yargs';
|
|
2
|
+
import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs } from '../../types/Yargs';
|
|
3
|
+
export declare const command = "list-builds";
|
|
4
|
+
export declare const describe: string;
|
|
5
|
+
type ProjectListBuildsArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & {
|
|
6
|
+
project?: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
};
|
|
9
|
+
export declare function handler(args: ArgumentsCamelCase<ProjectListBuildsArgs>): Promise<void>;
|
|
10
|
+
export declare function builder(yargs: Argv): Argv<ProjectListBuildsArgs>;
|
|
1
11
|
export {};
|
|
@@ -1,121 +1,131 @@
|
|
|
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
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
6
|
+
exports.describe = exports.command = void 0;
|
|
7
|
+
exports.handler = handler;
|
|
8
|
+
exports.builder = builder;
|
|
9
|
+
const index_1 = require("@hubspot/local-dev-lib/errors/index");
|
|
10
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
11
|
+
const projects_1 = require("@hubspot/local-dev-lib/api/projects");
|
|
12
|
+
const table_1 = require("../../lib/ui/table");
|
|
13
|
+
const ui_1 = require("../../lib/ui");
|
|
14
|
+
const projects_2 = require("../../lib/projects");
|
|
15
|
+
const urls_1 = require("../../lib/projects/urls");
|
|
16
|
+
const moment_1 = __importDefault(require("moment"));
|
|
17
|
+
const promptUtils_1 = require("../../lib/prompts/promptUtils");
|
|
18
|
+
const commonOpts_1 = require("../../lib/commonOpts");
|
|
19
|
+
const usageTracking_1 = require("../../lib/usageTracking");
|
|
20
|
+
const lang_1 = require("../../lib/lang");
|
|
21
|
+
const index_2 = require("../../lib/errorHandlers/index");
|
|
22
|
+
const exitCodes_1 = require("../../lib/enums/exitCodes");
|
|
17
23
|
const i18nKey = 'commands.project.subcommands.listBuilds';
|
|
18
24
|
exports.command = 'list-builds';
|
|
19
|
-
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
20
|
-
|
|
21
|
-
const {
|
|
22
|
-
|
|
25
|
+
exports.describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`${i18nKey}.describe`), false);
|
|
26
|
+
async function fetchAndDisplayBuilds(accountId, project, options) {
|
|
27
|
+
const { data: { results, paging }, } = await (0, projects_1.fetchProjectBuilds)(accountId, project.name, options);
|
|
28
|
+
const currentDeploy = project.deployedBuildId;
|
|
29
|
+
if (options && options.after) {
|
|
30
|
+
logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.logs.showingNextBuilds`, {
|
|
31
|
+
count: results.length,
|
|
32
|
+
projectName: project.name,
|
|
33
|
+
}));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.logs.showingRecentBuilds`, {
|
|
37
|
+
count: results.length,
|
|
38
|
+
projectName: project.name,
|
|
39
|
+
viewBuildsLink: (0, ui_1.uiLink)((0, lang_1.i18n)(`${i18nKey}.logs.viewAllBuildsLink`), (0, urls_1.getProjectDetailUrl)(project.name, accountId)),
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
if (results.length === 0) {
|
|
43
|
+
logger_1.logger.log((0, lang_1.i18n)(`${i18nKey}.errors.noBuilds`));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const builds = results.map(build => {
|
|
47
|
+
const isCurrentlyDeployed = build.buildId === currentDeploy;
|
|
48
|
+
return [
|
|
49
|
+
isCurrentlyDeployed
|
|
50
|
+
? `#${build.buildId} [deployed]`
|
|
51
|
+
: `#${build.buildId}`,
|
|
52
|
+
build.status,
|
|
53
|
+
(0, moment_1.default)(build.finishedAt).format('MM/DD/YY, hh:mm:ssa'),
|
|
54
|
+
Math.round(moment_1.default
|
|
55
|
+
.duration((0, moment_1.default)(build.finishedAt).diff((0, moment_1.default)(build.enqueuedAt)))
|
|
56
|
+
.asSeconds()) + 's',
|
|
57
|
+
build.subbuildStatuses
|
|
58
|
+
.filter(subbuild => subbuild.status === 'FAILURE')
|
|
59
|
+
.map(subbuild => `${subbuild.buildName} failed`)
|
|
60
|
+
.join(', '),
|
|
61
|
+
];
|
|
62
|
+
});
|
|
63
|
+
builds.unshift((0, table_1.getTableHeader)(['Build ID', 'Status', 'Completed', 'Duration', 'Details']));
|
|
64
|
+
logger_1.logger.log((0, table_1.getTableContents)(builds, {
|
|
65
|
+
columnDefault: {
|
|
66
|
+
paddingLeft: 3,
|
|
67
|
+
},
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
if (paging && paging.next) {
|
|
71
|
+
await (0, promptUtils_1.promptUser)({
|
|
72
|
+
name: 'more',
|
|
73
|
+
message: (0, lang_1.i18n)(`${i18nKey}.continueOrExitPrompt`),
|
|
74
|
+
});
|
|
75
|
+
await fetchAndDisplayBuilds(accountId, project, {
|
|
76
|
+
limit: options.limit,
|
|
77
|
+
after: paging.next.after,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function handler(args) {
|
|
82
|
+
const { project: projectFlagValue, limit, derivedAccountId } = args;
|
|
83
|
+
(0, usageTracking_1.trackCommandUsage)('project-list-builds', undefined, derivedAccountId);
|
|
23
84
|
let projectName = projectFlagValue;
|
|
24
85
|
if (!projectName) {
|
|
25
|
-
const { projectConfig, projectDir } = await getProjectConfig();
|
|
26
|
-
validateProjectConfig(projectConfig, projectDir);
|
|
86
|
+
const { projectConfig, projectDir } = await (0, projects_2.getProjectConfig)();
|
|
87
|
+
(0, projects_2.validateProjectConfig)(projectConfig, projectDir);
|
|
27
88
|
projectName = projectConfig.name;
|
|
28
89
|
}
|
|
29
|
-
const fetchAndDisplayBuilds = async (project, options) => {
|
|
30
|
-
const { data: { results, paging }, } = await fetchProjectBuilds(derivedAccountId, project.name, options);
|
|
31
|
-
const currentDeploy = project.deployedBuildId;
|
|
32
|
-
if (options && options.after) {
|
|
33
|
-
logger.log(i18n(`${i18nKey}.logs.showingNextBuilds`, {
|
|
34
|
-
count: results.length,
|
|
35
|
-
projectName: project.name,
|
|
36
|
-
}));
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
39
|
-
logger.log(i18n(`${i18nKey}.logs.showingRecentBuilds`, {
|
|
40
|
-
count: results.length,
|
|
41
|
-
projectName: project.name,
|
|
42
|
-
viewBuildsLink: uiLink(i18n(`${i18nKey}.logs.viewAllBuildsLink`), getProjectDetailUrl(project.name, derivedAccountId)),
|
|
43
|
-
}));
|
|
44
|
-
}
|
|
45
|
-
if (results.length === 0) {
|
|
46
|
-
logger.log(i18n(`${i18nKey}.errors.noBuilds`));
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
const builds = results.map(build => {
|
|
50
|
-
const isCurrentlyDeployed = build.buildId === currentDeploy;
|
|
51
|
-
return [
|
|
52
|
-
isCurrentlyDeployed
|
|
53
|
-
? `#${build.buildId} [deployed]`
|
|
54
|
-
: `#${build.buildId}`,
|
|
55
|
-
build.status,
|
|
56
|
-
moment(build.finishedAt).format('MM/DD/YY, hh:mm:ssa'),
|
|
57
|
-
Math.round(moment
|
|
58
|
-
.duration(moment(build.finishedAt).diff(moment(build.enqueuedAt)))
|
|
59
|
-
.asSeconds()) + 's',
|
|
60
|
-
build.subbuildStatuses
|
|
61
|
-
.filter(subbuild => subbuild.status === 'FAILURE')
|
|
62
|
-
.map(subbuild => `${subbuild.buildName} failed`)
|
|
63
|
-
.join(', '),
|
|
64
|
-
];
|
|
65
|
-
});
|
|
66
|
-
builds.unshift(getTableHeader([
|
|
67
|
-
'Build ID',
|
|
68
|
-
'Status',
|
|
69
|
-
'Completed',
|
|
70
|
-
'Duration',
|
|
71
|
-
'Details',
|
|
72
|
-
]));
|
|
73
|
-
logger.log(getTableContents(builds, {
|
|
74
|
-
columnDefault: {
|
|
75
|
-
paddingLeft: 3,
|
|
76
|
-
},
|
|
77
|
-
}));
|
|
78
|
-
}
|
|
79
|
-
if (paging && paging.next) {
|
|
80
|
-
await promptUser({
|
|
81
|
-
name: 'more',
|
|
82
|
-
message: i18n(`${i18nKey}.continueOrExitPrompt`),
|
|
83
|
-
});
|
|
84
|
-
await fetchAndDisplayBuilds(project, { limit, after: paging.next.after });
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
90
|
try {
|
|
88
|
-
const { data: project } = await fetchProject(derivedAccountId, projectName);
|
|
89
|
-
await fetchAndDisplayBuilds(project, { limit });
|
|
91
|
+
const { data: project } = await (0, projects_1.fetchProject)(derivedAccountId, projectName);
|
|
92
|
+
await fetchAndDisplayBuilds(derivedAccountId, project, { limit });
|
|
90
93
|
}
|
|
91
94
|
catch (e) {
|
|
92
|
-
if (isHubSpotHttpError(e) && e.status === 404) {
|
|
93
|
-
logger.error(i18n(`${i18nKey}.errors.projectNotFound`, { projectName }));
|
|
95
|
+
if ((0, index_1.isHubSpotHttpError)(e) && e.status === 404) {
|
|
96
|
+
logger_1.logger.error((0, lang_1.i18n)(`${i18nKey}.errors.projectNotFound`, { projectName }));
|
|
94
97
|
}
|
|
95
98
|
else {
|
|
96
|
-
logError(e, new ApiErrorContext({
|
|
99
|
+
(0, index_2.logError)(e, new index_2.ApiErrorContext({
|
|
97
100
|
accountId: derivedAccountId,
|
|
98
101
|
projectName,
|
|
99
102
|
}));
|
|
100
103
|
}
|
|
101
104
|
}
|
|
102
|
-
|
|
103
|
-
|
|
105
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
106
|
+
}
|
|
107
|
+
function builder(yargs) {
|
|
108
|
+
(0, commonOpts_1.addConfigOptions)(yargs);
|
|
109
|
+
(0, commonOpts_1.addAccountOptions)(yargs);
|
|
110
|
+
(0, commonOpts_1.addUseEnvironmentOptions)(yargs);
|
|
104
111
|
yargs.options({
|
|
105
112
|
project: {
|
|
106
|
-
describe: i18n(`${i18nKey}.options.project.describe`),
|
|
113
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.project.describe`),
|
|
107
114
|
type: 'string',
|
|
108
115
|
},
|
|
109
116
|
limit: {
|
|
110
|
-
describe: i18n(`${i18nKey}.options.limit.describe`),
|
|
117
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.limit.describe`),
|
|
111
118
|
type: 'string',
|
|
112
119
|
},
|
|
113
120
|
});
|
|
114
121
|
yargs.example([
|
|
115
|
-
['$0 project list-builds', i18n(`${i18nKey}.examples.default`)],
|
|
122
|
+
['$0 project list-builds', (0, lang_1.i18n)(`${i18nKey}.examples.default`)],
|
|
116
123
|
]);
|
|
117
|
-
addConfigOptions(yargs);
|
|
118
|
-
addAccountOptions(yargs);
|
|
119
|
-
addUseEnvironmentOptions(yargs);
|
|
120
124
|
return yargs;
|
|
125
|
+
}
|
|
126
|
+
module.exports = {
|
|
127
|
+
command: exports.command,
|
|
128
|
+
describe: exports.describe,
|
|
129
|
+
builder,
|
|
130
|
+
handler,
|
|
121
131
|
};
|
|
@@ -1 +1,10 @@
|
|
|
1
|
+
import { Argv, ArgumentsCamelCase } from 'yargs';
|
|
2
|
+
import { AccountArgs, CommonArgs, ConfigArgs, EnvironmentArgs, TestingArgs } from '../../types/Yargs';
|
|
3
|
+
export declare const command = "open";
|
|
4
|
+
export declare const describe: string;
|
|
5
|
+
type ProjectOpenArgs = CommonArgs & ConfigArgs & AccountArgs & EnvironmentArgs & TestingArgs & {
|
|
6
|
+
project?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function handler(args: ArgumentsCamelCase<ProjectOpenArgs>): Promise<void>;
|
|
9
|
+
export declare function builder(yargs: Argv): Argv<ProjectOpenArgs>;
|
|
1
10
|
export {};
|
package/commands/project/open.js
CHANGED
|
@@ -1,58 +1,66 @@
|
|
|
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
|
-
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
6
|
+
exports.describe = exports.command = void 0;
|
|
7
|
+
exports.handler = handler;
|
|
8
|
+
exports.builder = builder;
|
|
9
|
+
const open_1 = __importDefault(require("open"));
|
|
10
|
+
const commonOpts_1 = require("../../lib/commonOpts");
|
|
11
|
+
const usageTracking_1 = require("../../lib/usageTracking");
|
|
12
|
+
const lang_1 = require("../../lib/lang");
|
|
13
|
+
const logger_1 = require("@hubspot/local-dev-lib/logger");
|
|
14
|
+
const projects_1 = require("../../lib/projects");
|
|
15
|
+
const urls_1 = require("../../lib/projects/urls");
|
|
16
|
+
const projectNamePrompt_1 = require("../../lib/prompts/projectNamePrompt");
|
|
17
|
+
const ui_1 = require("../../lib/ui");
|
|
18
|
+
const exitCodes_1 = require("../../lib/enums/exitCodes");
|
|
14
19
|
const i18nKey = 'commands.project.subcommands.open';
|
|
15
20
|
exports.command = 'open';
|
|
16
|
-
exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false);
|
|
17
|
-
|
|
18
|
-
const { project, derivedAccountId } =
|
|
19
|
-
trackCommandUsage('project-open',
|
|
20
|
-
const { projectConfig } = await getProjectConfig();
|
|
21
|
+
exports.describe = (0, ui_1.uiBetaTag)((0, lang_1.i18n)(`${i18nKey}.describe`), false);
|
|
22
|
+
async function handler(args) {
|
|
23
|
+
const { project, derivedAccountId } = args;
|
|
24
|
+
(0, usageTracking_1.trackCommandUsage)('project-open', undefined, derivedAccountId);
|
|
25
|
+
const { projectConfig } = await (0, projects_1.getProjectConfig)();
|
|
21
26
|
let projectName = project;
|
|
22
27
|
if (projectName) {
|
|
23
|
-
const { projectExists } = await ensureProjectExists(derivedAccountId, projectName, {
|
|
28
|
+
const { projectExists } = await (0, projects_1.ensureProjectExists)(derivedAccountId, projectName, {
|
|
24
29
|
allowCreate: false,
|
|
25
30
|
});
|
|
26
31
|
if (!projectExists) {
|
|
27
|
-
process.exit(EXIT_CODES.ERROR);
|
|
32
|
+
process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
28
33
|
}
|
|
29
34
|
}
|
|
30
35
|
else if (!projectName && projectConfig) {
|
|
31
36
|
projectName = projectConfig.name;
|
|
32
37
|
}
|
|
33
38
|
else if (!projectName && !projectConfig) {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
process.exit(EXIT_CODES.ERROR);
|
|
37
|
-
}
|
|
38
|
-
projectName = namePrompt.projectName;
|
|
39
|
+
const namePromptResponse = await (0, projectNamePrompt_1.projectNamePrompt)(derivedAccountId);
|
|
40
|
+
projectName = namePromptResponse.projectName;
|
|
39
41
|
}
|
|
40
|
-
const url = getProjectDetailUrl(projectName, derivedAccountId);
|
|
41
|
-
|
|
42
|
-
logger.success(i18n(`${i18nKey}.success`, { projectName }));
|
|
43
|
-
process.exit(EXIT_CODES.SUCCESS);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
addConfigOptions(yargs);
|
|
47
|
-
addAccountOptions(yargs);
|
|
48
|
-
addUseEnvironmentOptions(yargs);
|
|
49
|
-
addTestingOptions(yargs);
|
|
42
|
+
const url = (0, urls_1.getProjectDetailUrl)(projectName, derivedAccountId);
|
|
43
|
+
(0, open_1.default)(url, { url: true });
|
|
44
|
+
logger_1.logger.success((0, lang_1.i18n)(`${i18nKey}.success`, { projectName: projectName }));
|
|
45
|
+
process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
|
|
46
|
+
}
|
|
47
|
+
function builder(yargs) {
|
|
48
|
+
(0, commonOpts_1.addConfigOptions)(yargs);
|
|
49
|
+
(0, commonOpts_1.addAccountOptions)(yargs);
|
|
50
|
+
(0, commonOpts_1.addUseEnvironmentOptions)(yargs);
|
|
51
|
+
(0, commonOpts_1.addTestingOptions)(yargs);
|
|
50
52
|
yargs.options({
|
|
51
53
|
project: {
|
|
52
|
-
describe: i18n(`${i18nKey}.options.project.describe`),
|
|
54
|
+
describe: (0, lang_1.i18n)(`${i18nKey}.options.project.describe`),
|
|
53
55
|
type: 'string',
|
|
54
56
|
},
|
|
55
57
|
});
|
|
56
|
-
yargs.example([['$0 project open', i18n(`${i18nKey}.examples.default`)]]);
|
|
58
|
+
yargs.example([['$0 project open', (0, lang_1.i18n)(`${i18nKey}.examples.default`)]]);
|
|
57
59
|
return yargs;
|
|
60
|
+
}
|
|
61
|
+
module.exports = {
|
|
62
|
+
command: exports.command,
|
|
63
|
+
describe: exports.describe,
|
|
64
|
+
handler,
|
|
65
|
+
builder,
|
|
58
66
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Argv, ArgumentsCamelCase } from 'yargs';
|
|
2
2
|
import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs, TestingArgs } from '../../types/Yargs';
|
|
3
3
|
export declare const command = "create";
|
|
4
|
-
export declare const describe: string
|
|
4
|
+
export declare const describe: string;
|
|
5
5
|
type CombinedArgs = ConfigArgs & AccountArgs & EnvironmentArgs & TestingArgs;
|
|
6
6
|
type SandboxCreateArgs = CommonArgs & CombinedArgs & {
|
|
7
7
|
name?: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Argv, ArgumentsCamelCase } from 'yargs';
|
|
2
2
|
import { CommonArgs, ConfigArgs, AccountArgs, EnvironmentArgs, TestingArgs } from '../../types/Yargs';
|
|
3
3
|
export declare const command = "delete";
|
|
4
|
-
export declare const describe: string
|
|
4
|
+
export declare const describe: string;
|
|
5
5
|
type CombinedArgs = ConfigArgs & AccountArgs & EnvironmentArgs & TestingArgs;
|
|
6
6
|
type SandboxDeleteArgs = CommonArgs & CombinedArgs & {
|
|
7
7
|
account?: string;
|
package/commands/sandbox.d.ts
CHANGED