@hubspot/cli 7.5.0-beta.1 → 7.5.1-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.
Files changed (67) hide show
  1. package/bin/cli.js +96 -92
  2. package/commands/account/auth.js +51 -82
  3. package/commands/account.js +0 -2
  4. package/commands/app.js +0 -2
  5. package/commands/auth.js +2 -17
  6. package/commands/cms.js +0 -2
  7. package/commands/completion.js +0 -2
  8. package/commands/config/migrate.js +17 -36
  9. package/commands/config.js +0 -2
  10. package/commands/create.js +0 -2
  11. package/commands/customObject.js +0 -2
  12. package/commands/doctor.js +0 -2
  13. package/commands/feedback.js +0 -2
  14. package/commands/filemanager.js +0 -2
  15. package/commands/function.js +0 -2
  16. package/commands/hubdb.js +0 -2
  17. package/commands/init.js +1 -4
  18. package/commands/lint.js +0 -2
  19. package/commands/list.js +0 -2
  20. package/commands/module/marketplace-validate.js +6 -8
  21. package/commands/module.js +2 -1
  22. package/commands/mv.js +0 -2
  23. package/commands/open.js +0 -2
  24. package/commands/project/dev/deprecatedFlow.d.ts +8 -2
  25. package/commands/project/dev/deprecatedFlow.js +9 -1
  26. package/commands/project/dev/index.js +59 -34
  27. package/commands/project/dev/unifiedFlow.d.ts +10 -2
  28. package/commands/project/dev/unifiedFlow.js +27 -41
  29. package/commands/project.js +0 -2
  30. package/commands/remove.js +6 -14
  31. package/commands/sandbox.js +0 -2
  32. package/commands/secret.js +0 -2
  33. package/commands/theme/generate-selectors.js +7 -10
  34. package/commands/theme/marketplace-validate.js +6 -8
  35. package/commands/theme/preview.js +17 -18
  36. package/commands/theme.js +2 -4
  37. package/commands/upload.js +26 -65
  38. package/commands/watch.js +20 -32
  39. package/lang/en.d.ts +105 -92
  40. package/lang/en.js +105 -95
  41. package/lang/en.lyaml +2 -185
  42. package/lib/accountTypes.js +1 -3
  43. package/lib/commonOpts.d.ts +1 -3
  44. package/lib/commonOpts.js +1 -1
  45. package/lib/configMigrate.d.ts +2 -2
  46. package/lib/configMigrate.js +34 -69
  47. package/lib/constants.d.ts +7 -5
  48. package/lib/constants.js +8 -6
  49. package/lib/generateSelectors.js +3 -5
  50. package/lib/marketplaceValidate.d.ts +12 -2
  51. package/lib/marketplaceValidate.js +22 -29
  52. package/lib/middleware/configMiddleware.js +1 -0
  53. package/lib/middleware/fireAlarmMiddleware.d.ts +2 -2
  54. package/lib/middleware/fireAlarmMiddleware.js +5 -3
  55. package/lib/projects/localDev/AppDevModeInterface.js +0 -6
  56. package/lib/projects/localDev/LocalDevProcess.d.ts +6 -4
  57. package/lib/projects/localDev/LocalDevProcess.js +32 -17
  58. package/lib/projects/localDev/LocalDevState.d.ts +5 -1
  59. package/lib/projects/localDev/LocalDevState.js +15 -1
  60. package/lib/projects/localDev/LocalDevWatcher.js +3 -6
  61. package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +2 -0
  62. package/lib/projects/localDev/LocalDevWebsocketServer.js +29 -9
  63. package/lib/projects/upload.js +6 -0
  64. package/lib/prompts/setAsDefaultAccountPrompt.js +10 -0
  65. package/package.json +7 -6
  66. package/types/LocalDev.d.ts +1 -1
  67. package/types/Yargs.d.ts +2 -0
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const fs_1 = __importDefault(require("fs"));
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const cli_progress_1 = __importDefault(require("cli-progress"));
9
- const lang_1 = require("../../lib/lang");
10
- const logger_1 = require("@hubspot/local-dev-lib/logger");
9
+ const en_1 = require("../../lang/en");
11
10
  const path_2 = require("@hubspot/local-dev-lib/path");
12
11
  const files_1 = require("@hubspot/local-dev-lib/constants/files");
13
12
  const themes_1 = require("@hubspot/local-dev-lib/cms/themes");
@@ -24,13 +23,12 @@ const Projects_1 = require("../../types/Projects");
24
23
  const hasFeature_1 = require("../../lib/hasFeature");
25
24
  const constants_1 = require("../../lib/constants");
26
25
  const yargsUtils_1 = require("../../lib/yargsUtils");
26
+ const logger_1 = require("../../lib/ui/logger");
27
27
  const command = 'preview [--src] [--dest]';
28
- const describe = (0, lang_1.i18n)('commands.theme.subcommands.preview.describe');
28
+ const describe = en_1.commands.theme.subcommands.preview.describe;
29
29
  function validateSrcPath(src) {
30
30
  const logInvalidPath = () => {
31
- logger_1.logger.error((0, lang_1.i18n)('commands.theme.subcommands.preview.errors.invalidPath', {
32
- path: src,
33
- }));
31
+ logger_1.uiLogger.error(en_1.commands.theme.subcommands.preview.errors.invalidPath(src));
34
32
  };
35
33
  try {
36
34
  const stats = fs_1.default.statSync(src);
@@ -47,7 +45,7 @@ function validateSrcPath(src) {
47
45
  }
48
46
  function handleUserInput() {
49
47
  const onTerminate = () => {
50
- logger_1.logger.log((0, lang_1.i18n)('commands.theme.subcommands.preview.logs.processExited'));
48
+ logger_1.uiLogger.log(en_1.commands.theme.subcommands.preview.logs.processExited);
51
49
  process.exit(exitCodes_1.EXIT_CODES.SUCCESS);
52
50
  };
53
51
  (0, process_1.handleExit)(onTerminate);
@@ -78,7 +76,7 @@ async function determineSrcAndDest(args) {
78
76
  const projectComponents = await (0, structure_1.findProjectComponents)(projectDir);
79
77
  const themeComponents = projectComponents.filter(c => c.type === Projects_1.ComponentTypes.HublTheme);
80
78
  if (themeComponents.length === 0) {
81
- logger_1.logger.error((0, lang_1.i18n)('commands.theme.subcommands.preview.errors.noThemeComponents'));
79
+ logger_1.uiLogger.error(en_1.commands.theme.subcommands.preview.errors.noThemeComponents);
82
80
  process.exit(exitCodes_1.EXIT_CODES.ERROR);
83
81
  }
84
82
  const answer = await (0, previewPrompt_1.previewProjectPrompt)(themeComponents);
@@ -102,7 +100,7 @@ async function handler(args) {
102
100
  hideCursor: true,
103
101
  }, cli_progress_1.default.Presets.rect);
104
102
  initialUploadProgressBar.start(numFiles, 0, {
105
- label: (0, lang_1.i18n)('commands.theme.subcommands.preview.initialUploadProgressBar.start'),
103
+ label: en_1.commands.theme.subcommands.preview.initialUploadProgressBar.start,
106
104
  });
107
105
  let uploadsHaveStarted = false;
108
106
  const uploadOptions = {
@@ -114,7 +112,8 @@ async function handler(args) {
114
112
  if (!uploadsHaveStarted) {
115
113
  uploadsHaveStarted = true;
116
114
  initialUploadProgressBar.update(0, {
117
- label: (0, lang_1.i18n)('commands.theme.subcommands.preview.initialUploadProgressBar.uploading'),
115
+ label: en_1.commands.theme.subcommands.preview.initialUploadProgressBar
116
+ .uploading,
118
117
  });
119
118
  }
120
119
  },
@@ -127,12 +126,12 @@ async function handler(args) {
127
126
  onFinalErrorCallback: () => initialUploadProgressBar.increment(),
128
127
  onFinishCallback: (results) => {
129
128
  initialUploadProgressBar.update(numFiles, {
130
- label: (0, lang_1.i18n)('commands.theme.subcommands.preview.initialUploadProgressBar.finish'),
129
+ label: en_1.commands.theme.subcommands.preview.initialUploadProgressBar.finish,
131
130
  });
132
131
  initialUploadProgressBar.stop();
133
132
  results.forEach(result => {
134
133
  if (result.resultType == files_1.FILE_UPLOAD_RESULT_TYPES.FAILURE) {
135
- logger_1.logger.error('Uploading file "%s" to "%s" failed', result.file, dest);
134
+ logger_1.uiLogger.error(en_1.commands.theme.subcommands.preview.errors.uploadFailed(result.file, dest));
136
135
  (0, index_1.logError)(result.error, new index_1.ApiErrorContext({
137
136
  accountId: derivedAccountId,
138
137
  request: dest,
@@ -154,7 +153,7 @@ async function handler(args) {
154
153
  createUnifiedDevServer = createDevServer;
155
154
  }
156
155
  catch (e) {
157
- logger_1.logger.warn('Unified dev server requires node 20 to run. Defaulting to legacy preview.');
156
+ logger_1.uiLogger.warn('Unified dev server requires node 20 to run. Defaulting to legacy preview.');
158
157
  }
159
158
  const isUngatedForUnified = await (0, hasFeature_1.hasFeature)(derivedAccountId, constants_1.FEATURES.UNIFIED_THEME_PREVIEW);
160
159
  if (isUngatedForUnified && createUnifiedDevServer) {
@@ -183,27 +182,27 @@ async function handler(args) {
183
182
  function themePreviewBuilder(yargs) {
184
183
  yargs
185
184
  .option('src', {
186
- describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.src.describe'),
185
+ describe: en_1.commands.theme.subcommands.preview.positionals.src,
187
186
  type: 'string',
188
187
  requiresArg: true,
189
188
  })
190
189
  .option('dest', {
191
- describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.dest.describe'),
190
+ describe: en_1.commands.theme.subcommands.preview.positionals.dest,
192
191
  type: 'string',
193
192
  requiresArg: true,
194
193
  })
195
194
  .option('notify', {
196
195
  alias: 'n',
197
- describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.notify.describe'),
196
+ describe: en_1.commands.theme.subcommands.preview.options.notify,
198
197
  type: 'string',
199
198
  requiresArg: true,
200
199
  })
201
200
  .option('no-ssl', {
202
- describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.noSsl.describe'),
201
+ describe: en_1.commands.theme.subcommands.preview.options.noSsl,
203
202
  type: 'boolean',
204
203
  })
205
204
  .option('port', {
206
- describe: (0, lang_1.i18n)('commands.theme.subcommands.preview.options.port.describe'),
205
+ describe: en_1.commands.theme.subcommands.preview.options.port,
207
206
  type: 'number',
208
207
  })
209
208
  .option('resetSession', {
package/commands/theme.js CHANGED
@@ -6,10 +6,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const marketplace_validate_1 = __importDefault(require("./theme/marketplace-validate"));
7
7
  const generate_selectors_1 = __importDefault(require("./theme/generate-selectors"));
8
8
  const preview_1 = __importDefault(require("./theme/preview"));
9
- const lang_1 = require("../lib/lang");
9
+ const en_1 = require("../lang/en");
10
10
  const yargsUtils_1 = require("../lib/yargsUtils");
11
11
  const command = ['theme', 'themes'];
12
- const describe = (0, lang_1.i18n)('commands.theme.describe');
12
+ const describe = en_1.commands.theme.describe;
13
13
  function themeBuilder(yargs) {
14
14
  yargs
15
15
  .command(preview_1.default)
@@ -26,5 +26,3 @@ const themeCommand = {
26
26
  handler: () => { },
27
27
  };
28
28
  exports.default = themeCommand;
29
- // TODO Remove this legacy export once we've migrated all commands to TS
30
- module.exports = themeCommand;
@@ -9,7 +9,6 @@ const uploadFolder_1 = require("@hubspot/local-dev-lib/cms/uploadFolder");
9
9
  const fileMapper_1 = require("@hubspot/local-dev-lib/fileMapper");
10
10
  const fileMapper_2 = require("@hubspot/local-dev-lib/api/fileMapper");
11
11
  const path_2 = require("@hubspot/local-dev-lib/path");
12
- const logger_1 = require("@hubspot/local-dev-lib/logger");
13
12
  const modules_1 = require("@hubspot/local-dev-lib/cms/modules");
14
13
  const ignoreRules_1 = require("@hubspot/local-dev-lib/ignoreRules");
15
14
  const themes_1 = require("@hubspot/local-dev-lib/cms/themes");
@@ -21,18 +20,17 @@ const promptUtils_1 = require("../lib/prompts/promptUtils");
21
20
  const validation_1 = require("../lib/validation");
22
21
  const usageTracking_1 = require("../lib/usageTracking");
23
22
  const upload_1 = require("../lib/upload");
24
- const lang_1 = require("../lib/lang");
23
+ const en_1 = require("../lang/en");
25
24
  const exitCodes_1 = require("../lib/enums/exitCodes");
26
25
  const yargsUtils_1 = require("../lib/yargsUtils");
26
+ const logger_1 = require("../lib/ui/logger");
27
27
  const command = 'upload [src] [dest]';
28
- const describe = (0, lang_1.i18n)('commands.upload.describe');
28
+ const describe = en_1.commands.upload.describe;
29
29
  function logThemePreview(filePath, accountId) {
30
30
  const previewUrl = (0, themes_1.getThemePreviewUrl)(filePath, accountId);
31
31
  // Only log if we are actually in a theme
32
32
  if (previewUrl) {
33
- logger_1.logger.log((0, lang_1.i18n)('commands.upload.previewUrl', {
34
- previewUrl,
35
- }));
33
+ logger_1.uiLogger.log(en_1.commands.upload.previewUrl(previewUrl));
36
34
  }
37
35
  }
38
36
  async function handler(args) {
@@ -47,7 +45,7 @@ async function handler(args) {
47
45
  let dest = args.dest || uploadPromptAnswers.dest;
48
46
  let absoluteSrcPath = path_1.default.resolve((0, path_2.getCwd)(), src);
49
47
  if (!dest) {
50
- logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.destinationRequired'));
48
+ logger_1.uiLogger.error(en_1.commands.upload.errors.destinationRequired);
51
49
  return;
52
50
  }
53
51
  // Check for theme.json file and determine the root path for the project based on it if it exists
@@ -72,52 +70,37 @@ async function handler(args) {
72
70
  try {
73
71
  stats = fs_1.default.statSync(absoluteSrcPath);
74
72
  if (!stats.isFile() && !stats.isDirectory()) {
75
- logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.invalidPath', {
76
- path: src,
77
- }));
73
+ logger_1.uiLogger.error(en_1.commands.upload.errors.invalidPath(src));
78
74
  return;
79
75
  }
80
76
  }
81
77
  catch (e) {
82
- logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.invalidPath', {
83
- path: src,
84
- }));
78
+ logger_1.uiLogger.error(en_1.commands.upload.errors.invalidPath(src));
85
79
  return;
86
80
  }
87
81
  const normalizedDest = (0, path_2.convertToUnixPath)(dest);
88
82
  (0, usageTracking_1.trackCommandUsage)('upload', { mode: cmsPublishMode, type: stats.isFile() ? 'file' : 'folder' }, derivedAccountId);
89
83
  const srcDestIssues = await (0, modules_1.validateSrcAndDestPaths)({ isLocal: true, path: src }, { isHubSpot: true, path: dest });
90
84
  if (srcDestIssues.length) {
91
- srcDestIssues.forEach(({ message }) => logger_1.logger.error(message));
85
+ srcDestIssues.forEach(({ message }) => logger_1.uiLogger.error(message));
92
86
  process.exit(exitCodes_1.EXIT_CODES.WARNING);
93
87
  }
94
88
  if (stats.isFile()) {
95
89
  if (!(0, path_2.isAllowedExtension)(src) && !convertFields) {
96
- logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.invalidPath', {
97
- path: src,
98
- }));
90
+ logger_1.uiLogger.error(en_1.commands.upload.errors.invalidPath(src));
99
91
  return;
100
92
  }
101
93
  if ((0, ignoreRules_1.shouldIgnoreFile)(absoluteSrcPath)) {
102
- logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.fileIgnored', {
103
- path: src,
104
- }));
94
+ logger_1.uiLogger.error(en_1.commands.upload.errors.fileIgnored(src));
105
95
  return;
106
96
  }
107
97
  (0, fileMapper_2.upload)(derivedAccountId, absoluteSrcPath, normalizedDest, (0, fileMapper_1.getFileMapperQueryValues)(cmsPublishMode))
108
98
  .then(() => {
109
- logger_1.logger.success((0, lang_1.i18n)('commands.upload.success.fileUploaded', {
110
- accountId: derivedAccountId,
111
- dest: normalizedDest,
112
- src,
113
- }));
99
+ logger_1.uiLogger.success(en_1.commands.upload.success.fileUploaded(src, normalizedDest, derivedAccountId));
114
100
  logThemePreview(src, derivedAccountId);
115
101
  })
116
102
  .catch(error => {
117
- logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.uploadFailed', {
118
- dest: normalizedDest,
119
- src,
120
- }));
103
+ logger_1.uiLogger.error(en_1.commands.upload.errors.uploadFailed(src, normalizedDest));
121
104
  (0, index_1.logError)(error, new index_1.ApiErrorContext({
122
105
  accountId: derivedAccountId,
123
106
  request: normalizedDest,
@@ -137,35 +120,22 @@ async function handler(args) {
137
120
  });
138
121
  }
139
122
  else {
140
- logger_1.logger.log((0, lang_1.i18n)('commands.upload.uploading', {
141
- accountId: derivedAccountId,
142
- dest,
143
- src,
144
- }));
123
+ logger_1.uiLogger.log(en_1.commands.upload.uploading(src, dest, derivedAccountId));
145
124
  // Generate the first-pass file list in here, and pass to uploadFolder.
146
125
  const filePaths = await (0, upload_1.getUploadableFileList)(absoluteSrcPath, args.convertFields ?? false);
147
126
  if (args.clean) {
148
127
  // If clean is true, will first delete the dest folder and then upload src. Cleans up files that only exist on HS.
149
128
  let cleanUpload = args.force;
150
129
  if (!args.force) {
151
- cleanUpload = await (0, promptUtils_1.confirmPrompt)((0, lang_1.i18n)('commands.upload.confirmCleanUpload', {
152
- accountId: derivedAccountId,
153
- path: dest,
154
- }), { defaultAnswer: false });
130
+ cleanUpload = await (0, promptUtils_1.confirmPrompt)(en_1.commands.upload.confirmCleanUpload(dest, derivedAccountId), { defaultAnswer: false });
155
131
  }
156
132
  if (cleanUpload) {
157
133
  try {
158
134
  await (0, fileMapper_2.deleteFile)(derivedAccountId, dest);
159
- logger_1.logger.log((0, lang_1.i18n)('commands.upload.cleaning', {
160
- accountId: derivedAccountId,
161
- filePath: dest,
162
- }));
135
+ logger_1.uiLogger.log(en_1.commands.upload.cleaning(dest, derivedAccountId));
163
136
  }
164
137
  catch (error) {
165
- logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.deleteFailed', {
166
- accountId: derivedAccountId,
167
- path: dest,
168
- }));
138
+ logger_1.uiLogger.error(en_1.commands.upload.errors.deleteFailed(dest, derivedAccountId));
169
139
  }
170
140
  }
171
141
  }
@@ -177,23 +147,16 @@ async function handler(args) {
177
147
  }, filePaths)
178
148
  .then(results => {
179
149
  if (!(0, uploadFolder_1.hasUploadErrors)(results)) {
180
- logger_1.logger.success((0, lang_1.i18n)('commands.upload.success.uploadComplete', {
181
- dest,
182
- }));
150
+ logger_1.uiLogger.success(en_1.commands.upload.success.uploadComplete(dest));
183
151
  logThemePreview(src, derivedAccountId);
184
152
  }
185
153
  else {
186
- logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.someFilesFailed', {
187
- dest,
188
- }));
154
+ logger_1.uiLogger.error(en_1.commands.upload.errors.someFilesFailed(dest));
189
155
  process.exit(exitCodes_1.EXIT_CODES.WARNING);
190
156
  }
191
157
  })
192
158
  .catch(error => {
193
- logger_1.logger.error((0, lang_1.i18n)('commands.upload.errors.uploadFailed', {
194
- dest,
195
- src,
196
- }));
159
+ logger_1.uiLogger.error(en_1.commands.upload.errors.uploadFailed(src, dest));
197
160
  (0, index_1.logError)(error, {
198
161
  accountId: derivedAccountId,
199
162
  });
@@ -203,36 +166,36 @@ async function handler(args) {
203
166
  }
204
167
  function uploadBuilder(yargs) {
205
168
  yargs.positional('src', {
206
- describe: (0, lang_1.i18n)('commands.upload.positionals.src.describe'),
169
+ describe: en_1.commands.upload.positionals.src,
207
170
  type: 'string',
208
171
  });
209
172
  yargs.positional('dest', {
210
- describe: (0, lang_1.i18n)('commands.upload.positionals.dest.describe'),
173
+ describe: en_1.commands.upload.positionals.dest,
211
174
  type: 'string',
212
175
  });
213
176
  yargs.option('fieldOptions', {
214
- describe: (0, lang_1.i18n)('commands.upload.options.options.describe'),
177
+ describe: en_1.commands.upload.options.options,
215
178
  type: 'array',
216
179
  default: [''],
217
180
  hidden: true,
218
181
  });
219
182
  yargs.option('saveOutput', {
220
- describe: (0, lang_1.i18n)('commands.upload.options.saveOutput.describe'),
183
+ describe: en_1.commands.upload.options.saveOutput,
221
184
  type: 'boolean',
222
185
  default: false,
223
186
  });
224
187
  yargs.option('convertFields', {
225
- describe: (0, lang_1.i18n)('commands.upload.options.convertFields.describe'),
188
+ describe: en_1.commands.upload.options.convertFields,
226
189
  type: 'boolean',
227
190
  default: false,
228
191
  });
229
192
  yargs.option('clean', {
230
- describe: (0, lang_1.i18n)('commands.upload.options.clean.describe'),
193
+ describe: en_1.commands.upload.options.clean,
231
194
  type: 'boolean',
232
195
  default: false,
233
196
  });
234
197
  yargs.option('force', {
235
- describe: (0, lang_1.i18n)('commands.upload.options.force.describe'),
198
+ describe: en_1.commands.upload.options.force,
236
199
  type: 'boolean',
237
200
  default: false,
238
201
  });
@@ -252,5 +215,3 @@ const uploadCommand = {
252
215
  builder,
253
216
  };
254
217
  exports.default = uploadCommand;
255
- // TODO remove this after cli.ts is ported to TS
256
- module.exports = uploadCommand;
package/commands/watch.js CHANGED
@@ -7,18 +7,18 @@ const fs_1 = __importDefault(require("fs"));
7
7
  const path_1 = __importDefault(require("path"));
8
8
  const watch_1 = require("@hubspot/local-dev-lib/cms/watch");
9
9
  const path_2 = require("@hubspot/local-dev-lib/path");
10
- const logger_1 = require("@hubspot/local-dev-lib/logger");
11
10
  const commonOpts_1 = require("../lib/commonOpts");
12
11
  const uploadPrompt_1 = require("../lib/prompts/uploadPrompt");
13
12
  const validation_1 = require("../lib/validation");
14
13
  const usageTracking_1 = require("../lib/usageTracking");
15
- const lang_1 = require("../lib/lang");
14
+ const en_1 = require("../lang/en");
16
15
  const upload_1 = require("../lib/upload");
17
16
  const errorHandlers_1 = require("../lib/errorHandlers");
18
17
  const exitCodes_1 = require("../lib/enums/exitCodes");
19
18
  const yargsUtils_1 = require("../lib/yargsUtils");
19
+ const logger_1 = require("../lib/ui/logger");
20
20
  const command = 'watch [src] [dest]';
21
- const describe = (0, lang_1.i18n)(`commands.watch.describe`);
21
+ const describe = en_1.commands.watch.describe;
22
22
  const handler = async (args) => {
23
23
  const { remove, initialUpload, disableInitial, notify, derivedAccountId } = args;
24
24
  if (!(0, validation_1.validateCmsPublishMode)(args)) {
@@ -32,50 +32,38 @@ const handler = async (args) => {
32
32
  try {
33
33
  const stats = fs_1.default.statSync(absoluteSrcPath);
34
34
  if (!stats.isDirectory()) {
35
- logger_1.logger.log((0, lang_1.i18n)(`commands.watch.errors.invalidPath`, {
36
- path: src,
37
- }));
35
+ logger_1.uiLogger.log(en_1.commands.watch.errors.invalidPath(src));
38
36
  return;
39
37
  }
40
38
  }
41
39
  catch (e) {
42
- logger_1.logger.log((0, lang_1.i18n)(`commands.watch.errors.invalidPath`, {
43
- path: src,
44
- }));
40
+ logger_1.uiLogger.log(en_1.commands.watch.errors.invalidPath(src));
45
41
  return;
46
42
  }
47
43
  if (!dest) {
48
- logger_1.logger.log((0, lang_1.i18n)(`commands.watch.errors.destinationRequired`));
44
+ logger_1.uiLogger.log(en_1.commands.watch.errors.destinationRequired);
49
45
  return;
50
46
  }
51
47
  let filesToUpload = [];
52
48
  if (disableInitial) {
53
- logger_1.logger.info((0, lang_1.i18n)(`commands.watch.warnings.disableInitial`));
49
+ logger_1.uiLogger.info(en_1.commands.watch.warnings.disableInitial);
54
50
  }
55
51
  else if (!initialUpload) {
56
- logger_1.logger.info((0, lang_1.i18n)(`commands.watch.warnings.notUploaded`, { path: src }));
57
- logger_1.logger.info((0, lang_1.i18n)(`commands.watch.warnings.initialUpload`));
52
+ logger_1.uiLogger.info(en_1.commands.watch.warnings.notUploaded(src));
53
+ logger_1.uiLogger.info(en_1.commands.watch.warnings.initialUpload);
58
54
  }
59
55
  if (initialUpload) {
60
56
  filesToUpload = await (0, upload_1.getUploadableFileList)(absoluteSrcPath, args.convertFields);
61
57
  }
62
58
  (0, usageTracking_1.trackCommandUsage)('watch', { mode: cmsPublishMode }, derivedAccountId);
63
59
  const onUploadFolderError = (error) => {
64
- logger_1.logger.error((0, lang_1.i18n)(`commands.watch.errors.folderFailed`, {
65
- src,
66
- dest,
67
- accountId: derivedAccountId,
68
- }));
60
+ logger_1.uiLogger.error(en_1.commands.watch.errors.folderFailed(src, dest, derivedAccountId));
69
61
  (0, errorHandlers_1.logError)(error, {
70
62
  accountId: derivedAccountId,
71
63
  });
72
64
  };
73
65
  const onUploadFileError = (file, destPath, accountId) => (error) => {
74
- logger_1.logger.error((0, lang_1.i18n)(`commands.watch.errors.fileFailed`, {
75
- file,
76
- dest: destPath,
77
- accountId,
78
- }));
66
+ logger_1.uiLogger.error(en_1.commands.watch.errors.fileFailed(file, destPath, accountId));
79
67
  (0, errorHandlers_1.logError)(error, new errorHandlers_1.ApiErrorContext({
80
68
  accountId,
81
69
  request: destPath,
@@ -93,47 +81,47 @@ const handler = async (args) => {
93
81
  };
94
82
  function watchBuilder(yargs) {
95
83
  yargs.positional('src', {
96
- describe: (0, lang_1.i18n)(`commands.watch.positionals.src.describe`),
84
+ describe: en_1.commands.watch.positionals.src,
97
85
  type: 'string',
98
86
  });
99
87
  yargs.positional('dest', {
100
- describe: (0, lang_1.i18n)(`commands.watch.positionals.dest.describe`),
88
+ describe: en_1.commands.watch.positionals.dest,
101
89
  type: 'string',
102
90
  });
103
91
  yargs.option('fieldOptions', {
104
- describe: (0, lang_1.i18n)(`commands.watch.options.options.describe`),
92
+ describe: en_1.commands.watch.options.options,
105
93
  type: 'array',
106
94
  default: [''],
107
95
  hidden: true,
108
96
  });
109
97
  yargs.option('remove', {
110
98
  alias: 'r',
111
- describe: (0, lang_1.i18n)(`commands.watch.options.remove.describe`),
99
+ describe: en_1.commands.watch.options.remove,
112
100
  type: 'boolean',
113
101
  });
114
102
  yargs.option('initial-upload', {
115
103
  alias: 'i',
116
- describe: (0, lang_1.i18n)(`commands.watch.options.initialUpload.describe`),
104
+ describe: en_1.commands.watch.options.initialUpload,
117
105
  type: 'boolean',
118
106
  });
119
107
  yargs.option('disable-initial', {
120
- describe: (0, lang_1.i18n)(`commands.watch.options.disableInitial.describe`),
108
+ describe: en_1.commands.watch.options.disableInitial,
121
109
  type: 'boolean',
122
110
  hidden: true,
123
111
  });
124
112
  yargs.option('notify', {
125
113
  alias: 'n',
126
- describe: (0, lang_1.i18n)(`commands.watch.options.notify.describe`),
114
+ describe: en_1.commands.watch.options.notify,
127
115
  type: 'string',
128
116
  requiresArg: true,
129
117
  });
130
118
  yargs.option('convertFields', {
131
- describe: (0, lang_1.i18n)(`commands.watch.options.convertFields.describe`),
119
+ describe: en_1.commands.watch.options.convertFields,
132
120
  type: 'boolean',
133
121
  default: false,
134
122
  });
135
123
  yargs.option('saveOutput', {
136
- describe: (0, lang_1.i18n)(`commands.watch.options.saveOutput.describe`),
124
+ describe: en_1.commands.watch.options.saveOutput,
137
125
  type: 'boolean',
138
126
  default: false,
139
127
  });