@hubspot/cli 8.0.11-experimental.0 → 8.0.11-experimental.2

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 (595) hide show
  1. package/api/migrate.js +3 -3
  2. package/bin/cli.js +5 -0
  3. package/commands/account/auth.js +12 -22
  4. package/commands/account/clean.js +5 -6
  5. package/commands/account/createOverride.js +7 -7
  6. package/commands/account/info.js +2 -1
  7. package/commands/account/list.js +3 -5
  8. package/commands/account/remove.js +2 -3
  9. package/commands/account/removeOverride.js +8 -10
  10. package/commands/account/rename.js +5 -6
  11. package/commands/account/use.js +8 -19
  12. package/commands/api.d.ts +10 -0
  13. package/commands/api.js +164 -0
  14. package/commands/app/migrate.js +12 -12
  15. package/commands/app/secret/add.js +6 -7
  16. package/commands/app/secret/delete.js +9 -10
  17. package/commands/app/secret/list.js +6 -7
  18. package/commands/app/secret/update.js +8 -9
  19. package/commands/auth.js +12 -12
  20. package/commands/cms/app/create.js +9 -5
  21. package/commands/cms/convertFields.js +8 -8
  22. package/commands/cms/delete.js +2 -3
  23. package/commands/cms/fetch.js +7 -7
  24. package/commands/cms/function/create.js +9 -5
  25. package/commands/cms/function/deploy.js +2 -3
  26. package/commands/cms/function/list.js +11 -7
  27. package/commands/cms/function/logs.js +17 -23
  28. package/commands/cms/function/server.js +2 -3
  29. package/commands/cms/getReactModule.js +7 -8
  30. package/commands/cms/lighthouseScore.js +25 -24
  31. package/commands/cms/lint.js +4 -5
  32. package/commands/cms/list.js +5 -6
  33. package/commands/cms/module/create.js +9 -5
  34. package/commands/cms/module/marketplace-validate.js +7 -8
  35. package/commands/cms/mv.js +2 -3
  36. package/commands/cms/template/create.js +10 -6
  37. package/commands/cms/theme/create.js +5 -5
  38. package/commands/cms/theme/generate-selectors.js +5 -4
  39. package/commands/cms/theme/marketplace-validate.js +8 -9
  40. package/commands/cms/theme/preview.js +16 -8
  41. package/commands/cms/upload.js +15 -12
  42. package/commands/cms/watch.js +5 -5
  43. package/commands/cms/webpack/create.js +5 -5
  44. package/commands/completion.js +3 -5
  45. package/commands/config/migrate.js +6 -7
  46. package/commands/config/set.js +5 -6
  47. package/commands/customObject/create.js +4 -5
  48. package/commands/customObject/createSchema.js +4 -5
  49. package/commands/customObject/deleteSchema.js +4 -5
  50. package/commands/customObject/fetchAllSchemas.js +2 -3
  51. package/commands/customObject/fetchSchema.js +2 -3
  52. package/commands/customObject/listSchemas.js +2 -3
  53. package/commands/customObject/updateSchema.js +4 -5
  54. package/commands/doctor.js +8 -8
  55. package/commands/feedback.js +6 -4
  56. package/commands/filemanager/fetch.js +5 -6
  57. package/commands/filemanager/upload.js +5 -5
  58. package/commands/getStarted.js +16 -18
  59. package/commands/hubdb/clear.js +5 -6
  60. package/commands/hubdb/create.js +4 -5
  61. package/commands/hubdb/delete.js +8 -9
  62. package/commands/hubdb/fetch.js +5 -6
  63. package/commands/hubdb/list.js +16 -14
  64. package/commands/init.js +14 -17
  65. package/commands/mcp/setup.js +5 -6
  66. package/commands/mcp/start.js +2 -3
  67. package/commands/open.js +4 -5
  68. package/commands/project/add.js +13 -8
  69. package/commands/project/create.js +20 -17
  70. package/commands/project/delete.d.ts +7 -0
  71. package/commands/project/delete.js +74 -0
  72. package/commands/project/deploy.js +39 -36
  73. package/commands/project/dev/deprecatedFlow.js +42 -15
  74. package/commands/project/dev/index.d.ts +3 -3
  75. package/commands/project/dev/index.js +29 -34
  76. package/commands/project/dev/unifiedFlow.js +37 -14
  77. package/commands/project/download.js +10 -11
  78. package/commands/project/info.js +19 -19
  79. package/commands/project/installDeps.js +9 -6
  80. package/commands/project/lint.js +11 -8
  81. package/commands/project/list.js +14 -14
  82. package/commands/project/listBuilds.js +8 -6
  83. package/commands/project/logs.js +5 -6
  84. package/commands/project/migrate.js +13 -13
  85. package/commands/project/open.js +5 -6
  86. package/commands/project/profile/add.js +12 -8
  87. package/commands/project/profile/delete.js +15 -11
  88. package/commands/project/updateDeps.js +9 -6
  89. package/commands/project/upload.js +33 -19
  90. package/commands/project/validate.js +12 -12
  91. package/commands/project/watch.js +22 -22
  92. package/commands/project.js +8 -3
  93. package/commands/sandbox/create.js +15 -15
  94. package/commands/sandbox/delete.js +13 -14
  95. package/commands/secret/addSecret.js +6 -7
  96. package/commands/secret/deleteSecret.js +5 -6
  97. package/commands/secret/listSecret.js +2 -3
  98. package/commands/secret/updateSecret.js +4 -5
  99. package/commands/testAccount/create.d.ts +1 -1
  100. package/commands/testAccount/create.js +24 -20
  101. package/commands/testAccount/createConfig.js +7 -8
  102. package/commands/testAccount/delete.js +27 -18
  103. package/commands/testAccount/importData.js +6 -7
  104. package/commands/upgrade.js +9 -10
  105. package/lang/en.d.ts +95 -7
  106. package/lang/en.js +98 -13
  107. package/lib/accountAuth.js +2 -2
  108. package/lib/app/migrate.js +7 -0
  109. package/lib/buildAccount.js +3 -3
  110. package/lib/constants.d.ts +0 -1
  111. package/lib/constants.js +0 -1
  112. package/lib/doctor/Diagnosis.js +5 -5
  113. package/lib/doctor/Doctor.js +2 -2
  114. package/lib/errorHandlers/index.js +4 -3
  115. package/lib/errorHandlers/suppressError.js +4 -0
  116. package/lib/errors/PromptExitError.d.ts +4 -2
  117. package/lib/errors/PromptExitError.js +3 -0
  118. package/lib/getStartedV2Actions.js +2 -2
  119. package/lib/hasFeature.js +1 -2
  120. package/lib/middleware/autoUpdateMiddleware.js +6 -3
  121. package/lib/process.d.ts +1 -1
  122. package/lib/process.js +10 -3
  123. package/lib/projects/ProjectLogsManager.js +2 -2
  124. package/lib/projects/create/index.js +2 -2
  125. package/lib/projects/create/legacy.js +2 -2
  126. package/lib/projects/create/v2.js +3 -4
  127. package/lib/projects/delete.d.ts +13 -0
  128. package/lib/projects/delete.js +193 -0
  129. package/lib/projects/deploy.d.ts +1 -1
  130. package/lib/projects/deploy.js +2 -2
  131. package/lib/projects/localDev/AppDevModeInterface.js +11 -11
  132. package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +3 -1
  133. package/lib/projects/localDev/DevServerManager_DEPRECATED.js +2 -2
  134. package/lib/projects/localDev/DevSessionManager.d.ts +6 -3
  135. package/lib/projects/localDev/DevSessionManager.js +31 -19
  136. package/lib/projects/localDev/LocalDevManager_DEPRECATED.d.ts +3 -0
  137. package/lib/projects/localDev/LocalDevManager_DEPRECATED.js +16 -12
  138. package/lib/projects/localDev/LocalDevProcess.js +6 -5
  139. package/lib/projects/localDev/LocalDevState.d.ts +3 -2
  140. package/lib/projects/localDev/LocalDevState.js +3 -1
  141. package/lib/projects/localDev/helpers/account.d.ts +4 -3
  142. package/lib/projects/localDev/helpers/account.js +16 -19
  143. package/lib/projects/localDev/helpers/process.d.ts +1 -1
  144. package/lib/projects/localDev/helpers/process.js +4 -10
  145. package/lib/projects/localDev/helpers/project.d.ts +4 -3
  146. package/lib/projects/localDev/helpers/project.js +31 -15
  147. package/lib/projects/projectInfo.d.ts +3 -20
  148. package/lib/projects/projectInfo.js +32 -54
  149. package/lib/projects/projectProfiles.d.ts +1 -2
  150. package/lib/projects/projectProfiles.js +5 -17
  151. package/lib/projects/upload.js +22 -3
  152. package/lib/projects/workspaces.d.ts +42 -0
  153. package/lib/projects/workspaces.js +350 -0
  154. package/lib/prompts/createApiSamplePrompt.js +4 -0
  155. package/lib/prompts/projectProfilePrompt.d.ts +2 -0
  156. package/lib/prompts/projectProfilePrompt.js +46 -0
  157. package/lib/prompts/promptUtils.js +3 -2
  158. package/lib/prompts/selectHubDBTablePrompt.js +2 -2
  159. package/lib/prompts/selectPublicAppForMigrationPrompt.js +2 -2
  160. package/lib/theme/cmsDevServerProcess.d.ts +2 -0
  161. package/lib/theme/cmsDevServerProcess.js +8 -7
  162. package/lib/ui/SpinniesManager.d.ts +1 -0
  163. package/lib/ui/SpinniesManager.js +20 -6
  164. package/lib/ui/spinniesUtils.d.ts +0 -1
  165. package/lib/ui/spinniesUtils.js +6 -16
  166. package/lib/usageTracking.d.ts +3 -4
  167. package/lib/yargs/makeYargsBuilder.d.ts +13 -0
  168. package/lib/yargs/makeYargsBuilder.js +33 -0
  169. package/lib/yargs/makeYargsHandlerWithUsageTracking.d.ts +3 -0
  170. package/lib/yargs/makeYargsHandlerWithUsageTracking.js +95 -0
  171. package/lib/yargs/strictEnforceBoolean.d.ts +1 -0
  172. package/lib/yargs/strictEnforceBoolean.js +13 -0
  173. package/lib/yargsUtils.d.ts +3 -16
  174. package/lib/yargsUtils.js +3 -48
  175. package/mcp-server/Tool.d.ts +15 -0
  176. package/mcp-server/Tool.js +53 -0
  177. package/mcp-server/server.js +5 -3
  178. package/mcp-server/tools/cms/HsCreateFunctionTool.d.ts +4 -2
  179. package/mcp-server/tools/cms/HsCreateFunctionTool.js +8 -6
  180. package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +4 -2
  181. package/mcp-server/tools/cms/HsCreateModuleTool.js +8 -6
  182. package/mcp-server/tools/cms/HsCreateTemplateTool.d.ts +5 -3
  183. package/mcp-server/tools/cms/HsCreateTemplateTool.js +8 -6
  184. package/mcp-server/tools/cms/HsFunctionLogsTool.d.ts +4 -2
  185. package/mcp-server/tools/cms/HsFunctionLogsTool.js +8 -6
  186. package/mcp-server/tools/cms/HsListFunctionsTool.d.ts +4 -2
  187. package/mcp-server/tools/cms/HsListFunctionsTool.js +8 -6
  188. package/mcp-server/tools/cms/HsListTool.d.ts +4 -2
  189. package/mcp-server/tools/cms/HsListTool.js +8 -6
  190. package/mcp-server/tools/index.d.ts +3 -2
  191. package/mcp-server/tools/index.js +22 -22
  192. package/mcp-server/tools/project/AddFeatureToProjectTool.d.ts +6 -4
  193. package/mcp-server/tools/project/AddFeatureToProjectTool.js +8 -6
  194. package/mcp-server/tools/project/CreateProjectTool.d.ts +6 -4
  195. package/mcp-server/tools/project/CreateProjectTool.js +9 -7
  196. package/mcp-server/tools/project/CreateTestAccountTool.d.ts +4 -2
  197. package/mcp-server/tools/project/CreateTestAccountTool.js +20 -8
  198. package/mcp-server/tools/project/DeployProjectTool.d.ts +4 -2
  199. package/mcp-server/tools/project/DeployProjectTool.js +4 -6
  200. package/mcp-server/tools/project/DocFetchTool.d.ts +4 -2
  201. package/mcp-server/tools/project/DocFetchTool.js +8 -6
  202. package/mcp-server/tools/project/DocsSearchTool.d.ts +9 -3
  203. package/mcp-server/tools/project/DocsSearchTool.js +32 -9
  204. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.d.ts +4 -2
  205. package/mcp-server/tools/project/GetApiUsagePatternsByAppIdTool.js +8 -6
  206. package/mcp-server/tools/project/GetApplicationInfoTool.d.ts +4 -2
  207. package/mcp-server/tools/project/GetApplicationInfoTool.js +8 -6
  208. package/mcp-server/tools/project/GetBuildLogsTool.d.ts +4 -2
  209. package/mcp-server/tools/project/GetBuildLogsTool.js +8 -6
  210. package/mcp-server/tools/project/GetBuildStatusTool.d.ts +4 -2
  211. package/mcp-server/tools/project/GetBuildStatusTool.js +8 -6
  212. package/mcp-server/tools/project/GetConfigValuesTool.d.ts +4 -2
  213. package/mcp-server/tools/project/GetConfigValuesTool.js +12 -7
  214. package/mcp-server/tools/project/GuidedWalkthroughTool.d.ts +4 -2
  215. package/mcp-server/tools/project/GuidedWalkthroughTool.js +4 -6
  216. package/mcp-server/tools/project/UploadProjectTools.d.ts +4 -2
  217. package/mcp-server/tools/project/UploadProjectTools.js +9 -7
  218. package/mcp-server/tools/project/ValidateProjectTool.d.ts +4 -2
  219. package/mcp-server/tools/project/ValidateProjectTool.js +8 -6
  220. package/mcp-server/tools/project/constants.d.ts +2 -2
  221. package/mcp-server/types.d.ts +0 -7
  222. package/mcp-server/types.js +1 -13
  223. package/mcp-server/utils/logger.d.ts +10 -0
  224. package/mcp-server/utils/logger.js +29 -0
  225. package/mcp-server/utils/toolUsageTracking.js +0 -2
  226. package/package.json +12 -7
  227. package/types/LocalDev.d.ts +5 -0
  228. package/types/Projects.d.ts +19 -0
  229. package/types/Yargs.d.ts +18 -1
  230. package/api/__tests__/migrate.test.d.ts +0 -1
  231. package/api/__tests__/migrate.test.js +0 -199
  232. package/commands/__tests__/account.test.d.ts +0 -1
  233. package/commands/__tests__/account.test.js +0 -69
  234. package/commands/__tests__/auth.test.d.ts +0 -1
  235. package/commands/__tests__/auth.test.js +0 -43
  236. package/commands/__tests__/cms.test.d.ts +0 -1
  237. package/commands/__tests__/cms.test.js +0 -87
  238. package/commands/__tests__/config.test.d.ts +0 -1
  239. package/commands/__tests__/config.test.js +0 -44
  240. package/commands/__tests__/customObject.test.d.ts +0 -1
  241. package/commands/__tests__/customObject.test.js +0 -68
  242. package/commands/__tests__/doctor.test.d.ts +0 -1
  243. package/commands/__tests__/doctor.test.js +0 -132
  244. package/commands/__tests__/feedback.test.d.ts +0 -1
  245. package/commands/__tests__/feedback.test.js +0 -24
  246. package/commands/__tests__/filemanager.test.d.ts +0 -1
  247. package/commands/__tests__/filemanager.test.js +0 -45
  248. package/commands/__tests__/getStarted.test.d.ts +0 -1
  249. package/commands/__tests__/getStarted.test.js +0 -173
  250. package/commands/__tests__/hubdb.test.d.ts +0 -1
  251. package/commands/__tests__/hubdb.test.js +0 -50
  252. package/commands/__tests__/init.test.d.ts +0 -1
  253. package/commands/__tests__/init.test.js +0 -42
  254. package/commands/__tests__/mcp.test.d.ts +0 -1
  255. package/commands/__tests__/mcp.test.js +0 -46
  256. package/commands/__tests__/open.test.d.ts +0 -1
  257. package/commands/__tests__/open.test.js +0 -58
  258. package/commands/__tests__/project.test.d.ts +0 -1
  259. package/commands/__tests__/project.test.js +0 -125
  260. package/commands/__tests__/sandbox.test.d.ts +0 -1
  261. package/commands/__tests__/sandbox.test.js +0 -44
  262. package/commands/__tests__/secret.test.d.ts +0 -1
  263. package/commands/__tests__/secret.test.js +0 -49
  264. package/commands/__tests__/testAccount.test.d.ts +0 -1
  265. package/commands/__tests__/testAccount.test.js +0 -57
  266. package/commands/__tests__/upgrade.test.d.ts +0 -1
  267. package/commands/__tests__/upgrade.test.js +0 -309
  268. package/commands/account/__tests__/auth.test.d.ts +0 -1
  269. package/commands/account/__tests__/auth.test.js +0 -206
  270. package/commands/account/__tests__/clean.test.d.ts +0 -1
  271. package/commands/account/__tests__/clean.test.js +0 -28
  272. package/commands/account/__tests__/createOverride.test.d.ts +0 -1
  273. package/commands/account/__tests__/createOverride.test.js +0 -32
  274. package/commands/account/__tests__/info.test.d.ts +0 -1
  275. package/commands/account/__tests__/info.test.js +0 -28
  276. package/commands/account/__tests__/list.test.d.ts +0 -1
  277. package/commands/account/__tests__/list.test.js +0 -153
  278. package/commands/account/__tests__/remove.test.d.ts +0 -1
  279. package/commands/account/__tests__/remove.test.js +0 -36
  280. package/commands/account/__tests__/removeOverride.d.ts +0 -1
  281. package/commands/account/__tests__/removeOverride.js +0 -25
  282. package/commands/account/__tests__/rename.test.d.ts +0 -1
  283. package/commands/account/__tests__/rename.test.js +0 -82
  284. package/commands/account/__tests__/use.test.d.ts +0 -1
  285. package/commands/account/__tests__/use.test.js +0 -170
  286. package/commands/app/__tests__/migrate.test.d.ts +0 -1
  287. package/commands/app/__tests__/migrate.test.js +0 -111
  288. package/commands/app/secret/__tests__/add.test.d.ts +0 -1
  289. package/commands/app/secret/__tests__/add.test.js +0 -140
  290. package/commands/app/secret/__tests__/delete.test.d.ts +0 -1
  291. package/commands/app/secret/__tests__/delete.test.js +0 -28
  292. package/commands/app/secret/__tests__/list.test.d.ts +0 -1
  293. package/commands/app/secret/__tests__/list.test.js +0 -25
  294. package/commands/app/secret/__tests__/update.test.d.ts +0 -1
  295. package/commands/app/secret/__tests__/update.test.js +0 -28
  296. package/commands/cms/__tests__/delete.test.d.ts +0 -1
  297. package/commands/cms/__tests__/delete.test.js +0 -39
  298. package/commands/cms/__tests__/fetch.test.d.ts +0 -1
  299. package/commands/cms/__tests__/fetch.test.js +0 -156
  300. package/commands/cms/__tests__/function.test.d.ts +0 -1
  301. package/commands/cms/__tests__/function.test.js +0 -50
  302. package/commands/cms/__tests__/lint.test.d.ts +0 -1
  303. package/commands/cms/__tests__/lint.test.js +0 -33
  304. package/commands/cms/__tests__/list.test.d.ts +0 -1
  305. package/commands/cms/__tests__/list.test.js +0 -42
  306. package/commands/cms/__tests__/module.test.d.ts +0 -1
  307. package/commands/cms/__tests__/module.test.js +0 -45
  308. package/commands/cms/__tests__/mv.test.d.ts +0 -1
  309. package/commands/cms/__tests__/mv.test.js +0 -46
  310. package/commands/cms/__tests__/theme.test.d.ts +0 -1
  311. package/commands/cms/__tests__/theme.test.js +0 -54
  312. package/commands/cms/__tests__/upload.test.d.ts +0 -1
  313. package/commands/cms/__tests__/upload.test.js +0 -312
  314. package/commands/cms/__tests__/watch.test.d.ts +0 -1
  315. package/commands/cms/__tests__/watch.test.js +0 -204
  316. package/commands/cms/function/__tests__/logs.test.d.ts +0 -1
  317. package/commands/cms/function/__tests__/logs.test.js +0 -70
  318. package/commands/cms/theme/__tests__/generate-selectors.test.d.ts +0 -1
  319. package/commands/cms/theme/__tests__/generate-selectors.test.js +0 -28
  320. package/commands/cms/theme/__tests__/marketplace-validate.test.d.ts +0 -1
  321. package/commands/cms/theme/__tests__/marketplace-validate.test.js +0 -36
  322. package/commands/cms/theme/__tests__/preview.test.d.ts +0 -1
  323. package/commands/cms/theme/__tests__/preview.test.js +0 -54
  324. package/commands/customObject/__tests__/create.test.d.ts +0 -1
  325. package/commands/customObject/__tests__/create.test.js +0 -40
  326. package/commands/customObject/__tests__/createSchema.test.d.ts +0 -1
  327. package/commands/customObject/__tests__/createSchema.test.js +0 -28
  328. package/commands/customObject/__tests__/deleteSchema.test.d.ts +0 -1
  329. package/commands/customObject/__tests__/deleteSchema.test.js +0 -42
  330. package/commands/customObject/__tests__/fetch-all-schemas.test.d.ts +0 -1
  331. package/commands/customObject/__tests__/fetch-all-schemas.test.js +0 -41
  332. package/commands/customObject/__tests__/fetchSchema.test.d.ts +0 -1
  333. package/commands/customObject/__tests__/fetchSchema.test.js +0 -45
  334. package/commands/customObject/__tests__/listSchemas.test.d.ts +0 -1
  335. package/commands/customObject/__tests__/listSchemas.test.js +0 -29
  336. package/commands/customObject/__tests__/updateSchema.test.d.ts +0 -1
  337. package/commands/customObject/__tests__/updateSchema.test.js +0 -40
  338. package/commands/filemanager/__tests__/fetch.test.d.ts +0 -1
  339. package/commands/filemanager/__tests__/fetch.test.js +0 -32
  340. package/commands/filemanager/__tests__/upload.test.d.ts +0 -1
  341. package/commands/filemanager/__tests__/upload.test.js +0 -191
  342. package/commands/hubdb/__tests__/clear.test.d.ts +0 -1
  343. package/commands/hubdb/__tests__/clear.test.js +0 -28
  344. package/commands/hubdb/__tests__/create.test.d.ts +0 -1
  345. package/commands/hubdb/__tests__/create.test.js +0 -28
  346. package/commands/hubdb/__tests__/delete.test.d.ts +0 -1
  347. package/commands/hubdb/__tests__/delete.test.js +0 -28
  348. package/commands/hubdb/__tests__/fetch.test.d.ts +0 -1
  349. package/commands/hubdb/__tests__/fetch.test.js +0 -28
  350. package/commands/hubdb/__tests__/list.test.d.ts +0 -1
  351. package/commands/hubdb/__tests__/list.test.js +0 -88
  352. package/commands/mcp/__tests__/setup.test.d.ts +0 -1
  353. package/commands/mcp/__tests__/setup.test.js +0 -26
  354. package/commands/mcp/__tests__/start.test.d.ts +0 -1
  355. package/commands/mcp/__tests__/start.test.js +0 -144
  356. package/commands/project/__tests__/add.test.d.ts +0 -1
  357. package/commands/project/__tests__/add.test.js +0 -107
  358. package/commands/project/__tests__/create.test.d.ts +0 -1
  359. package/commands/project/__tests__/create.test.js +0 -97
  360. package/commands/project/__tests__/deploy.test.d.ts +0 -1
  361. package/commands/project/__tests__/deploy.test.js +0 -307
  362. package/commands/project/__tests__/dev.test.d.ts +0 -1
  363. package/commands/project/__tests__/dev.test.js +0 -273
  364. package/commands/project/__tests__/devUnifiedFlow.test.d.ts +0 -1
  365. package/commands/project/__tests__/devUnifiedFlow.test.js +0 -434
  366. package/commands/project/__tests__/download.test.d.ts +0 -1
  367. package/commands/project/__tests__/download.test.js +0 -39
  368. package/commands/project/__tests__/info.test.d.ts +0 -1
  369. package/commands/project/__tests__/info.test.js +0 -145
  370. package/commands/project/__tests__/installDeps.test.d.ts +0 -1
  371. package/commands/project/__tests__/installDeps.test.js +0 -140
  372. package/commands/project/__tests__/lint.test.d.ts +0 -1
  373. package/commands/project/__tests__/lint.test.js +0 -704
  374. package/commands/project/__tests__/list.test.d.ts +0 -1
  375. package/commands/project/__tests__/list.test.js +0 -31
  376. package/commands/project/__tests__/listBuilds.test.d.ts +0 -1
  377. package/commands/project/__tests__/listBuilds.test.js +0 -38
  378. package/commands/project/__tests__/logs.test.d.ts +0 -1
  379. package/commands/project/__tests__/logs.test.js +0 -202
  380. package/commands/project/__tests__/migrate.test.d.ts +0 -1
  381. package/commands/project/__tests__/migrate.test.js +0 -106
  382. package/commands/project/__tests__/open.test.d.ts +0 -1
  383. package/commands/project/__tests__/open.test.js +0 -39
  384. package/commands/project/__tests__/profile.test.d.ts +0 -1
  385. package/commands/project/__tests__/profile.test.js +0 -42
  386. package/commands/project/__tests__/updateDeps.test.d.ts +0 -1
  387. package/commands/project/__tests__/updateDeps.test.js +0 -140
  388. package/commands/project/__tests__/upload.test.d.ts +0 -1
  389. package/commands/project/__tests__/upload.test.js +0 -234
  390. package/commands/project/__tests__/validate.test.d.ts +0 -1
  391. package/commands/project/__tests__/validate.test.js +0 -381
  392. package/commands/project/__tests__/watch.test.d.ts +0 -1
  393. package/commands/project/__tests__/watch.test.js +0 -35
  394. package/commands/sandbox/__tests__/create.test.d.ts +0 -1
  395. package/commands/sandbox/__tests__/create.test.js +0 -198
  396. package/commands/sandbox/__tests__/delete.test.d.ts +0 -1
  397. package/commands/sandbox/__tests__/delete.test.js +0 -31
  398. package/commands/secret/__tests__/addSecret.test.d.ts +0 -1
  399. package/commands/secret/__tests__/addSecret.test.js +0 -162
  400. package/commands/secret/__tests__/deleteSecret.test.d.ts +0 -1
  401. package/commands/secret/__tests__/deleteSecret.test.js +0 -41
  402. package/commands/secret/__tests__/listSecret.test.d.ts +0 -1
  403. package/commands/secret/__tests__/listSecret.test.js +0 -29
  404. package/commands/secret/__tests__/updateSecret.test.d.ts +0 -1
  405. package/commands/secret/__tests__/updateSecret.test.js +0 -29
  406. package/commands/testAccount/__tests__/create.test.d.ts +0 -1
  407. package/commands/testAccount/__tests__/create.test.js +0 -106
  408. package/commands/testAccount/__tests__/createConfig.test.d.ts +0 -1
  409. package/commands/testAccount/__tests__/createConfig.test.js +0 -32
  410. package/commands/testAccount/__tests__/delete.test.d.ts +0 -1
  411. package/commands/testAccount/__tests__/delete.test.js +0 -29
  412. package/commands/testAccount/__tests__/importData.test.d.ts +0 -1
  413. package/commands/testAccount/__tests__/importData.test.js +0 -92
  414. package/lib/__tests__/CLIWebSocketServer.test.d.ts +0 -1
  415. package/lib/__tests__/CLIWebSocketServer.test.js +0 -252
  416. package/lib/__tests__/accountAuth.test.d.ts +0 -1
  417. package/lib/__tests__/accountAuth.test.js +0 -258
  418. package/lib/__tests__/accountTypes.test.d.ts +0 -1
  419. package/lib/__tests__/accountTypes.test.js +0 -98
  420. package/lib/__tests__/buildAccount.test.d.ts +0 -1
  421. package/lib/__tests__/buildAccount.test.js +0 -211
  422. package/lib/__tests__/cliUpgradeUtils.test.d.ts +0 -1
  423. package/lib/__tests__/cliUpgradeUtils.test.js +0 -131
  424. package/lib/__tests__/commandSuggestion.test.d.ts +0 -1
  425. package/lib/__tests__/commandSuggestion.test.js +0 -121
  426. package/lib/__tests__/commonOpts.test.d.ts +0 -1
  427. package/lib/__tests__/commonOpts.test.js +0 -80
  428. package/lib/__tests__/dependencyManagement.test.d.ts +0 -1
  429. package/lib/__tests__/dependencyManagement.test.js +0 -1067
  430. package/lib/__tests__/developerTestAccounts.test.d.ts +0 -1
  431. package/lib/__tests__/developerTestAccounts.test.js +0 -156
  432. package/lib/__tests__/hasFeature.test.d.ts +0 -1
  433. package/lib/__tests__/hasFeature.test.js +0 -167
  434. package/lib/__tests__/http.test.d.ts +0 -1
  435. package/lib/__tests__/http.test.js +0 -40
  436. package/lib/__tests__/importData.test.d.ts +0 -1
  437. package/lib/__tests__/importData.test.js +0 -98
  438. package/lib/__tests__/npmCli.test.d.ts +0 -1
  439. package/lib/__tests__/npmCli.test.js +0 -84
  440. package/lib/__tests__/oauth.test.d.ts +0 -1
  441. package/lib/__tests__/oauth.test.js +0 -109
  442. package/lib/__tests__/parsing.test.d.ts +0 -1
  443. package/lib/__tests__/parsing.test.js +0 -34
  444. package/lib/__tests__/polling.test.d.ts +0 -1
  445. package/lib/__tests__/polling.test.js +0 -76
  446. package/lib/__tests__/process.test.d.ts +0 -1
  447. package/lib/__tests__/process.test.js +0 -89
  448. package/lib/__tests__/sandboxes.test.d.ts +0 -1
  449. package/lib/__tests__/sandboxes.test.js +0 -128
  450. package/lib/__tests__/serverlessLogs.test.d.ts +0 -1
  451. package/lib/__tests__/serverlessLogs.test.js +0 -163
  452. package/lib/__tests__/usageTracking.test.d.ts +0 -1
  453. package/lib/__tests__/usageTracking.test.js +0 -197
  454. package/lib/__tests__/validation.test.d.ts +0 -1
  455. package/lib/__tests__/validation.test.js +0 -143
  456. package/lib/__tests__/yargsUtils.test.d.ts +0 -1
  457. package/lib/__tests__/yargsUtils.test.js +0 -124
  458. package/lib/app/__tests__/migrate.test.d.ts +0 -1
  459. package/lib/app/__tests__/migrate.test.js +0 -638
  460. package/lib/doctor/__tests__/Diagnosis.test.d.ts +0 -1
  461. package/lib/doctor/__tests__/Diagnosis.test.js +0 -84
  462. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.d.ts +0 -1
  463. package/lib/doctor/__tests__/DiagnosticInfoBuilder.test.js +0 -177
  464. package/lib/doctor/__tests__/Doctor.test.d.ts +0 -1
  465. package/lib/doctor/__tests__/Doctor.test.js +0 -560
  466. package/lib/errorHandlers/__tests__/index.test.d.ts +0 -1
  467. package/lib/errorHandlers/__tests__/index.test.js +0 -278
  468. package/lib/mcp/__tests__/setup.test.d.ts +0 -1
  469. package/lib/mcp/__tests__/setup.test.js +0 -523
  470. package/lib/middleware/__tests__/commandTargetingUtils.test.d.ts +0 -1
  471. package/lib/middleware/__tests__/commandTargetingUtils.test.js +0 -99
  472. package/lib/middleware/__tests__/configMiddleware.test.d.ts +0 -1
  473. package/lib/middleware/__tests__/configMiddleware.test.js +0 -118
  474. package/lib/middleware/__tests__/gitMiddleware.test.d.ts +0 -1
  475. package/lib/middleware/__tests__/gitMiddleware.test.js +0 -43
  476. package/lib/middleware/__tests__/requestMiddleware.test.d.ts +0 -1
  477. package/lib/middleware/__tests__/requestMiddleware.test.js +0 -15
  478. package/lib/middleware/__tests__/usageTrackingMiddleware.test.d.ts +0 -1
  479. package/lib/middleware/__tests__/usageTrackingMiddleware.test.js +0 -44
  480. package/lib/middleware/__tests__/yargsChecksMiddleware.test.d.ts +0 -1
  481. package/lib/middleware/__tests__/yargsChecksMiddleware.test.js +0 -39
  482. package/lib/projects/__tests__/AppDevModeInterface.test.d.ts +0 -1
  483. package/lib/projects/__tests__/AppDevModeInterface.test.js +0 -541
  484. package/lib/projects/__tests__/DevServerManager.test.d.ts +0 -1
  485. package/lib/projects/__tests__/DevServerManager.test.js +0 -185
  486. package/lib/projects/__tests__/DevSessionManager.test.d.ts +0 -1
  487. package/lib/projects/__tests__/DevSessionManager.test.js +0 -250
  488. package/lib/projects/__tests__/LocalDevProcess.test.d.ts +0 -1
  489. package/lib/projects/__tests__/LocalDevProcess.test.js +0 -481
  490. package/lib/projects/__tests__/LocalDevWebsocketServer.test.d.ts +0 -1
  491. package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +0 -231
  492. package/lib/projects/__tests__/ProjectLogsManager.test.d.ts +0 -1
  493. package/lib/projects/__tests__/ProjectLogsManager.test.js +0 -302
  494. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +0 -1
  495. package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +0 -160
  496. package/lib/projects/__tests__/components.test.d.ts +0 -1
  497. package/lib/projects/__tests__/components.test.js +0 -440
  498. package/lib/projects/__tests__/deploy.test.d.ts +0 -1
  499. package/lib/projects/__tests__/deploy.test.js +0 -231
  500. package/lib/projects/__tests__/localDevProjectHelpers.test.d.ts +0 -1
  501. package/lib/projects/__tests__/localDevProjectHelpers.test.js +0 -120
  502. package/lib/projects/__tests__/platformVersion.test.d.ts +0 -1
  503. package/lib/projects/__tests__/platformVersion.test.js +0 -63
  504. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.d.ts +0 -1
  505. package/lib/projects/__tests__/pollProjectBuildAndDeploy.test.js +0 -328
  506. package/lib/projects/__tests__/projectInfo.test.d.ts +0 -1
  507. package/lib/projects/__tests__/projectInfo.test.js +0 -114
  508. package/lib/projects/__tests__/projectProfiles.test.d.ts +0 -1
  509. package/lib/projects/__tests__/projectProfiles.test.js +0 -441
  510. package/lib/projects/__tests__/projects.test.d.ts +0 -1
  511. package/lib/projects/__tests__/projects.test.js +0 -58
  512. package/lib/projects/__tests__/structure.test.d.ts +0 -1
  513. package/lib/projects/__tests__/structure.test.js +0 -210
  514. package/lib/projects/__tests__/uieLinting.test.d.ts +0 -1
  515. package/lib/projects/__tests__/uieLinting.test.js +0 -631
  516. package/lib/projects/__tests__/upload.test.d.ts +0 -1
  517. package/lib/projects/__tests__/upload.test.js +0 -183
  518. package/lib/projects/add/__tests__/legacyAddComponent.test.d.ts +0 -1
  519. package/lib/projects/add/__tests__/legacyAddComponent.test.js +0 -245
  520. package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +0 -1
  521. package/lib/projects/add/__tests__/v2AddComponent.test.js +0 -343
  522. package/lib/projects/create/__tests__/legacy.test.d.ts +0 -1
  523. package/lib/projects/create/__tests__/legacy.test.js +0 -72
  524. package/lib/projects/create/__tests__/v2.test.d.ts +0 -1
  525. package/lib/projects/create/__tests__/v2.test.js +0 -257
  526. package/lib/projects/platformVersion.d.ts +0 -9
  527. package/lib/projects/platformVersion.js +0 -39
  528. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.d.ts +0 -1
  529. package/lib/prompts/__tests__/createDeveloperTestAccountConfigPrompt.test.js +0 -157
  530. package/lib/prompts/__tests__/createFunctionPrompt.test.d.ts +0 -1
  531. package/lib/prompts/__tests__/createFunctionPrompt.test.js +0 -129
  532. package/lib/prompts/__tests__/createModulePrompt.test.d.ts +0 -1
  533. package/lib/prompts/__tests__/createModulePrompt.test.js +0 -187
  534. package/lib/prompts/__tests__/createTemplatePrompt.test.d.ts +0 -1
  535. package/lib/prompts/__tests__/createTemplatePrompt.test.js +0 -102
  536. package/lib/prompts/__tests__/downloadProjectPrompt.test.d.ts +0 -1
  537. package/lib/prompts/__tests__/downloadProjectPrompt.test.js +0 -31
  538. package/lib/prompts/__tests__/projectAddPrompt.test.d.ts +0 -1
  539. package/lib/prompts/__tests__/projectAddPrompt.test.js +0 -143
  540. package/lib/prompts/__tests__/projectsLogsPrompt.test.d.ts +0 -1
  541. package/lib/prompts/__tests__/projectsLogsPrompt.test.js +0 -37
  542. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.d.ts +0 -1
  543. package/lib/prompts/__tests__/selectProjectTemplatePrompt.test.js +0 -160
  544. package/lib/theme/__tests__/migrate.test.d.ts +0 -1
  545. package/lib/theme/__tests__/migrate.test.js +0 -247
  546. package/lib/ui/__tests__/SpinniesManager.test.d.ts +0 -1
  547. package/lib/ui/__tests__/SpinniesManager.test.js +0 -488
  548. package/lib/ui/__tests__/removeAnsiCodes.test.d.ts +0 -1
  549. package/lib/ui/__tests__/removeAnsiCodes.test.js +0 -84
  550. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.d.ts +0 -1
  551. package/mcp-server/tools/cms/__tests__/HsCreateFunctionTool.test.js +0 -254
  552. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.d.ts +0 -1
  553. package/mcp-server/tools/cms/__tests__/HsCreateModuleTool.test.js +0 -227
  554. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.d.ts +0 -1
  555. package/mcp-server/tools/cms/__tests__/HsCreateTemplateTool.test.js +0 -208
  556. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.d.ts +0 -1
  557. package/mcp-server/tools/cms/__tests__/HsFunctionLogsTool.test.js +0 -186
  558. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.d.ts +0 -1
  559. package/mcp-server/tools/cms/__tests__/HsListFunctionsTool.test.js +0 -124
  560. package/mcp-server/tools/cms/__tests__/HsListTool.test.d.ts +0 -1
  561. package/mcp-server/tools/cms/__tests__/HsListTool.test.js +0 -124
  562. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.d.ts +0 -1
  563. package/mcp-server/tools/project/__tests__/AddFeatureToProjectTool.test.js +0 -157
  564. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.d.ts +0 -1
  565. package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +0 -131
  566. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.d.ts +0 -1
  567. package/mcp-server/tools/project/__tests__/CreateTestAccountTool.test.js +0 -461
  568. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.d.ts +0 -1
  569. package/mcp-server/tools/project/__tests__/DeployProjectTool.test.js +0 -125
  570. package/mcp-server/tools/project/__tests__/DocFetchTool.test.d.ts +0 -1
  571. package/mcp-server/tools/project/__tests__/DocFetchTool.test.js +0 -125
  572. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.d.ts +0 -1
  573. package/mcp-server/tools/project/__tests__/DocsSearchTool.test.js +0 -210
  574. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.d.ts +0 -1
  575. package/mcp-server/tools/project/__tests__/GetApiUsagePatternsByAppIdTool.test.js +0 -146
  576. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.d.ts +0 -1
  577. package/mcp-server/tools/project/__tests__/GetApplicationInfoTool.test.js +0 -124
  578. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.d.ts +0 -1
  579. package/mcp-server/tools/project/__tests__/GetBuildLogsTool.test.js +0 -307
  580. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.d.ts +0 -1
  581. package/mcp-server/tools/project/__tests__/GetBuildStatusTool.test.js +0 -242
  582. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.d.ts +0 -1
  583. package/mcp-server/tools/project/__tests__/GetConfigValuesTool.test.js +0 -209
  584. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.d.ts +0 -1
  585. package/mcp-server/tools/project/__tests__/GuidedWalkthroughTool.test.js +0 -158
  586. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.d.ts +0 -1
  587. package/mcp-server/tools/project/__tests__/UploadProjectTools.test.js +0 -187
  588. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.d.ts +0 -1
  589. package/mcp-server/tools/project/__tests__/ValidateProjectTool.test.js +0 -118
  590. package/mcp-server/utils/__tests__/command.test.d.ts +0 -1
  591. package/mcp-server/utils/__tests__/command.test.js +0 -275
  592. package/mcp-server/utils/__tests__/content.test.d.ts +0 -1
  593. package/mcp-server/utils/__tests__/content.test.js +0 -164
  594. package/mcp-server/utils/__tests__/feedbackTracking.test.d.ts +0 -1
  595. package/mcp-server/utils/__tests__/feedbackTracking.test.js +0 -69
@@ -1,26 +1,26 @@
1
- import { trackCommandUsage } from '../../lib/usageTracking.js';
1
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
2
2
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
3
3
  import { fetchProject } from '@hubspot/local-dev-lib/api/projects';
4
- import { ApiErrorContext, debugError } from '../../lib/errorHandlers/index.js';
4
+ import { debugError } from '../../lib/errorHandlers/index.js';
5
5
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
6
6
  import { uiLogger } from '../../lib/ui/logger.js';
7
7
  import { commands } from '../../lang/en.js';
8
8
  import { getProjectConfig } from '../../lib/projects/config.js';
9
- import { isV2Project } from '../../lib/projects/platformVersion.js';
10
- import { getProjectInfo, renderProjectInfo, } from '../../lib/projects/projectInfo.js';
9
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
10
+ import { getProjectInfo, logProjectInfo, } from '../../lib/projects/projectInfo.js';
11
11
  const command = 'info';
12
12
  const describe = commands.project.info.describe;
13
+ const verboseDescribe = commands.project.info.verboseDescribe;
13
14
  async function handler(args) {
14
- const { derivedAccountId, formatOutputAsJson } = args;
15
- trackCommandUsage('project-info', undefined, derivedAccountId);
15
+ const { derivedAccountId, formatOutputAsJson, exit } = args;
16
16
  const { projectConfig } = await getProjectConfig();
17
17
  if (!projectConfig) {
18
18
  uiLogger.error(commands.project.info.errors.noProjectConfig);
19
- process.exit(EXIT_CODES.ERROR);
19
+ return exit(EXIT_CODES.ERROR);
20
20
  }
21
- if (!isV2Project(projectConfig.platformVersion)) {
21
+ if (isLegacyProject(projectConfig.platformVersion)) {
22
22
  uiLogger.error(commands.project.info.errors.unsupportedPlatformVersion(projectConfig.platformVersion));
23
- process.exit(EXIT_CODES.ERROR);
23
+ return exit(EXIT_CODES.ERROR);
24
24
  }
25
25
  const projectName = projectConfig.name;
26
26
  let project;
@@ -29,30 +29,30 @@ async function handler(args) {
29
29
  project = response.data;
30
30
  }
31
31
  catch (error) {
32
- debugError(error, new ApiErrorContext({
33
- accountId: derivedAccountId,
34
- request: 'fetch project',
35
- }));
32
+ debugError(error);
36
33
  uiLogger.error(commands.project.info.errors.projectNotFound(projectName, derivedAccountId));
37
- process.exit(EXIT_CODES.ERROR);
34
+ return exit(EXIT_CODES.ERROR);
38
35
  }
39
36
  const deployedBuild = project.deployedBuild;
40
37
  if (!deployedBuild) {
41
38
  uiLogger.error(commands.project.info.errors.noDeployedBuild);
42
- process.exit(EXIT_CODES.ERROR);
39
+ return exit(EXIT_CODES.ERROR);
43
40
  }
44
41
  const projectInfo = await getProjectInfo(project, projectConfig.platformVersion, derivedAccountId);
45
42
  if (formatOutputAsJson) {
46
43
  uiLogger.json(projectInfo);
47
44
  return;
48
45
  }
49
- await renderProjectInfo(projectInfo);
46
+ logProjectInfo(projectInfo);
50
47
  }
51
48
  function projectInfoBuilder(yargs) {
52
- yargs.example([['$0 project info']]);
49
+ yargs.example([
50
+ ['$0 project info', commands.project.info.examples.default],
51
+ ['$0 project info --json', commands.project.info.examples.json],
52
+ ]);
53
53
  return yargs;
54
54
  }
55
- const builder = makeYargsBuilder(projectInfoBuilder, command, describe, {
55
+ const builder = makeYargsBuilder(projectInfoBuilder, command, verboseDescribe, {
56
56
  useGlobalOptions: true,
57
57
  useConfigOptions: true,
58
58
  useAccountOptions: true,
@@ -61,7 +61,7 @@ const builder = makeYargsBuilder(projectInfoBuilder, command, describe, {
61
61
  const projectInfoCommand = {
62
62
  command,
63
63
  describe,
64
- handler,
64
+ handler: makeYargsHandlerWithUsageTracking('project-info', handler),
65
65
  builder,
66
66
  };
67
67
  export default projectInfoCommand;
@@ -1,23 +1,23 @@
1
1
  import { installPackages, getProjectPackageJsonLocations, } from '../../lib/dependencyManagement.js';
2
2
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
3
+ import { isPromptExitError } from '../../lib/errors/PromptExitError.js';
3
4
  import { getProjectConfig } from '../../lib/projects/config.js';
4
5
  import { promptUser } from '../../lib/prompts/promptUtils.js';
5
6
  import path from 'path';
6
7
  import { commands } from '../../lang/en.js';
7
8
  import { uiLogger } from '../../lib/ui/logger.js';
8
- import { trackCommandUsage } from '../../lib/usageTracking.js';
9
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
9
10
  import { logError } from '../../lib/errorHandlers/index.js';
10
11
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
11
12
  const command = 'install-deps [packages..]';
12
13
  const describe = commands.project.installDeps.help.describe;
13
14
  async function handler(args) {
14
- const { derivedAccountId, packages } = args;
15
+ const { packages, exit } = args;
15
16
  try {
16
- trackCommandUsage('project-install-deps', undefined, derivedAccountId);
17
17
  const projectConfig = await getProjectConfig();
18
18
  if (!projectConfig || !projectConfig.projectDir) {
19
19
  uiLogger.error(commands.project.installDeps.noProjectConfig);
20
- return process.exit(EXIT_CODES.ERROR);
20
+ return exit(EXIT_CODES.ERROR);
21
21
  }
22
22
  const { projectDir } = projectConfig;
23
23
  let installLocations = await getProjectPackageJsonLocations();
@@ -50,8 +50,11 @@ async function handler(args) {
50
50
  });
51
51
  }
52
52
  catch (e) {
53
+ if (isPromptExitError(e)) {
54
+ throw e;
55
+ }
53
56
  logError(e);
54
- return process.exit(EXIT_CODES.ERROR);
57
+ return exit(EXIT_CODES.ERROR);
55
58
  }
56
59
  }
57
60
  function projectInstallDepsBuilder(yargs) {
@@ -74,7 +77,7 @@ const builder = makeYargsBuilder(projectInstallDepsBuilder, command, describe, {
74
77
  const projectInstallDepsCommand = {
75
78
  command,
76
79
  describe,
77
- handler,
80
+ handler: makeYargsHandlerWithUsageTracking('project-install-deps', handler),
78
81
  builder,
79
82
  };
80
83
  export default projectInstallDepsCommand;
@@ -1,10 +1,11 @@
1
1
  import path from 'path';
2
2
  import { getProjectPackageJsonLocations, installPackages, } from '../../lib/dependencyManagement.js';
3
3
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
4
+ import { isPromptExitError } from '../../lib/errors/PromptExitError.js';
4
5
  import { getProjectConfig } from '../../lib/projects/config.js';
5
6
  import { commands } from '../../lang/en.js';
6
7
  import { uiLogger } from '../../lib/ui/logger.js';
7
- import { trackCommandUsage } from '../../lib/usageTracking.js';
8
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
8
9
  import { logError } from '../../lib/errorHandlers/index.js';
9
10
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
10
11
  import { promptUser } from '../../lib/prompts/promptUtils.js';
@@ -13,13 +14,12 @@ import { areAllLintPackagesInstalled, getMissingLintPackages, lintPackages, disp
13
14
  const command = 'lint';
14
15
  const describe = commands.project.lint.help.describe;
15
16
  async function handler(args) {
16
- const { derivedAccountId, installMissingDeps } = args;
17
+ const { installMissingDeps, exit } = args;
17
18
  try {
18
- trackCommandUsage('project-lint', undefined, derivedAccountId);
19
19
  const projectConfig = await getProjectConfig();
20
20
  if (!projectConfig || !projectConfig.projectDir) {
21
21
  uiLogger.error(commands.project.lint.noProjectConfig);
22
- return process.exit(EXIT_CODES.ERROR);
22
+ return exit(EXIT_CODES.ERROR);
23
23
  }
24
24
  SpinniesManager.init({ succeedColor: 'white' });
25
25
  SpinniesManager.add('lintCheck', {
@@ -129,7 +129,7 @@ async function handler(args) {
129
129
  }
130
130
  else {
131
131
  uiLogger.error(commands.project.lint.eslintConfigRequired);
132
- return process.exit(EXIT_CODES.ERROR);
132
+ return exit(EXIT_CODES.ERROR);
133
133
  }
134
134
  }
135
135
  SpinniesManager.add('lintRun', {
@@ -139,13 +139,16 @@ async function handler(args) {
139
139
  SpinniesManager.succeed('lintRun');
140
140
  displayLintResults(results);
141
141
  if (!success) {
142
- return process.exit(EXIT_CODES.ERROR);
142
+ return exit(EXIT_CODES.ERROR);
143
143
  }
144
144
  }
145
145
  }
146
146
  catch (e) {
147
+ if (isPromptExitError(e)) {
148
+ throw e;
149
+ }
147
150
  logError(e);
148
- return process.exit(EXIT_CODES.ERROR);
151
+ return exit(EXIT_CODES.ERROR);
149
152
  }
150
153
  }
151
154
  function projectLintBuilder(yargs) {
@@ -172,7 +175,7 @@ const builder = makeYargsBuilder(projectLintBuilder, command, describe, {
172
175
  const projectLintCommand = {
173
176
  command,
174
177
  describe,
175
- handler,
178
+ handler: makeYargsHandlerWithUsageTracking('project-lint', handler),
176
179
  builder,
177
180
  };
178
181
  export default projectLintCommand;
@@ -1,4 +1,4 @@
1
- import { trackCommandUsage } from '../../lib/usageTracking.js';
1
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
2
2
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
3
3
  import { fetchProjects } from '@hubspot/local-dev-lib/api/projects';
4
4
  import { logError } from '../../lib/errorHandlers/index.js';
@@ -9,14 +9,8 @@ import { renderTable } from '../../ui/render.js';
9
9
  const command = ['list', 'ls'];
10
10
  const describe = commands.project.list.describe;
11
11
  async function getProjectData(accountId) {
12
- try {
13
- const { data: projects } = await fetchProjects(accountId);
14
- return projects.results;
15
- }
16
- catch (e) {
17
- logError(e);
18
- process.exit(EXIT_CODES.ERROR);
19
- }
12
+ const { data: projects } = await fetchProjects(accountId);
13
+ return projects.results;
20
14
  }
21
15
  function formatProjectsAsTableRows(projects) {
22
16
  const projectListData = [];
@@ -29,12 +23,18 @@ function formatProjectsAsTableRows(projects) {
29
23
  return projectListData;
30
24
  }
31
25
  async function handler(args) {
32
- const { derivedAccountId } = args;
33
- trackCommandUsage('projects-list', undefined, derivedAccountId);
34
- const projectData = await getProjectData(derivedAccountId);
26
+ const { derivedAccountId, exit } = args;
27
+ let projectData;
28
+ try {
29
+ projectData = await getProjectData(derivedAccountId);
30
+ }
31
+ catch (e) {
32
+ logError(e);
33
+ return exit(EXIT_CODES.ERROR);
34
+ }
35
35
  if (projectData.length === 0) {
36
36
  uiLogger.error(commands.project.list.errors.noProjectsFound(derivedAccountId));
37
- process.exit(EXIT_CODES.ERROR);
37
+ return exit(EXIT_CODES.ERROR);
38
38
  }
39
39
  const projectListData = formatProjectsAsTableRows(projectData);
40
40
  const tableHeader = [
@@ -56,7 +56,7 @@ const builder = makeYargsBuilder(projectListBuilder, command, describe, {
56
56
  const projectListCommand = {
57
57
  command,
58
58
  describe,
59
- handler,
59
+ handler: makeYargsHandlerWithUsageTracking('projects-list', handler),
60
60
  builder,
61
61
  };
62
62
  export default projectListCommand;
@@ -5,9 +5,9 @@ import { getProjectConfig, validateProjectConfig, } from '../../lib/projects/con
5
5
  import { getProjectDetailUrl } from '../../lib/projects/urls.js';
6
6
  import moment from 'moment';
7
7
  import { promptUser } from '../../lib/prompts/promptUtils.js';
8
- import { trackCommandUsage } from '../../lib/usageTracking.js';
9
8
  import { uiLogger } from '../../lib/ui/logger.js';
10
9
  import { logError, ApiErrorContext } from '../../lib/errorHandlers/index.js';
10
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
11
11
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
12
12
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
13
13
  import { commands } from '../../lang/en.js';
@@ -58,8 +58,7 @@ async function fetchAndDisplayBuilds(accountId, project, options) {
58
58
  }
59
59
  }
60
60
  async function handler(args) {
61
- const { project: projectFlagValue, limit, derivedAccountId } = args;
62
- trackCommandUsage('project-list-builds', undefined, derivedAccountId);
61
+ const { project: projectFlagValue, limit, derivedAccountId, exit } = args;
63
62
  let projectName = projectFlagValue;
64
63
  if (!projectName) {
65
64
  const { projectConfig, projectDir } = await getProjectConfig();
@@ -68,7 +67,10 @@ async function handler(args) {
68
67
  }
69
68
  catch (error) {
70
69
  logError(error);
71
- process.exit(EXIT_CODES.ERROR);
70
+ return exit(EXIT_CODES.ERROR);
71
+ }
72
+ if (!projectConfig) {
73
+ return exit(EXIT_CODES.ERROR);
72
74
  }
73
75
  projectName = projectConfig.name;
74
76
  }
@@ -87,7 +89,7 @@ async function handler(args) {
87
89
  }));
88
90
  }
89
91
  }
90
- process.exit(EXIT_CODES.SUCCESS);
92
+ return exit(EXIT_CODES.SUCCESS);
91
93
  }
92
94
  function projectListBuildsBuilder(yargs) {
93
95
  yargs.options({
@@ -114,7 +116,7 @@ const builder = makeYargsBuilder(projectListBuildsBuilder, command, describe, {
114
116
  const projectListBuildsCommand = {
115
117
  command,
116
118
  describe,
117
- handler,
119
+ handler: makeYargsHandlerWithUsageTracking('project-list-builds', handler),
118
120
  builder,
119
121
  };
120
122
  export default projectListBuildsCommand;
@@ -1,6 +1,5 @@
1
1
  import { getConfigAccountEnvironment } from '@hubspot/local-dev-lib/config';
2
2
  import { getHubSpotWebsiteOrigin } from '@hubspot/local-dev-lib/urls';
3
- import { trackCommandUsage } from '../../lib/usageTracking.js';
4
3
  import { logError } from '../../lib/errorHandlers/index.js';
5
4
  import { uiLine } from '../../lib/ui/index.js';
6
5
  import { projectLogsPrompt } from '../../lib/prompts/projectsLogsPrompt.js';
@@ -8,6 +7,7 @@ import { commands } from '../../lang/en.js';
8
7
  import { uiLogger } from '../../lib/ui/logger.js';
9
8
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
10
9
  import { ProjectLogsManager } from '../../lib/projects/ProjectLogsManager.js';
10
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
11
11
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
12
12
  import { renderTable } from '../../ui/render.js';
13
13
  function getPrivateAppsUrl(accountId) {
@@ -51,8 +51,7 @@ function logPreamble() {
51
51
  const command = 'logs';
52
52
  const describe = commands.project.logs.describe;
53
53
  async function handler(args) {
54
- const { derivedAccountId } = args;
55
- trackCommandUsage('project-logs', undefined, derivedAccountId);
54
+ const { derivedAccountId, exit } = args;
56
55
  try {
57
56
  await ProjectLogsManager.init(derivedAccountId);
58
57
  const { functionName } = await projectLogsPrompt({
@@ -68,9 +67,9 @@ async function handler(args) {
68
67
  accountId: derivedAccountId,
69
68
  projectName: ProjectLogsManager.projectName,
70
69
  });
71
- return process.exit(EXIT_CODES.ERROR);
70
+ return exit(EXIT_CODES.ERROR);
72
71
  }
73
- process.exit(EXIT_CODES.SUCCESS);
72
+ return exit(EXIT_CODES.SUCCESS);
74
73
  }
75
74
  function projectLogsBuilder(yargs) {
76
75
  yargs.options({
@@ -113,7 +112,7 @@ const builder = makeYargsBuilder(projectLogsBuilder, command, describe, { useGlo
113
112
  const projectLogsCommand = {
114
113
  command,
115
114
  describe,
116
- handler,
115
+ handler: makeYargsHandlerWithUsageTracking('project-logs', handler),
117
116
  builder,
118
117
  };
119
118
  export default projectLogsCommand;
@@ -1,6 +1,7 @@
1
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
1
2
  import { migrateApp } from '../../lib/app/migrate.js';
2
3
  import { getProjectConfig } from '../../lib/projects/config.js';
3
- import { PLATFORM_VERSIONS } from '@hubspot/local-dev-lib/constants/projects';
4
+ import { PLATFORM_VERSIONS } from '@hubspot/project-parsing-lib/constants';
4
5
  import { logError } from '../../lib/errorHandlers/index.js';
5
6
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
6
7
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
@@ -12,17 +13,16 @@ import { getWarningBox } from '../../ui/components/StatusMessageBoxes.js';
12
13
  import { getHasMigratableThemes, migrateThemesV2, } from '../../lib/theme/migrate.js';
13
14
  import { hasFeature } from '../../lib/hasFeature.js';
14
15
  import { FEATURES } from '../../lib/constants.js';
15
- import { trackCommandMetadataUsage, trackCommandUsage, } from '../../lib/usageTracking.js';
16
- const { v2025_2, v2026_03_beta, v2026_03 } = PLATFORM_VERSIONS;
16
+ import { trackCommandMetadataUsage } from '../../lib/usageTracking.js';
17
+ const { v2025_2, v2026_03_BETA, v2026_03 } = PLATFORM_VERSIONS;
17
18
  const command = 'migrate';
18
19
  const describe = commands.project.migrate.describe;
19
20
  async function handler(args) {
20
- const { platformVersion, unstable, derivedAccountId } = args;
21
- await trackCommandUsage('project-migrate', {}, derivedAccountId);
21
+ const { platformVersion, unstable, derivedAccountId, exit } = args;
22
22
  const projectConfig = await getProjectConfig();
23
23
  if (!projectConfig.projectConfig) {
24
24
  uiLogger.error(commands.project.migrate.errors.noProjectConfig(uiCommandReference('hs app migrate')));
25
- return process.exit(EXIT_CODES.ERROR);
25
+ return exit(EXIT_CODES.ERROR);
26
26
  }
27
27
  if (projectConfig?.projectConfig) {
28
28
  await renderInline(getWarningBox({
@@ -36,12 +36,12 @@ async function handler(args) {
36
36
  const hasThemeMigrationAccess = await hasFeature(derivedAccountId, FEATURES.THEME_MIGRATION_2025_2);
37
37
  if (!hasThemeMigrationAccess) {
38
38
  uiLogger.error(commands.project.migrate.errors.noThemeMigrationAccess(derivedAccountId));
39
- return process.exit(EXIT_CODES.ERROR);
39
+ return exit(EXIT_CODES.ERROR);
40
40
  }
41
41
  await migrateThemesV2(derivedAccountId, {
42
42
  ...args,
43
43
  platformVersion: unstable
44
- ? PLATFORM_VERSIONS.unstable
44
+ ? PLATFORM_VERSIONS.UNSTABLE
45
45
  : platformVersion,
46
46
  }, migratableThemesCount, projectConfig);
47
47
  }
@@ -50,7 +50,7 @@ async function handler(args) {
50
50
  ...args,
51
51
  name: projectConfig?.projectConfig?.name,
52
52
  platformVersion: unstable
53
- ? PLATFORM_VERSIONS.unstable
53
+ ? PLATFORM_VERSIONS.UNSTABLE
54
54
  : platformVersion,
55
55
  }, projectConfig);
56
56
  }
@@ -58,16 +58,16 @@ async function handler(args) {
58
58
  catch (error) {
59
59
  await trackCommandMetadataUsage('project-migrate', { successful: false }, derivedAccountId);
60
60
  logError(error);
61
- return process.exit(EXIT_CODES.ERROR);
61
+ return exit(EXIT_CODES.ERROR);
62
62
  }
63
63
  await trackCommandMetadataUsage('project-migrate', { successful: true }, derivedAccountId);
64
- return process.exit(EXIT_CODES.SUCCESS);
64
+ return exit(EXIT_CODES.SUCCESS);
65
65
  }
66
66
  function projectMigrateBuilder(yargs) {
67
67
  yargs
68
68
  .option('platform-version', {
69
69
  type: 'string',
70
- choices: [v2025_2, v2026_03_beta, v2026_03],
70
+ choices: [v2025_2, v2026_03_BETA, v2026_03],
71
71
  default: v2026_03,
72
72
  })
73
73
  .option('unstable', {
@@ -85,7 +85,7 @@ const builder = makeYargsBuilder(projectMigrateBuilder, command, commands.projec
85
85
  const migrateCommand = {
86
86
  command,
87
87
  describe,
88
- handler,
88
+ handler: makeYargsHandlerWithUsageTracking('project-migrate', handler),
89
89
  builder,
90
90
  };
91
91
  export default migrateCommand;
@@ -1,5 +1,4 @@
1
1
  import open from 'open';
2
- import { trackCommandUsage } from '../../lib/usageTracking.js';
3
2
  import { commands } from '../../lang/en.js';
4
3
  import { uiLogger } from '../../lib/ui/logger.js';
5
4
  import { getProjectConfig } from '../../lib/projects/config.js';
@@ -7,12 +6,12 @@ import { ensureProjectExists } from '../../lib/projects/ensureProjectExists.js';
7
6
  import { getProjectDetailUrl } from '../../lib/projects/urls.js';
8
7
  import { projectNamePrompt } from '../../lib/prompts/projectNamePrompt.js';
9
8
  import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
9
+ import { makeYargsHandlerWithUsageTracking } from '../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
10
10
  import { makeYargsBuilder } from '../../lib/yargsUtils.js';
11
11
  const command = 'open';
12
12
  const describe = commands.project.open.describe;
13
13
  async function handler(args) {
14
- const { project, derivedAccountId } = args;
15
- trackCommandUsage('project-open', undefined, derivedAccountId);
14
+ const { project, derivedAccountId, exit } = args;
16
15
  const { projectConfig } = await getProjectConfig();
17
16
  let projectName = project;
18
17
  if (projectName) {
@@ -20,7 +19,7 @@ async function handler(args) {
20
19
  allowCreate: false,
21
20
  });
22
21
  if (!projectExists) {
23
- process.exit(EXIT_CODES.ERROR);
22
+ return exit(EXIT_CODES.ERROR);
24
23
  }
25
24
  }
26
25
  else if (!projectName && projectConfig) {
@@ -33,7 +32,7 @@ async function handler(args) {
33
32
  const url = getProjectDetailUrl(projectName, derivedAccountId);
34
33
  open(url, { url: true });
35
34
  uiLogger.success(commands.project.open.success(projectName));
36
- process.exit(EXIT_CODES.SUCCESS);
35
+ return exit(EXIT_CODES.SUCCESS);
37
36
  }
38
37
  function projectOpenBuilder(yargs) {
39
38
  yargs.options({
@@ -55,7 +54,7 @@ const builder = makeYargsBuilder(projectOpenBuilder, command, describe, {
55
54
  const projectOpenCommand = {
56
55
  command,
57
56
  describe,
58
- handler,
57
+ handler: makeYargsHandlerWithUsageTracking('project-open', handler),
59
58
  builder,
60
59
  };
61
60
  export default projectOpenCommand;
@@ -2,11 +2,12 @@ import path from 'path';
2
2
  import fs from 'fs';
3
3
  import { getConfigAccountIfExists, getAllConfigAccounts, } from '@hubspot/local-dev-lib/config';
4
4
  import { getAllHsProfiles, getHsProfileFilename, loadHsProfileFile, } from '@hubspot/project-parsing-lib/profiles';
5
- import { trackCommandUsage } from '../../../lib/usageTracking.js';
6
5
  import { getProjectConfig } from '../../../lib/projects/config.js';
6
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
7
7
  import { uiAccountDescription } from '../../../lib/ui/index.js';
8
8
  import { uiLogger } from '../../../lib/ui/logger.js';
9
9
  import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
10
+ import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
10
11
  import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
11
12
  import { commands } from '../../../lang/en.js';
12
13
  import { promptUser, listPrompt, confirmPrompt, } from '../../../lib/prompts/promptUtils.js';
@@ -50,12 +51,15 @@ async function selectProfileToCopyVariablesFrom(existingProfiles) {
50
51
  return profileToCopyVariablesFrom;
51
52
  }
52
53
  async function handler(args) {
53
- const { derivedAccountId } = args;
54
- trackCommandUsage('project-profile-add', undefined, derivedAccountId);
54
+ const { exit } = args;
55
55
  const { projectConfig, projectDir } = await getProjectConfig();
56
56
  if (!projectConfig || !projectDir) {
57
57
  uiLogger.error(commands.project.profile.add.errors.noProjectConfig);
58
- process.exit(EXIT_CODES.ERROR);
58
+ return exit(EXIT_CODES.ERROR);
59
+ }
60
+ if (isLegacyProject(projectConfig.platformVersion)) {
61
+ uiLogger.error(commands.project.profile.add.errors.unsupportedPlatformVersion);
62
+ return exit(EXIT_CODES.ERROR);
59
63
  }
60
64
  const projectSourceDir = path.join(projectDir, projectConfig.srcDir);
61
65
  let profileName = args.name;
@@ -115,7 +119,7 @@ async function handler(args) {
115
119
  const configuredAccounts = getAllConfigAccounts();
116
120
  if (!configuredAccounts || !configuredAccounts.length) {
117
121
  uiLogger.error(commands.project.profile.add.errors.noAccountsConfigured);
118
- process.exit(EXIT_CODES.ERROR);
122
+ return exit(EXIT_CODES.ERROR);
119
123
  }
120
124
  const promptResponse = await listPrompt(commands.project.profile.add.prompts.targetAccountPrompt, {
121
125
  choices: configuredAccounts.map(account => {
@@ -171,11 +175,11 @@ async function handler(args) {
171
175
  }
172
176
  catch (err) {
173
177
  uiLogger.error(commands.project.profile.add.errors.failedToCreateProfile);
174
- process.exit(EXIT_CODES.ERROR);
178
+ return exit(EXIT_CODES.ERROR);
175
179
  }
176
180
  uiLogger.log('');
177
181
  uiLogger.log(commands.project.profile.add.logs.profileAdded(profileFilename));
178
- process.exit(EXIT_CODES.SUCCESS);
182
+ return exit(EXIT_CODES.SUCCESS);
179
183
  }
180
184
  function projectProfileAddBuilder(yargs) {
181
185
  yargs.positional('name', {
@@ -197,7 +201,7 @@ const builder = makeYargsBuilder(projectProfileAddBuilder, command, verboseDescr
197
201
  const projectProfileAddCommand = {
198
202
  command,
199
203
  describe,
200
- handler,
204
+ handler: makeYargsHandlerWithUsageTracking('project-profile-add', handler),
201
205
  builder,
202
206
  };
203
207
  export default projectProfileAddCommand;
@@ -3,10 +3,11 @@ import path from 'path';
3
3
  import { getAllHsProfiles, getHsProfileFilename, loadHsProfileFile, } from '@hubspot/project-parsing-lib/profiles';
4
4
  import { fetchProject, deleteProject, } from '@hubspot/local-dev-lib/api/projects';
5
5
  import { getConfigAccountById } from '@hubspot/local-dev-lib/config';
6
- import { trackCommandUsage } from '../../../lib/usageTracking.js';
7
6
  import { getProjectConfig } from '../../../lib/projects/config.js';
7
+ import { isLegacyProject } from '@hubspot/project-parsing-lib/projects';
8
8
  import { uiLogger } from '../../../lib/ui/logger.js';
9
9
  import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
10
+ import { makeYargsHandlerWithUsageTracking } from '../../../lib/yargs/makeYargsHandlerWithUsageTracking.js';
10
11
  import { makeYargsBuilder } from '../../../lib/yargsUtils.js';
11
12
  import { commands } from '../../../lang/en.js';
12
13
  import { confirmPrompt, listPrompt } from '../../../lib/prompts/promptUtils.js';
@@ -16,12 +17,15 @@ import { isDeveloperTestAccount, isSandbox, } from '../../../lib/accountTypes.js
16
17
  const command = 'delete [name]';
17
18
  const describe = commands.project.profile.delete.describe;
18
19
  async function handler(args) {
19
- const { derivedAccountId } = args;
20
- trackCommandUsage('project-profile-delete', undefined, derivedAccountId);
20
+ const { exit } = args;
21
21
  const { projectConfig, projectDir } = await getProjectConfig();
22
22
  if (!projectConfig || !projectDir) {
23
23
  uiLogger.error(commands.project.profile.delete.errors.noProjectConfig);
24
- process.exit(EXIT_CODES.ERROR);
24
+ return exit(EXIT_CODES.ERROR);
25
+ }
26
+ if (isLegacyProject(projectConfig.platformVersion)) {
27
+ uiLogger.error(commands.project.profile.delete.errors.unsupportedPlatformVersion);
28
+ return exit(EXIT_CODES.ERROR);
25
29
  }
26
30
  const projectSourceDir = path.join(projectDir, projectConfig.srcDir);
27
31
  let profileName = undefined;
@@ -30,14 +34,14 @@ async function handler(args) {
30
34
  const profileFilename = getHsProfileFilename(profileName);
31
35
  if (!fileExists(path.join(projectSourceDir, profileFilename))) {
32
36
  uiLogger.error(commands.project.profile.delete.errors.noProfileFound(profileFilename));
33
- process.exit(EXIT_CODES.ERROR);
37
+ return exit(EXIT_CODES.ERROR);
34
38
  }
35
39
  }
36
40
  else {
37
41
  const existingProfiles = await getAllHsProfiles(projectSourceDir);
38
42
  if (existingProfiles.length === 0) {
39
43
  uiLogger.error(commands.project.profile.delete.errors.noProfilesFound);
40
- process.exit(EXIT_CODES.ERROR);
44
+ return exit(EXIT_CODES.ERROR);
41
45
  }
42
46
  const promptResponse = await listPrompt(commands.project.profile.delete.prompts.deleteProfilePrompt, {
43
47
  choices: existingProfiles.map(profile => ({
@@ -52,7 +56,7 @@ async function handler(args) {
52
56
  }
53
57
  // This should never happen
54
58
  if (!profileName) {
55
- process.exit(EXIT_CODES.ERROR);
59
+ return exit(EXIT_CODES.ERROR);
56
60
  }
57
61
  let targetAccountId;
58
62
  try {
@@ -68,7 +72,7 @@ async function handler(args) {
68
72
  }
69
73
  catch (err) {
70
74
  uiLogger.error(commands.project.profile.delete.errors.failedToDeleteProfile(profileFilename));
71
- process.exit(EXIT_CODES.ERROR);
75
+ return exit(EXIT_CODES.ERROR);
72
76
  }
73
77
  uiLogger.log(commands.project.profile.delete.logs.profileDeleted(profileFilename));
74
78
  if (targetAccountId) {
@@ -96,7 +100,7 @@ async function handler(args) {
96
100
  catch (err) {
97
101
  debugError(err);
98
102
  uiLogger.error(commands.project.profile.delete.errors.failedToDeleteProject(targetAccountId));
99
- process.exit(EXIT_CODES.ERROR);
103
+ return exit(EXIT_CODES.ERROR);
100
104
  }
101
105
  uiLogger.log(commands.project.profile.delete.logs.deletedProject(targetAccountId));
102
106
  }
@@ -105,7 +109,7 @@ async function handler(args) {
105
109
  }
106
110
  }
107
111
  }
108
- process.exit(EXIT_CODES.SUCCESS);
112
+ return exit(EXIT_CODES.SUCCESS);
109
113
  }
110
114
  function projectProfileDeleteBuilder(yargs) {
111
115
  yargs.positional('name', {
@@ -123,7 +127,7 @@ const builder = makeYargsBuilder(projectProfileDeleteBuilder, command, describe,
123
127
  const projectProfileDeleteCommand = {
124
128
  command,
125
129
  describe,
126
- handler,
130
+ handler: makeYargsHandlerWithUsageTracking('project-profile-delete', handler),
127
131
  builder,
128
132
  };
129
133
  export default projectProfileDeleteCommand;