diff --git a/packages/cli/commands/create/function.js b/packages/cli/commands/create/function.js index 8d1aa2b5c..e50a39c8a 100644 --- a/packages/cli/commands/create/function.js +++ b/packages/cli/commands/create/function.js @@ -1,12 +1,19 @@ -const { createFunction } = require('@hubspot/cli-lib/functions'); +const { createFunction } = require('@hubspot/local-dev-lib/cms/functions'); const { createFunctionPrompt, } = require('../../lib/prompts/createFunctionPrompt'); +const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors'); +const { EXIT_CODES } = require('../../lib/enums/exitCodes'); module.exports = { dest: ({ name }) => name, execute: async ({ dest }) => { const functionDefinition = await createFunctionPrompt(); - createFunction(functionDefinition, dest); + try { + await createFunction(functionDefinition, dest); + } catch (e) { + logErrorInstance(e); + process.exit(EXIT_CODES.ERROR); + } }, }; diff --git a/packages/cli/commands/create/module.js b/packages/cli/commands/create/module.js index 75d62d7b8..d8f5afd8d 100644 --- a/packages/cli/commands/create/module.js +++ b/packages/cli/commands/create/module.js @@ -1,7 +1,9 @@ -const { createModulePrompt } = require('../../lib/prompts/createModulePrompt'); const { logger } = require('@hubspot/cli-lib/logger'); +const { createModule } = require('@hubspot/local-dev-lib/cms/modules'); const { i18n } = require('../../lib/lang'); -const { createModule } = require('@hubspot/cli-lib/modules'); +const { createModulePrompt } = require('../../lib/prompts/createModulePrompt'); +const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors'); +const { EXIT_CODES } = require('../../lib/enums/exitCodes'); const i18nKey = 'cli.commands.create.subcommands.module'; @@ -12,11 +14,15 @@ module.exports = { logger.error(i18n(`${i18nKey}.errors.nameRequired`)); return false; } - return true; }, execute: async ({ name, dest }) => { const moduleDefinition = await createModulePrompt(); - await createModule(moduleDefinition, name, dest); + try { + await createModule(moduleDefinition, name, dest); + } catch (e) { + logErrorInstance(e); + process.exit(EXIT_CODES.ERROR); + } }, }; diff --git a/packages/cli/commands/create/template.js b/packages/cli/commands/create/template.js index 7ae2bdf8b..aec38c25e 100644 --- a/packages/cli/commands/create/template.js +++ b/packages/cli/commands/create/template.js @@ -1,9 +1,11 @@ +const { createTemplate } = require('@hubspot/local-dev-lib/cms/templates'); +const { logger } = require('@hubspot/cli-lib/logger'); +const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors'); const { createTemplatePrompt, } = require('../../lib/prompts/createTemplatePrompt'); -const { logger } = require('@hubspot/cli-lib/logger'); const { i18n } = require('../../lib/lang'); -const { createTemplate } = require('@hubspot/cli-lib/templates'); +const { EXIT_CODES } = require('../../lib/enums/exitCodes'); const i18nKey = 'cli.commands.create.subcommands.template'; @@ -19,7 +21,12 @@ module.exports = { }, execute: async ({ name, dest }) => { const { templateType } = await createTemplatePrompt(); - await createTemplate(name, dest, templateType); + try { + await createTemplate(name, dest, templateType); + } catch (e) { + logErrorInstance(e); + process.exit(EXIT_CODES.ERROR); + } return { templateType }; }, }; diff --git a/packages/cli/commands/fetch.js b/packages/cli/commands/fetch.js index cb3393e90..66bf7575a 100644 --- a/packages/cli/commands/fetch.js +++ b/packages/cli/commands/fetch.js @@ -1,6 +1,5 @@ const { downloadFileOrFolder } = require('@hubspot/local-dev-lib/fileMapper'); const { logger } = require('@hubspot/cli-lib/logger'); - const { addConfigOptions, addAccountOptions, @@ -17,23 +16,8 @@ const { i18n } = require('../lib/lang'); const i18nKey = 'cli.commands.fetch'; const { EXIT_CODES } = require('../lib/enums/exitCodes'); -const { buildLogCallbacks } = require('../lib/logCallbacks'); const { logErrorInstance } = require('../lib/errorHandlers/standardErrors'); -const fileMapperLogCallbacks = buildLogCallbacks({ - skippedExisting: `${i18nKey}.fileMapperLogCallbacks.skippedExisting`, - wroteFolder: `${i18nKey}.fileMapperLogCallbacks.wroteFolder`, - completedFetch: { - key: `${i18nKey}.fileMapperLogCallbacks.completedFetch`, - logger: logger.success, - }, - folderFetch: `${i18nKey}.fileMapperLogCallbacks.folderFetch`, - completedFolderFetch: { - key: `${i18nKey}.fileMapperLogCallbacks.completedFolderFetch`, - logger: logger.success, - }, -}); - exports.command = 'fetch [dest]'; exports.describe = i18n(`${i18nKey}.describe`); @@ -63,8 +47,7 @@ exports.handler = async options => { src, resolveLocalPath(dest), mode, - options, - fileMapperLogCallbacks + options ); } catch (err) { logErrorInstance(err); diff --git a/packages/cli/commands/filemanager/fetch.js b/packages/cli/commands/filemanager/fetch.js index d67a859ec..83e28caab 100644 --- a/packages/cli/commands/filemanager/fetch.js +++ b/packages/cli/commands/filemanager/fetch.js @@ -1,8 +1,6 @@ const { downloadFileOrFolder } = require('@hubspot/local-dev-lib/fileManager'); const { logger } = require('@hubspot/cli-lib/logger'); const { resolveLocalPath } = require('../../lib/filesystem'); -const { buildLogCallbacks } = require('../../lib/logCallbacks'); - const { addConfigOptions, addAccountOptions, @@ -17,20 +15,6 @@ const i18nKey = 'cli.commands.filemanager.subcommands.fetch'; const { EXIT_CODES } = require('../../lib/enums/exitCodes'); const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors'); -const downloadLogCallbacks = buildLogCallbacks({ - skippedExisting: `${i18nKey}.downloadLogCallbacks.skippedExisting`, - fetchFolderStarted: `${i18nKey}.downloadLogCallbacks.fetchFolderStarted`, - fetchFolderSuccess: { - key: `${i18nKey}.downloadLogCallbacks.fetchFolderSuccess`, - logger: logger.success, - }, - fetchFileStarted: `${i18nKey}.downloadLogCallbacks.fetchFileStarted`, - fetchFileSuccess: { - key: `${i18nKey}.downloadLogCallbacks.fetchFileSuccess`, - logger: logger.success, - }, -}); - exports.command = 'fetch [dest]'; exports.describe = i18n(`${i18nKey}.describe`); @@ -57,8 +41,7 @@ exports.handler = async options => { src, dest, false, - includeArchived || false, - downloadLogCallbacks + includeArchived || false ); } catch (err) { logErrorInstance(err); diff --git a/packages/cli/commands/filemanager/upload.js b/packages/cli/commands/filemanager/upload.js index f231037b7..5035479ae 100644 --- a/packages/cli/commands/filemanager/upload.js +++ b/packages/cli/commands/filemanager/upload.js @@ -5,14 +5,16 @@ const { uploadFolder } = require('@hubspot/local-dev-lib/fileManager'); const { uploadFile } = require('@hubspot/cli-lib/api/fileManager'); const { getCwd, convertToUnixPath } = require('@hubspot/local-dev-lib/path'); const { logger } = require('@hubspot/cli-lib/logger'); +const { + validateSrcAndDestPaths, +} = require('@hubspot/local-dev-lib/cms/modules'); +const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules'); + const { ApiErrorContext, logApiUploadErrorInstance, } = require('../../lib/errorHandlers/apiErrors'); const { logErrorInstance } = require('../../lib/errorHandlers/standardErrors'); -const { validateSrcAndDestPaths } = require('@hubspot/cli-lib/modules'); -const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules'); - const { addConfigOptions, addAccountOptions, @@ -25,11 +27,6 @@ const { i18n } = require('../../lib/lang'); const i18nKey = 'cli.commands.filemanager.subcommands.upload'; const { EXIT_CODES } = require('../../lib/enums/exitCodes'); -const { buildLogCallbacks } = require('../../lib/logCallbacks'); - -const uploadLogCallbacks = buildLogCallbacks({ - uploadSuccess: `${i18nKey}.uploadLogCallbacks.uploadSuccess`, -}); exports.command = 'upload '; exports.describe = i18n(`${i18nKey}.describe`); @@ -126,7 +123,7 @@ exports.handler = async options => { src, }) ); - uploadFolder(accountId, absoluteSrcPath, dest, uploadLogCallbacks) + uploadFolder(accountId, absoluteSrcPath, dest) .then(() => { logger.success( i18n(`${i18nKey}.success.uploadComplete`, { diff --git a/packages/cli/commands/project/download.js b/packages/cli/commands/project/download.js index 76cc7855b..57efd9490 100644 --- a/packages/cli/commands/project/download.js +++ b/packages/cli/commands/project/download.js @@ -24,16 +24,10 @@ const { } = require('../../lib/prompts/downloadProjectPrompt'); const { i18n } = require('../../lib/lang'); const { uiBetaTag } = require('../../lib/ui'); -const { buildLogCallbacks } = require('../../lib/logCallbacks'); const i18nKey = 'cli.commands.project.subcommands.download'; const { EXIT_CODES } = require('../../lib/enums/exitCodes'); -const archiveLogCallbacks = buildLogCallbacks({ - init: `${i18nKey}.archiveLogCallbacks.init`, - copy: `${i18nKey}.archiveLogCallbacks.copy`, -}); - exports.command = 'download [--project]'; exports.describe = uiBetaTag(i18n(`${i18nKey}.describe`), false); @@ -99,8 +93,7 @@ exports.handler = async options => { zippedProject, projectName, path.resolve(absoluteDestPath), - { includesRootDir: false }, - archiveLogCallbacks + { includesRootDir: false } ); logger.log( diff --git a/packages/cli/commands/upload.js b/packages/cli/commands/upload.js index ff5d8ce81..71e665a90 100644 --- a/packages/cli/commands/upload.js +++ b/packages/cli/commands/upload.js @@ -16,8 +16,14 @@ const { logApiUploadErrorInstance, } = require('../lib/errorHandlers/apiErrors'); const { logErrorInstance } = require('../lib/errorHandlers/standardErrors'); -const { validateSrcAndDestPaths } = require('@hubspot/cli-lib/modules'); +const { + validateSrcAndDestPaths, +} = require('@hubspot/local-dev-lib/cms/modules'); const { shouldIgnoreFile } = require('@hubspot/local-dev-lib/ignoreRules'); +const { + getThemePreviewUrl, + getThemeJSONPath, +} = require('@hubspot/local-dev-lib/cms/themes'); const { addConfigOptions, @@ -32,10 +38,7 @@ const { cleanUploadPrompt } = require('../lib/prompts/cleanUploadPrompt'); const { validateMode, loadAndValidateOptions } = require('../lib/validation'); const { trackCommandUsage } = require('../lib/usageTracking'); const { getUploadableFileList } = require('../lib/upload'); -const { - getThemePreviewUrl, - getThemeJSONPath, -} = require('@hubspot/local-dev-lib/cms/themes'); + const { i18n } = require('../lib/lang'); const i18nKey = 'cli.commands.upload'; const { EXIT_CODES } = require('../lib/enums/exitCodes'); diff --git a/packages/cli/lang/en.lyaml b/packages/cli/lang/en.lyaml index 4cbc58767..6efdda398 100644 --- a/packages/cli/lang/en.lyaml +++ b/packages/cli/lang/en.lyaml @@ -274,12 +274,6 @@ en: describe: "Local directory you would like the files to be placed in, relative to your current working directory" src: describe: "Path in HubSpot Design Tools" - fileMapperLogCallbacks: - skippedExisting: 'Skipped existing "{{ filepath }}"' - wroteFolder: 'Wrote folder "{{ filepath }}"' - completedFetch: 'Completed fetch of file "{{ src }}"{{ version }} to "{{ dest }}" from the Design Manager' - folderFetch: 'Fetched "{{ src }}" from account {{ accountId }} from the Design Manager successfully' - completedFolderFetch: 'Completed fetch of folder "{{ src }}"{{ version }} to "{{ dest }}" from the Design Manager' filemanager: describe: "Commands for working with the File Manager." subcommands: @@ -295,12 +289,6 @@ en: describe: "Path in HubSpot Design Tools" src: describe: "Path to the local directory you would like the files to be placed, relative to your current working directory. If omitted, this argument will default to your current working directory" - downloadLogCallbacks: - skippedExisting: "Skipped existing {{ filepath }}" - fetchFolderStarted: 'Fetching folder from "{{ src }}" to "{{ dest }}" in the File Manager of account {{ accountId }}' - fetchFolderSuccess: "Completed fetch of folder \"{{ src }}\" to \"{{ dest }}\" from the File Manager" - fetchFileStarted: "Fetching file from \"{{ src }}\" to \"{{ dest }}\" in the File Manager of account {{ accountId }}" - fetchFileSuccess: "Completed fetch of file \"{{ src }}\" to \"{{ dest }}\" from the File Manager" upload: describe: "Upload a folder or file from your computer to the HubSpot File Manager" errors: @@ -319,8 +307,6 @@ en: success: upload: "Uploaded file from \"{{ src }}\" to \"{{ dest }}\" in the File Manager of account {{ accountId }}" uploadComplete: "Uploading files to \"{{ dest }}\" in the File Manager is complete" - uploadLogCallbacks: - uploadSuccess: 'Uploaded file "{{ file }}" to "{{ destPath }}"' functions: describe: "Commands for working with functions." subcommands: @@ -645,9 +631,6 @@ en: describe: "The name of the project to download" dest: describe: "Destination folder for the project" - archiveLogCallbacks: - init: "Extracting project source..." - copy: "Copying project source..." open: describe: "Open the specified project's details page in the browser" options: @@ -935,10 +918,6 @@ en: setupError: "Failed to setup local dev server: {{ message }}" startError: "Failed to start local dev server: {{ message }}" fileChangeError: "Failed to notify local dev server of file change: {{ message }}" - oauth: - logCallbacks: - init: "Updating configuration" - success: "Configuration updated" projects: config: srcOutsideProjectDir: "Invalid value for 'srcDir' in {{ projectConfig }}: {{#bold}}srcDir: \"{{ srcDir }}\"{{/bold}}\n\t'srcDir' must be a relative path to a folder under the project root, such as \".\" or \"./src\"" diff --git a/packages/cli/lib/commonOpts.js b/packages/cli/lib/commonOpts.js index d0e9edca2..d422c2263 100644 --- a/packages/cli/lib/commonOpts.js +++ b/packages/cli/lib/commonOpts.js @@ -1,4 +1,7 @@ const Logger = require('@hubspot/cli-lib/logger'); +const { + setLogLevel: setLocalDevLibLogLevel, +} = require('@hubspot/local-dev-lib/logger'); const { DEFAULT_MODE, Mode } = require('@hubspot/cli-lib'); const { getAccountId: getAccountIdFromConfig, @@ -66,8 +69,16 @@ const setLogLevel = (options = {}) => { const { debug } = options; if (debug) { Logger.setLogLevel(LOG_LEVEL.DEBUG); + + // Update the log level in local-dev-lib's instance of the logger + // This will evenutally replace cli-lib's version of it + setLocalDevLibLogLevel(LOG_LEVEL.DEBUG); } else { Logger.setLogLevel(LOG_LEVEL.LOG); + + // Update the log level in local-dev-lib's instance of the logger + // This will evenutally replace cli-lib's version of it + setLocalDevLibLogLevel(LOG_LEVEL.LOG); } }; diff --git a/packages/cli/lib/logCallbacks.js b/packages/cli/lib/logCallbacks.js deleted file mode 100644 index e47873e49..000000000 --- a/packages/cli/lib/logCallbacks.js +++ /dev/null @@ -1,20 +0,0 @@ -const { logger } = require('@hubspot/cli-lib/logger'); -const { i18n } = require('./lang'); - -function buildLogCallbacks(logData) { - const callbacksObject = {}; - for (let key in logData) { - if (typeof logData[key] === 'string') { - callbacksObject[key] = interpolationData => - logger.log(i18n(logData[key], interpolationData)); - } else { - callbacksObject[key] = interpolationData => - logData[key].logger(i18n(logData[key].key, interpolationData)); - } - } - return callbacksObject; -} - -module.exports = { - buildLogCallbacks, -}; diff --git a/packages/cli/lib/oauth.js b/packages/cli/lib/oauth.js index 034e1f91d..319cb3890 100644 --- a/packages/cli/lib/oauth.js +++ b/packages/cli/lib/oauth.js @@ -9,21 +9,10 @@ const { handleExit } = require('./process'); const { getHubSpotWebsiteOrigin } = require('@hubspot/local-dev-lib/urls'); const { logger } = require('@hubspot/cli-lib/logger'); const { ENVIRONMENTS } = require('@hubspot/cli-lib/lib/constants'); -const { buildLogCallbacks } = require('./logCallbacks'); const PORT = 3000; const redirectUri = `http://localhost:${PORT}/oauth-callback`; -const i18nKey = 'cli.lib.oauth'; - -const oauthLogCallbacks = buildLogCallbacks({ - init: `${i18nKey}.logCallbacks.init`, - success: { - key: `${i18nKey}.logCallbacks.success`, - logger: logger.success, - }, -}); - const buildAuthUrl = oauthManager => { return ( `${getHubSpotWebsiteOrigin(oauthManager.account.env)}/oauth/${ @@ -107,7 +96,7 @@ const authenticateWithOauth = async configData => { const oauthManager = setupOauth(configData); logger.log('Authorizing'); await authorize(oauthManager); - addOauthToAccountConfig(oauthManager, oauthLogCallbacks); + addOauthToAccountConfig(oauthManager); }; module.exports = { diff --git a/packages/cli/lib/process.js b/packages/cli/lib/process.js index 2af41b974..30cb52eec 100644 --- a/packages/cli/lib/process.js +++ b/packages/cli/lib/process.js @@ -1,5 +1,8 @@ const readline = require('readline'); const { logger, setLogLevel, LOG_LEVEL } = require('@hubspot/cli-lib/logger'); +const { + setLogLevel: setLocalDevLibLogLevel, +} = require('@hubspot/local-dev-lib/logger'); const { i18n } = require('./lang'); const i18nKey = 'cli.lib.process'; @@ -28,6 +31,10 @@ const handleExit = callback => { // Prevent logs when terminal closes if (isSIGHUP) { setLogLevel(LOG_LEVEL.NONE); + + // Update the log level in local-dev-lib's instance of the logger + // This will evenutally replace cli-lib's version of it + setLocalDevLibLogLevel(LOG_LEVEL.LOG); } logger.debug(i18n(`${i18nKey}.exitDebug`, { signal })); diff --git a/packages/serverless-dev-runtime/lib/server.js b/packages/serverless-dev-runtime/lib/server.js index 287afcf03..4ab0e9bf3 100644 --- a/packages/serverless-dev-runtime/lib/server.js +++ b/packages/serverless-dev-runtime/lib/server.js @@ -3,6 +3,9 @@ const bodyParser = require('body-parser'); const cors = require('cors'); const chalk = require('chalk'); const { logger, setLogLevel, LOG_LEVEL } = require('@hubspot/cli-lib/logger'); +const { + setLogLevel: setLocalDevLibLogLevel, +} = require('@hubspot/local-dev-lib/logger'); const { getTableContents, getTableHeader, @@ -192,6 +195,10 @@ const start = props => { setOptions(props); const { path: functionPath, watch, debug } = options; setLogLevel(debug ? LOG_LEVEL.DEBUG : LOG_LEVEL.LOG); + + // Update the log level in local-dev-lib's instance of the logger + // This will evenutally replace cli-lib's version of it + setLocalDevLibLogLevel(debug ? LOG_LEVEL.DEBUG : LOG_LEVEL.LOG); if (watch) { watchFolder(functionPath, restartServer); } diff --git a/packages/webpack-cms-plugins/HubSpotAutoUploadPlugin.js b/packages/webpack-cms-plugins/HubSpotAutoUploadPlugin.js index d47002343..ab338a582 100644 --- a/packages/webpack-cms-plugins/HubSpotAutoUploadPlugin.js +++ b/packages/webpack-cms-plugins/HubSpotAutoUploadPlugin.js @@ -12,8 +12,15 @@ const { setLogLevel, setLogger, } = require('@hubspot/cli-lib/logger'); +const { + setLogLevel: setLocalDevLibLogLevel, +} = require('@hubspot/local-dev-lib/logger'); const path = require('path'); + setLogLevel(LOG_LEVEL.LOG); +// Update the log level in local-dev-lib's instance of the logger +// This will evenutally replace cli-lib's version of it +setLocalDevLibLogLevel(LOG_LEVEL.LOG); loadConfig(); checkAndWarnGitInclusion(getConfigPath());