@hubspot/cli 7.0.0-experimental.2 → 7.0.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.
package/bin/cli.js
CHANGED
|
@@ -85,7 +85,7 @@ const handleFailure = (msg, err, yargs) => {
|
|
|
85
85
|
logError(err);
|
|
86
86
|
}
|
|
87
87
|
if (msg === null) {
|
|
88
|
-
yargs.showHelp();
|
|
88
|
+
yargs.showHelp('log');
|
|
89
89
|
process.exit(EXIT_CODES.SUCCESS);
|
|
90
90
|
}
|
|
91
91
|
else {
|
|
@@ -142,6 +142,10 @@ const SKIP_CONFIG_VALIDATION = {
|
|
|
142
142
|
auth: { target: true },
|
|
143
143
|
};
|
|
144
144
|
const loadConfigMiddleware = async (options) => {
|
|
145
|
+
// Skip this when no command is provided
|
|
146
|
+
if (!options._.length) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
145
149
|
const maybeValidateConfig = () => {
|
|
146
150
|
if (!isTargetedCommand(options, SKIP_CONFIG_VALIDATION) &&
|
|
147
151
|
!validateConfig()) {
|
|
@@ -160,7 +164,11 @@ const loadConfigMiddleware = async (options) => {
|
|
|
160
164
|
}
|
|
161
165
|
maybeValidateConfig();
|
|
162
166
|
};
|
|
163
|
-
const checkAndWarnGitInclusionMiddleware =
|
|
167
|
+
const checkAndWarnGitInclusionMiddleware = options => {
|
|
168
|
+
// Skip this when no command is provided
|
|
169
|
+
if (!options._.length) {
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
164
172
|
checkAndWarnGitInclusion(getConfigPath());
|
|
165
173
|
};
|
|
166
174
|
const accountsSubCommands = {
|
|
@@ -187,6 +195,10 @@ const SKIP_ACCOUNT_VALIDATION = {
|
|
|
187
195
|
sandboxes: sandboxesSubCommands,
|
|
188
196
|
};
|
|
189
197
|
const validateAccountOptions = async (options) => {
|
|
198
|
+
// Skip this when no command is provided
|
|
199
|
+
if (!options._.length) {
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
190
202
|
let validAccount = true;
|
|
191
203
|
if (!isTargetedCommand(options, SKIP_ACCOUNT_VALIDATION)) {
|
|
192
204
|
validAccount = await validateAccount(options);
|
|
@@ -22,15 +22,15 @@ exports.handler = async (options) => {
|
|
|
22
22
|
const { forceCreate, message, derivedAccountId } = options;
|
|
23
23
|
const accountConfig = getAccountConfig(derivedAccountId);
|
|
24
24
|
const accountType = accountConfig && accountConfig.accountType;
|
|
25
|
-
trackCommandUsage('project-upload', { type: accountType }, derivedAccountId);
|
|
26
25
|
const { projectConfig, projectDir } = await getProjectConfig();
|
|
26
|
+
trackCommandUsage('project-upload', { type: accountType }, derivedAccountId);
|
|
27
27
|
validateProjectConfig(projectConfig, projectDir);
|
|
28
28
|
await ensureProjectExists(derivedAccountId, projectConfig.name, {
|
|
29
29
|
forceCreate,
|
|
30
30
|
uploadCommand: true,
|
|
31
31
|
});
|
|
32
32
|
try {
|
|
33
|
-
const result = await handleProjectUpload(derivedAccountId, projectConfig, projectDir, pollProjectBuildAndDeploy, message);
|
|
33
|
+
const result = await handleProjectUpload(derivedAccountId, projectConfig, projectDir, pollProjectBuildAndDeploy, message, options.translate);
|
|
34
34
|
if (result.uploadError) {
|
|
35
35
|
if (isSpecifiedError(result.uploadError, {
|
|
36
36
|
subCategory: PROJECT_ERROR_TYPES.PROJECT_LOCKED,
|
|
@@ -80,6 +80,11 @@ exports.builder = yargs => {
|
|
|
80
80
|
type: 'string',
|
|
81
81
|
default: '',
|
|
82
82
|
},
|
|
83
|
+
translate: {
|
|
84
|
+
hidden: true,
|
|
85
|
+
type: 'boolean',
|
|
86
|
+
default: false,
|
|
87
|
+
},
|
|
83
88
|
});
|
|
84
89
|
yargs.example([['$0 project upload', i18n(`${i18nKey}.examples.default`)]]);
|
|
85
90
|
addConfigOptions(yargs);
|
|
@@ -43,9 +43,11 @@ exports.handler = async (options) => {
|
|
|
43
43
|
}));
|
|
44
44
|
}
|
|
45
45
|
catch (err) {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
46
|
+
if (secretName) {
|
|
47
|
+
logger.error(i18n(`${i18nKey}.errors.delete`, {
|
|
48
|
+
secretName,
|
|
49
|
+
}));
|
|
50
|
+
}
|
|
49
51
|
logError(err, new ApiErrorContext({
|
|
50
52
|
request: 'delete a secret',
|
|
51
53
|
accountId: derivedAccountId,
|
package/lib/projects/upload.d.ts
CHANGED
|
@@ -4,5 +4,5 @@ type ProjectUploadCallbackFunction<T> = (accountId: number, projectConfig: Proje
|
|
|
4
4
|
type ProjectUploadDefaultResult = {
|
|
5
5
|
uploadError?: unknown;
|
|
6
6
|
};
|
|
7
|
-
export declare function handleProjectUpload<T = ProjectUploadDefaultResult>(accountId: number, projectConfig: ProjectConfig, projectDir: string, callbackFunc: ProjectUploadCallbackFunction<T>, uploadMessage: string): Promise<unknown>;
|
|
7
|
+
export declare function handleProjectUpload<T = ProjectUploadDefaultResult>(accountId: number, projectConfig: ProjectConfig, projectDir: string, callbackFunc: ProjectUploadCallbackFunction<T>, uploadMessage: string, sendIR?: boolean): Promise<unknown>;
|
|
8
8
|
export {};
|
package/lib/projects/upload.js
CHANGED
|
@@ -15,8 +15,10 @@ const SpinniesManager_1 = __importDefault(require("../ui/SpinniesManager"));
|
|
|
15
15
|
const ui_1 = require("../ui");
|
|
16
16
|
const lang_1 = require("../lang");
|
|
17
17
|
const exitCodes_1 = require("../enums/exitCodes");
|
|
18
|
+
const project_parsing_lib_1 = require("@hubspot/project-parsing-lib");
|
|
19
|
+
const errorHandlers_1 = require("../errorHandlers");
|
|
18
20
|
const i18nKey = 'lib.projectUpload';
|
|
19
|
-
async function uploadProjectFiles(accountId, projectName, filePath, uploadMessage, platformVersion) {
|
|
21
|
+
async function uploadProjectFiles(accountId, projectName, filePath, uploadMessage, platformVersion, intermediateRepresentation) {
|
|
20
22
|
SpinniesManager_1.default.init({});
|
|
21
23
|
const accountIdentifier = (0, ui_1.uiAccountDescription)(accountId);
|
|
22
24
|
SpinniesManager_1.default.add('upload', {
|
|
@@ -29,7 +31,7 @@ async function uploadProjectFiles(accountId, projectName, filePath, uploadMessag
|
|
|
29
31
|
let buildId;
|
|
30
32
|
let error;
|
|
31
33
|
try {
|
|
32
|
-
const { data: upload } = await (0, projects_1.uploadProject)(accountId, projectName, filePath, uploadMessage, platformVersion);
|
|
34
|
+
const { data: upload } = await (0, projects_1.uploadProject)(accountId, projectName, filePath, uploadMessage, platformVersion, intermediateRepresentation);
|
|
33
35
|
buildId = upload.buildId;
|
|
34
36
|
SpinniesManager_1.default.succeed('upload', {
|
|
35
37
|
text: (0, lang_1.i18n)(`${i18nKey}.uploadProjectFiles.succeed`, {
|
|
@@ -55,7 +57,7 @@ async function uploadProjectFiles(accountId, projectName, filePath, uploadMessag
|
|
|
55
57
|
}
|
|
56
58
|
return { buildId, error };
|
|
57
59
|
}
|
|
58
|
-
async function handleProjectUpload(accountId, projectConfig, projectDir, callbackFunc, uploadMessage) {
|
|
60
|
+
async function handleProjectUpload(accountId, projectConfig, projectDir, callbackFunc, uploadMessage, sendIR = false) {
|
|
59
61
|
const srcDir = path_1.default.resolve(projectDir, projectConfig.srcDir);
|
|
60
62
|
const filenames = fs_extra_1.default.readdirSync(srcDir);
|
|
61
63
|
if (!filenames || filenames.length === 0) {
|
|
@@ -75,7 +77,26 @@ async function handleProjectUpload(accountId, projectConfig, projectDir, callbac
|
|
|
75
77
|
logger_1.logger.debug((0, lang_1.i18n)(`${i18nKey}.handleProjectUpload.compressed`, {
|
|
76
78
|
byteCount: archive.pointer(),
|
|
77
79
|
}));
|
|
78
|
-
|
|
80
|
+
let intermediateRepresentation;
|
|
81
|
+
if (sendIR) {
|
|
82
|
+
try {
|
|
83
|
+
intermediateRepresentation = await (0, project_parsing_lib_1.translate)({
|
|
84
|
+
projectSourceDir: path_1.default.join(projectDir, projectConfig.srcDir),
|
|
85
|
+
platformVersion: projectConfig.platformVersion,
|
|
86
|
+
accountId,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
if ((0, project_parsing_lib_1.isTranslationError)(e)) {
|
|
91
|
+
logger_1.logger.error(e.toString());
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
(0, errorHandlers_1.logError)(e);
|
|
95
|
+
}
|
|
96
|
+
return process.exit(exitCodes_1.EXIT_CODES.ERROR);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
const { buildId, error } = await uploadProjectFiles(accountId, projectConfig.name, tempFile.name, uploadMessage, projectConfig.platformVersion, intermediateRepresentation);
|
|
79
100
|
if (error) {
|
|
80
101
|
console.log(error);
|
|
81
102
|
uploadResult = { uploadError: error };
|
package/package.json
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hubspot/cli",
|
|
3
|
-
"version": "7.0.
|
|
3
|
+
"version": "7.0.1-experimental.0",
|
|
4
4
|
"description": "The official CLI for developing on HubSpot",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": "https://github.com/HubSpot/hubspot-cli",
|
|
7
7
|
"dependencies": {
|
|
8
8
|
"@hubspot/local-dev-lib": "3.1.0",
|
|
9
|
+
"@hubspot/project-parsing-lib": "0.0.1",
|
|
9
10
|
"@hubspot/serverless-dev-runtime": "7.0.0",
|
|
10
11
|
"@hubspot/theme-preview-dev-server": "0.0.10",
|
|
11
12
|
"@hubspot/ui-extensions-dev-server": "0.8.33",
|