@hubspot/cli 7.8.12-experimental.1 → 7.9.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/commands/__tests__/cms.test.js +44 -1
- package/commands/__tests__/customObject.test.js +22 -1
- package/commands/__tests__/project.test.js +2 -0
- package/commands/account/auth.js +1 -0
- package/commands/auth.js +1 -0
- package/commands/{__tests__/remove.test.js → cms/__tests__/delete.test.js} +8 -8
- package/commands/{__tests__ → cms/__tests__}/fetch.test.js +3 -3
- package/commands/{__tests__ → cms/__tests__}/function.test.js +7 -3
- package/commands/{__tests__ → cms/__tests__}/lint.test.js +3 -3
- package/commands/{__tests__ → cms/__tests__}/list.test.js +3 -3
- package/commands/{__tests__ → cms/__tests__}/mv.test.js +3 -3
- package/commands/{__tests__ → cms/__tests__}/theme.test.js +9 -2
- package/commands/cms/app/create.d.ts +9 -0
- package/commands/cms/app/create.js +82 -0
- package/commands/cms/app.d.ts +3 -0
- package/commands/cms/app.js +17 -0
- package/commands/cms/delete.d.ts +6 -0
- package/commands/cms/delete.js +43 -0
- package/commands/cms/fetch.d.ts +12 -0
- package/commands/cms/fetch.js +79 -0
- package/commands/{__tests__ → cms/function/__tests__}/logs.test.js +4 -5
- package/commands/cms/function/create.d.ts +12 -0
- package/commands/cms/function/create.js +84 -0
- package/commands/cms/function/deploy.d.ts +6 -0
- package/commands/cms/function/deploy.js +89 -0
- package/commands/cms/function/list.d.ts +6 -0
- package/commands/cms/function/list.js +60 -0
- package/commands/cms/function/logs.d.ts +10 -0
- package/commands/cms/function/logs.js +135 -0
- package/commands/cms/function/server.d.ts +10 -0
- package/commands/cms/function/server.js +69 -0
- package/commands/cms/function.d.ts +3 -0
- package/commands/cms/function.js +27 -0
- package/commands/cms/lint.d.ts +6 -0
- package/commands/cms/lint.js +83 -0
- package/commands/cms/list.d.ts +6 -0
- package/commands/cms/list.js +96 -0
- package/commands/cms/module/create.d.ts +11 -0
- package/commands/cms/module/create.js +84 -0
- package/commands/cms/module/marketplace-validate.d.ts +6 -0
- package/commands/cms/module/marketplace-validate.js +45 -0
- package/commands/cms/module.d.ts +3 -0
- package/commands/cms/module.js +17 -0
- package/commands/cms/mv.d.ts +7 -0
- package/commands/cms/mv.js +60 -0
- package/commands/cms/template/create.d.ts +9 -0
- package/commands/cms/template/create.js +72 -0
- package/commands/cms/template.d.ts +3 -0
- package/commands/cms/template.js +17 -0
- package/commands/{theme → cms/theme}/__tests__/marketplace-validate.test.js +2 -2
- package/commands/{theme → cms/theme}/__tests__/preview.test.js +2 -2
- package/commands/cms/theme/create.d.ts +6 -0
- package/commands/cms/theme/create.js +58 -0
- package/commands/cms/theme/generate-selectors.d.ts +6 -0
- package/commands/cms/theme/generate-selectors.js +171 -0
- package/commands/cms/theme/marketplace-validate.d.ts +6 -0
- package/commands/cms/theme/marketplace-validate.js +46 -0
- package/commands/cms/theme/preview.d.ts +12 -0
- package/commands/cms/theme/preview.js +224 -0
- package/commands/cms/theme.d.ts +3 -0
- package/commands/cms/theme.js +25 -0
- package/commands/cms/upload.d.ts +12 -0
- package/commands/cms/upload.js +212 -0
- package/commands/cms/watch.d.ts +14 -0
- package/commands/cms/watch.js +138 -0
- package/commands/cms/webpack/create.d.ts +6 -0
- package/commands/cms/webpack/create.js +58 -0
- package/commands/cms/webpack.d.ts +3 -0
- package/commands/cms/webpack.js +17 -0
- package/commands/cms.js +26 -0
- package/commands/create.js +4 -2
- package/commands/customObject/{schema/__tests__/create.test.js → __tests__/createSchema.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/delete.test.js → __tests__/deleteSchema.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/fetch-all.test.js → __tests__/fetch-all-schemas.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/fetch.test.js → __tests__/fetchSchema.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/list.test.js → __tests__/listSchemas.test.js} +5 -5
- package/commands/customObject/{schema/__tests__/update.test.js → __tests__/updateSchema.test.js} +5 -5
- package/commands/customObject/createSchema.d.ts +6 -0
- package/commands/customObject/createSchema.js +56 -0
- package/commands/customObject/deleteSchema.d.ts +7 -0
- package/commands/customObject/deleteSchema.js +69 -0
- package/commands/customObject/fetchAllSchemas.d.ts +6 -0
- package/commands/customObject/fetchAllSchemas.js +57 -0
- package/commands/customObject/fetchSchema.d.ts +7 -0
- package/commands/customObject/fetchSchema.js +67 -0
- package/commands/customObject/listSchemas.d.ts +4 -0
- package/commands/customObject/listSchemas.js +35 -0
- package/commands/customObject/schema/create.d.ts +4 -6
- package/commands/customObject/schema/create.js +13 -36
- package/commands/customObject/schema/delete.d.ts +4 -7
- package/commands/customObject/schema/delete.js +15 -50
- package/commands/customObject/schema/fetch-all.d.ts +4 -6
- package/commands/customObject/schema/fetch-all.js +14 -41
- package/commands/customObject/schema/fetch.d.ts +4 -7
- package/commands/customObject/schema/fetch.js +14 -49
- package/commands/customObject/schema/list.d.ts +4 -4
- package/commands/customObject/schema/list.js +10 -19
- package/commands/customObject/schema/update.d.ts +4 -7
- package/commands/customObject/schema/update.js +15 -50
- package/commands/customObject/schema.js +4 -2
- package/commands/customObject/updateSchema.d.ts +7 -0
- package/commands/customObject/updateSchema.js +71 -0
- package/commands/customObject.js +16 -1
- package/commands/feedback.js +1 -1
- package/commands/fetch.d.ts +4 -12
- package/commands/fetch.js +19 -46
- package/commands/function/deploy.d.ts +4 -6
- package/commands/function/deploy.js +14 -71
- package/commands/function/list.d.ts +4 -6
- package/commands/function/list.js +14 -40
- package/commands/function/server.d.ts +4 -10
- package/commands/function/server.js +22 -29
- package/commands/function.d.ts +2 -4
- package/commands/function.js +25 -14
- package/commands/lint.d.ts +4 -6
- package/commands/lint.js +13 -65
- package/commands/list.d.ts +4 -6
- package/commands/list.js +13 -74
- package/commands/logs.d.ts +4 -10
- package/commands/logs.js +24 -87
- package/commands/module/marketplace-validate.d.ts +4 -6
- package/commands/module/marketplace-validate.js +15 -27
- package/commands/module.d.ts +2 -2
- package/commands/module.js +17 -15
- package/commands/mv.d.ts +4 -7
- package/commands/mv.js +13 -39
- package/commands/project/__tests__/add.test.js +12 -12
- package/commands/project/__tests__/devUnifiedFlow.test.js +32 -0
- package/commands/project/__tests__/list.test.js +31 -0
- package/commands/project/__tests__/migrate.test.js +1 -0
- package/commands/project/add.d.ts +2 -2
- package/commands/project/add.js +3 -2
- package/commands/project/create.js +1 -1
- package/commands/project/dev/deprecatedFlow.js +2 -2
- package/commands/project/dev/index.js +5 -5
- package/commands/project/dev/unifiedFlow.js +8 -3
- package/commands/project/download.js +5 -2
- package/commands/project/installDeps.d.ts +2 -2
- package/commands/project/installDeps.js +1 -0
- package/commands/project/list.d.ts +4 -0
- package/commands/project/list.js +62 -0
- package/commands/project/migrate.js +5 -2
- package/commands/project.js +2 -0
- package/commands/remove.d.ts +4 -6
- package/commands/remove.js +12 -24
- package/commands/testAccount/create.js +2 -2
- package/commands/testAccount/delete.js +1 -1
- package/commands/theme/generate-selectors.d.ts +4 -6
- package/commands/theme/generate-selectors.js +14 -152
- package/commands/theme/marketplace-validate.d.ts +4 -6
- package/commands/theme/marketplace-validate.js +14 -25
- package/commands/theme/preview.d.ts +4 -12
- package/commands/theme/preview.js +18 -180
- package/commands/theme.d.ts +2 -2
- package/commands/theme.js +19 -13
- package/commands/upload.d.ts +4 -12
- package/commands/upload.js +19 -169
- package/commands/watch.d.ts +4 -14
- package/commands/watch.js +23 -88
- package/lang/en.d.ts +560 -425
- package/lang/en.js +562 -427
- package/lang/en.lyaml +2 -2
- package/lib/__tests__/buildAccount.test.js +2 -2
- package/lib/buildAccount.d.ts +2 -2
- package/lib/buildAccount.js +7 -7
- package/lib/configMigrate.js +88 -9
- package/lib/constants.d.ts +9 -0
- package/lib/constants.js +9 -0
- package/lib/generateSelectors.js +1 -1
- package/lib/middleware/autoUpdateMiddleware.d.ts +2 -1
- package/lib/middleware/autoUpdateMiddleware.js +12 -2
- package/lib/middleware/commandTargetingUtils.d.ts +1 -1
- package/lib/middleware/commandTargetingUtils.js +16 -20
- package/lib/projects/__tests__/AppDevModeInterface.test.js +95 -109
- package/lib/projects/__tests__/DevServerManager.test.js +183 -0
- package/lib/projects/__tests__/LocalDevProcess.test.js +6 -5
- package/lib/projects/__tests__/LocalDevWebsocketServer.test.js +6 -6
- package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.d.ts +1 -0
- package/lib/projects/__tests__/UIExtensionsDevModeInterface.test.js +161 -0
- package/lib/projects/__tests__/deploy.test.js +9 -9
- package/lib/projects/__tests__/upload.test.js +2 -2
- package/lib/projects/add/__tests__/v2AddComponent.test.d.ts +1 -0
- package/lib/projects/add/__tests__/{v3AddComponent.test.js → v2AddComponent.test.js} +35 -35
- package/lib/projects/add/{v3AddComponent.d.ts → v2AddComponent.d.ts} +1 -1
- package/lib/projects/add/{v3AddComponent.js → v2AddComponent.js} +5 -5
- package/lib/projects/create/__tests__/v2.test.d.ts +1 -0
- package/lib/projects/create/__tests__/{v3.test.js → v2.test.js} +2 -2
- package/lib/projects/create/index.js +2 -2
- package/lib/projects/create/{v3.d.ts → v2.d.ts} +3 -3
- package/lib/projects/create/{v3.js → v2.js} +3 -3
- package/lib/projects/deploy.d.ts +1 -1
- package/lib/projects/deploy.js +2 -2
- package/lib/projects/localDev/AppDevModeInterface.d.ts +9 -3
- package/lib/projects/localDev/AppDevModeInterface.js +116 -105
- package/lib/projects/localDev/DevServerManager.d.ts +10 -29
- package/lib/projects/localDev/DevServerManager.js +20 -76
- package/lib/projects/localDev/DevServerManager_DEPRECATED.d.ts +40 -0
- package/lib/projects/localDev/DevServerManager_DEPRECATED.js +120 -0
- package/lib/projects/localDev/{LocalDevManager.js → LocalDevManager_DEPRECATED.js} +6 -6
- package/lib/projects/localDev/LocalDevProcess.js +3 -2
- package/lib/projects/localDev/LocalDevState.d.ts +3 -0
- package/lib/projects/localDev/LocalDevState.js +9 -0
- package/lib/projects/localDev/LocalDevWebsocketServer.d.ts +4 -0
- package/lib/projects/localDev/LocalDevWebsocketServer.js +39 -6
- package/lib/projects/localDev/UIExtensionsDevModeInterface.d.ts +13 -0
- package/lib/projects/localDev/UIExtensionsDevModeInterface.js +37 -0
- package/lib/projects/localDev/helpers/account.d.ts +1 -1
- package/lib/projects/localDev/helpers/account.js +2 -2
- package/lib/projects/localDev/helpers/process.d.ts +1 -0
- package/lib/projects/localDev/helpers/process.js +15 -0
- package/lib/projects/localDev/helpers/project.js +2 -3
- package/lib/projects/localDev/localDevWebsocketServerUtils.d.ts +3 -0
- package/lib/projects/localDev/localDevWebsocketServerUtils.js +9 -0
- package/lib/projects/urls.d.ts +0 -1
- package/lib/projects/urls.js +0 -3
- package/lib/prompts/__tests__/projectAddPrompt.test.js +10 -10
- package/lib/prompts/installAppPrompt.d.ts +1 -6
- package/lib/prompts/installAppPrompt.js +1 -6
- package/lib/prompts/projectAddPrompt.d.ts +2 -2
- package/lib/prompts/projectAddPrompt.js +1 -1
- package/lib/theme/__tests__/migrate.test.js +4 -4
- package/lib/ui/index.d.ts +2 -0
- package/lib/ui/index.js +8 -0
- package/lib/ui/uiMessages.d.ts +5 -0
- package/lib/ui/uiMessages.js +5 -0
- package/mcp-server/tools/cms/HsCreateModuleTool.d.ts +2 -2
- package/mcp-server/tools/project/__tests__/CreateProjectTool.test.js +1 -1
- package/package.json +6 -5
- package/types/Cms.d.ts +6 -6
- package/lib/projects/localDev/DevServerManagerV2.d.ts +0 -22
- package/lib/projects/localDev/DevServerManagerV2.js +0 -81
- /package/commands/{customObject/schema → cms}/__tests__/delete.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/fetch.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/function.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/lint.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/list.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/mv.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/__tests__}/theme.test.d.ts +0 -0
- /package/commands/{__tests__ → cms/function/__tests__}/logs.test.d.ts +0 -0
- /package/commands/{theme → cms/theme}/__tests__/generate-selectors.test.d.ts +0 -0
- /package/commands/{theme → cms/theme}/__tests__/generate-selectors.test.js +0 -0
- /package/commands/{theme → cms/theme}/__tests__/marketplace-validate.test.d.ts +0 -0
- /package/commands/{theme → cms/theme}/__tests__/preview.test.d.ts +0 -0
- /package/commands/{__tests__/remove.test.d.ts → customObject/__tests__/createSchema.test.d.ts} +0 -0
- /package/commands/customObject/{schema/__tests__/create.test.d.ts → __tests__/deleteSchema.test.d.ts} +0 -0
- /package/commands/customObject/{schema/__tests__/fetch-all.test.d.ts → __tests__/fetch-all-schemas.test.d.ts} +0 -0
- /package/commands/customObject/{schema/__tests__/fetch.test.d.ts → __tests__/fetchSchema.test.d.ts} +0 -0
- /package/commands/customObject/{schema/__tests__/list.test.d.ts → __tests__/listSchemas.test.d.ts} +0 -0
- /package/commands/customObject/{schema/__tests__/update.test.d.ts → __tests__/updateSchema.test.d.ts} +0 -0
- /package/{lib/projects/add/__tests__/v3AddComponent.test.d.ts → commands/project/__tests__/list.test.d.ts} +0 -0
- /package/{commands/create → lib/cmsAssets}/api-sample.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/api-sample.js +0 -0
- /package/{commands/create → lib/cmsAssets}/app.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/app.js +0 -0
- /package/{commands/create → lib/cmsAssets}/function.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/function.js +0 -0
- /package/{commands/create → lib/cmsAssets}/index.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/index.js +0 -0
- /package/{commands/create → lib/cmsAssets}/module.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/module.js +0 -0
- /package/{commands/create → lib/cmsAssets}/react-app.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/react-app.js +0 -0
- /package/{commands/create → lib/cmsAssets}/template.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/template.js +0 -0
- /package/{commands/create → lib/cmsAssets}/vue-app.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/vue-app.js +0 -0
- /package/{commands/create → lib/cmsAssets}/webpack-serverless.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/webpack-serverless.js +0 -0
- /package/{commands/create → lib/cmsAssets}/website-theme.d.ts +0 -0
- /package/{commands/create → lib/cmsAssets}/website-theme.js +0 -0
- /package/lib/projects/{create/__tests__/v3.test.d.ts → __tests__/DevServerManager.test.d.ts} +0 -0
- /package/lib/projects/localDev/{LocalDevManager.d.ts → LocalDevManager_DEPRECATED.d.ts} +0 -0
|
@@ -1,43 +1,31 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import { kickOffValidation, pollForValidationFinish, fetchValidationResults, processValidationErrors, displayValidationResults, } from '../../lib/marketplaceValidate.js';
|
|
4
|
-
import { commands } from '../../lang/en.js';
|
|
5
|
-
import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
|
|
1
|
+
import { uiCommandRelocatedMessage, uiCommandRenamedDescription, uiDeprecatedTag, } from '../../lib/ui/index.js';
|
|
2
|
+
import marketplaceValidateCommand from '../cms/module/marketplace-validate.js';
|
|
6
3
|
import { makeYargsBuilder } from '../../lib/yargsUtils.js';
|
|
7
|
-
|
|
8
|
-
const
|
|
4
|
+
import { commands } from '../../lang/en.js';
|
|
5
|
+
const command = 'marketplace-validate [src]';
|
|
6
|
+
const describe = uiDeprecatedTag(marketplaceValidateCommand.describe, false);
|
|
9
7
|
async function handler(args) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
SpinniesManager.init();
|
|
13
|
-
SpinniesManager.add('marketplaceValidation', {
|
|
14
|
-
text: commands.module.subcommands.marketplaceValidate.logs.validatingModule(src),
|
|
15
|
-
});
|
|
16
|
-
const assetType = 'MODULE';
|
|
17
|
-
const validationId = await kickOffValidation(derivedAccountId, assetType, src);
|
|
18
|
-
await pollForValidationFinish(derivedAccountId, validationId);
|
|
19
|
-
SpinniesManager.remove('marketplaceValidation');
|
|
20
|
-
const validationResults = await fetchValidationResults(derivedAccountId, validationId);
|
|
21
|
-
processValidationErrors(commands.module.subcommands.marketplaceValidate.errors.invalidPath, validationResults);
|
|
22
|
-
displayValidationResults(commands.module.subcommands.marketplaceValidate.results, validationResults);
|
|
23
|
-
process.exit(EXIT_CODES.SUCCESS);
|
|
8
|
+
uiCommandRelocatedMessage('hs cms module marketplace-validate');
|
|
9
|
+
await marketplaceValidateCommand.handler(args);
|
|
24
10
|
}
|
|
25
|
-
function
|
|
11
|
+
function deprecatedMarketplaceValidateBuilder(yargs) {
|
|
26
12
|
yargs.positional('src', {
|
|
27
|
-
describe: commands.module.subcommands.marketplaceValidate
|
|
13
|
+
describe: commands.cms.subcommands.module.subcommands.marketplaceValidate
|
|
14
|
+
.positionals.src,
|
|
28
15
|
type: 'string',
|
|
29
16
|
});
|
|
30
17
|
return yargs;
|
|
31
18
|
}
|
|
32
|
-
const
|
|
19
|
+
const verboseDescribe = uiCommandRenamedDescription(marketplaceValidateCommand.describe, 'hs cms module marketplace-validate');
|
|
20
|
+
const builder = makeYargsBuilder(deprecatedMarketplaceValidateBuilder, command, verboseDescribe, {
|
|
33
21
|
useConfigOptions: true,
|
|
34
22
|
useAccountOptions: true,
|
|
35
23
|
useEnvironmentOptions: true,
|
|
36
24
|
});
|
|
37
|
-
const
|
|
38
|
-
|
|
25
|
+
const deprecatedMarketplaceValidateCommand = {
|
|
26
|
+
...marketplaceValidateCommand,
|
|
39
27
|
describe,
|
|
40
28
|
handler,
|
|
41
29
|
builder,
|
|
42
30
|
};
|
|
43
|
-
export default
|
|
31
|
+
export default deprecatedMarketplaceValidateCommand;
|
package/commands/module.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { YargsCommandModuleBucket } from '../types/Yargs.js';
|
|
2
|
-
declare const
|
|
3
|
-
export default
|
|
2
|
+
declare const deprecatedCmsModuleCommand: YargsCommandModuleBucket;
|
|
3
|
+
export default deprecatedCmsModuleCommand;
|
package/commands/module.js
CHANGED
|
@@ -1,21 +1,23 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { uiCommandRelocatedMessage, uiCommandRenamedDescription, uiDeprecatedTag, } from '../lib/ui/index.js';
|
|
2
|
+
import cmsModuleCommand from './cms/module.js';
|
|
3
|
+
import marketplaceValidateCommand from './module/marketplace-validate.js';
|
|
3
4
|
import { makeYargsBuilder } from '../lib/yargsUtils.js';
|
|
4
|
-
const command = 'module';
|
|
5
|
-
const describe =
|
|
6
|
-
function
|
|
7
|
-
|
|
5
|
+
const command = ['module'];
|
|
6
|
+
const describe = uiDeprecatedTag(cmsModuleCommand.describe, false);
|
|
7
|
+
async function handler(args) {
|
|
8
|
+
uiCommandRelocatedMessage('hs cms module');
|
|
9
|
+
await cmsModuleCommand.handler(args);
|
|
10
|
+
}
|
|
11
|
+
function deprecatedCmsModuleBuilder(yargs) {
|
|
12
|
+
yargs.command(marketplaceValidateCommand).demandCommand(1, '');
|
|
8
13
|
return yargs;
|
|
9
14
|
}
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
});
|
|
15
|
-
const moduleCommand = {
|
|
16
|
-
command,
|
|
15
|
+
const verboseDescribe = uiCommandRenamedDescription(cmsModuleCommand.describe, 'hs cms module');
|
|
16
|
+
const builder = makeYargsBuilder(deprecatedCmsModuleBuilder, command, verboseDescribe);
|
|
17
|
+
const deprecatedCmsModuleCommand = {
|
|
18
|
+
...cmsModuleCommand,
|
|
17
19
|
describe,
|
|
20
|
+
handler,
|
|
18
21
|
builder,
|
|
19
|
-
handler: () => { },
|
|
20
22
|
};
|
|
21
|
-
export default
|
|
23
|
+
export default deprecatedCmsModuleCommand;
|
package/commands/mv.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
declare const cmsMvCommand: YargsCommandModule<unknown, MvArgs>;
|
|
7
|
-
export default cmsMvCommand;
|
|
1
|
+
import { YargsCommandModule } from '../types/Yargs.js';
|
|
2
|
+
import { MvArgs } from './cms/mv.js';
|
|
3
|
+
declare const deprecatedCmsMvCommand: YargsCommandModule<unknown, MvArgs>;
|
|
4
|
+
export default deprecatedCmsMvCommand;
|
package/commands/mv.js
CHANGED
|
@@ -1,61 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import
|
|
3
|
-
import { logError, ApiErrorContext } from '../lib/errorHandlers/index.js';
|
|
4
|
-
import { trackCommandUsage } from '../lib/usageTracking.js';
|
|
5
|
-
import { isPathFolder } from '../lib/filesystem.js';
|
|
6
|
-
import { uiBetaTag } from '../lib/ui/index.js';
|
|
1
|
+
import { uiCommandRelocatedMessage, uiCommandRenamedDescription, uiDeprecatedTag, } from '../lib/ui/index.js';
|
|
2
|
+
import cmsMvCommand from './cms/mv.js';
|
|
7
3
|
import { makeYargsBuilder } from '../lib/yargsUtils.js';
|
|
8
|
-
import { uiLogger } from '../lib/ui/logger.js';
|
|
9
4
|
import { commands } from '../lang/en.js';
|
|
10
|
-
function getCorrectedDestPath(srcPath, destPath) {
|
|
11
|
-
if (!isPathFolder(srcPath)) {
|
|
12
|
-
return destPath;
|
|
13
|
-
}
|
|
14
|
-
// Makes sure that nested folders are moved independently
|
|
15
|
-
return `${destPath}/${srcPath.split('/').pop()}`;
|
|
16
|
-
}
|
|
17
5
|
const command = 'mv <srcPath> <destPath>';
|
|
18
|
-
const describe =
|
|
6
|
+
const describe = uiDeprecatedTag(cmsMvCommand.describe, false);
|
|
19
7
|
async function handler(args) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
try {
|
|
23
|
-
await moveFile(derivedAccountId, srcPath, getCorrectedDestPath(srcPath, destPath));
|
|
24
|
-
uiLogger.success(commands.mv.move(srcPath, destPath, derivedAccountId));
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
uiLogger.error(commands.mv.errors.moveFailed(srcPath, destPath, derivedAccountId));
|
|
28
|
-
if (isSpecifiedError(error, { statusCode: 409 })) {
|
|
29
|
-
uiLogger.error(commands.mv.errors.sourcePathExists(srcPath, destPath));
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
logError(error, new ApiErrorContext({
|
|
33
|
-
accountId: derivedAccountId,
|
|
34
|
-
}));
|
|
35
|
-
}
|
|
36
|
-
}
|
|
8
|
+
uiCommandRelocatedMessage('hs cms mv');
|
|
9
|
+
await cmsMvCommand.handler(args);
|
|
37
10
|
}
|
|
38
|
-
function
|
|
11
|
+
function deprecatedCmsMvBuilder(yargs) {
|
|
39
12
|
yargs.positional('srcPath', {
|
|
40
|
-
describe:
|
|
13
|
+
describe: commands.cms.subcommands.mv.positionals.srcPath.describe,
|
|
41
14
|
type: 'string',
|
|
42
15
|
});
|
|
43
16
|
yargs.positional('destPath', {
|
|
44
|
-
describe:
|
|
17
|
+
describe: commands.cms.subcommands.mv.positionals.destPath.describe,
|
|
45
18
|
type: 'string',
|
|
46
19
|
});
|
|
47
20
|
return yargs;
|
|
48
21
|
}
|
|
49
|
-
const
|
|
22
|
+
const verboseDescribe = uiCommandRenamedDescription(cmsMvCommand.describe, 'hs cms mv');
|
|
23
|
+
const builder = makeYargsBuilder(deprecatedCmsMvBuilder, command, verboseDescribe, {
|
|
50
24
|
useGlobalOptions: true,
|
|
51
25
|
useConfigOptions: true,
|
|
52
26
|
useAccountOptions: true,
|
|
53
27
|
useEnvironmentOptions: true,
|
|
54
28
|
});
|
|
55
|
-
const
|
|
56
|
-
|
|
29
|
+
const deprecatedCmsMvCommand = {
|
|
30
|
+
...cmsMvCommand,
|
|
57
31
|
describe,
|
|
58
32
|
handler,
|
|
59
33
|
builder,
|
|
60
34
|
};
|
|
61
|
-
export default
|
|
35
|
+
export default deprecatedCmsMvCommand;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import yargs from 'yargs';
|
|
2
2
|
import projectAddCommand from '../add.js';
|
|
3
3
|
import { marketplaceDistribution, oAuth, privateDistribution, staticAuth, } from '../../../lib/constants.js';
|
|
4
|
-
import {
|
|
4
|
+
import { v2AddComponent } from '../../../lib/projects/add/v2AddComponent.js';
|
|
5
5
|
import { legacyAddComponent } from '../../../lib/projects/add/legacyAddComponent.js';
|
|
6
6
|
import { getProjectConfig } from '../../../lib/projects/config.js';
|
|
7
7
|
import { isV2Project } from '../../../lib/projects/platformVersion.js';
|
|
@@ -9,15 +9,15 @@ import { trackCommandUsage } from '../../../lib/usageTracking.js';
|
|
|
9
9
|
vi.mock('../../../lib/commonOpts');
|
|
10
10
|
vi.mock('../../../lib/ui/logger.js');
|
|
11
11
|
vi.mock('../../../lib/errorHandlers/index.js');
|
|
12
|
-
vi.mock('../../../lib/projects/add/
|
|
12
|
+
vi.mock('../../../lib/projects/add/v2AddComponent');
|
|
13
13
|
vi.mock('../../../lib/projects/add/legacyAddComponent');
|
|
14
14
|
vi.mock('../../../lib/projects/config');
|
|
15
15
|
vi.mock('../../../lib/projects/platformVersion');
|
|
16
16
|
vi.mock('../../../lib/usageTracking');
|
|
17
|
-
const
|
|
17
|
+
const mockedV2AddComponent = vi.mocked(v2AddComponent);
|
|
18
18
|
const mockedLegacyAddComponent = vi.mocked(legacyAddComponent);
|
|
19
19
|
const mockedGetProjectConfig = vi.mocked(getProjectConfig);
|
|
20
|
-
const
|
|
20
|
+
const mockedUseV2Api = vi.mocked(isV2Project);
|
|
21
21
|
const mockedTrackCommandUsage = vi.mocked(trackCommandUsage);
|
|
22
22
|
describe('commands/project/add', () => {
|
|
23
23
|
const yargsMock = yargs;
|
|
@@ -61,7 +61,7 @@ describe('commands/project/add', () => {
|
|
|
61
61
|
const mockProjectConfig = {
|
|
62
62
|
name: 'test-project',
|
|
63
63
|
srcDir: 'src',
|
|
64
|
-
platformVersion: '
|
|
64
|
+
platformVersion: '2025.2',
|
|
65
65
|
};
|
|
66
66
|
const mockProjectDir = '/path/to/project';
|
|
67
67
|
const mockArgs = {
|
|
@@ -75,23 +75,23 @@ describe('commands/project/add', () => {
|
|
|
75
75
|
projectDir: mockProjectDir,
|
|
76
76
|
});
|
|
77
77
|
mockedTrackCommandUsage.mockResolvedValue();
|
|
78
|
-
|
|
78
|
+
mockedV2AddComponent.mockResolvedValue();
|
|
79
79
|
mockedLegacyAddComponent.mockResolvedValue();
|
|
80
80
|
vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
81
81
|
throw new Error('process.exit called');
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
|
-
it('should call
|
|
85
|
-
|
|
84
|
+
it('should call v2AddComponent with accountId for v2 projects', async () => {
|
|
85
|
+
mockedUseV2Api.mockReturnValue(true);
|
|
86
86
|
await expect(projectAddCommand.handler(mockArgs)).rejects.toThrow('process.exit called');
|
|
87
|
-
expect(
|
|
87
|
+
expect(mockedV2AddComponent).toHaveBeenCalledWith(mockArgs, mockProjectDir, mockProjectConfig, 123);
|
|
88
88
|
expect(mockedLegacyAddComponent).not.toHaveBeenCalled();
|
|
89
89
|
});
|
|
90
|
-
it('should call legacyAddComponent for non-
|
|
91
|
-
|
|
90
|
+
it('should call legacyAddComponent for non-v2 projects', async () => {
|
|
91
|
+
mockedUseV2Api.mockReturnValue(false);
|
|
92
92
|
await expect(projectAddCommand.handler(mockArgs)).rejects.toThrow('process.exit called');
|
|
93
93
|
expect(mockedLegacyAddComponent).toHaveBeenCalledWith(mockArgs, mockProjectDir, mockProjectConfig, 123);
|
|
94
|
-
expect(
|
|
94
|
+
expect(mockedV2AddComponent).not.toHaveBeenCalled();
|
|
95
95
|
});
|
|
96
96
|
it('should exit with error when project config is not found', async () => {
|
|
97
97
|
mockedGetProjectConfig.mockResolvedValue({
|
|
@@ -3,6 +3,7 @@ import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
|
|
|
3
3
|
import { translateForLocalDev } from '@hubspot/project-parsing-lib';
|
|
4
4
|
import { getConfigAccounts, getAccountConfig, } from '@hubspot/local-dev-lib/config';
|
|
5
5
|
import { getValidEnv } from '@hubspot/local-dev-lib/environment';
|
|
6
|
+
import { getServerPortByInstanceId } from '@hubspot/local-dev-lib/portManager';
|
|
6
7
|
import { logError } from '../../../lib/errorHandlers/index.js';
|
|
7
8
|
import { ensureProjectExists } from '../../../lib/projects/ensureProjectExists.js';
|
|
8
9
|
import { createInitialBuildForNewProject, createNewProjectForLocalDev, } from '../../../lib/projects/localDev/helpers/project.js';
|
|
@@ -33,6 +34,7 @@ vi.mock('@hubspot/ui-extensions-dev-server', () => ({
|
|
|
33
34
|
vi.mock('@hubspot/project-parsing-lib');
|
|
34
35
|
vi.mock('@hubspot/local-dev-lib/config');
|
|
35
36
|
vi.mock('@hubspot/local-dev-lib/environment');
|
|
37
|
+
vi.mock('@hubspot/local-dev-lib/portManager');
|
|
36
38
|
vi.mock('../../../lib/errorHandlers');
|
|
37
39
|
vi.mock('../../../lib/projects/ensureProjectExists');
|
|
38
40
|
vi.mock('../../../lib/projects/localDev/helpers/project');
|
|
@@ -135,6 +137,7 @@ describe('unifiedProjectDevFlow', () => {
|
|
|
135
137
|
uiLogger.error.mockImplementation(() => { });
|
|
136
138
|
uiLogger.log.mockImplementation(() => { });
|
|
137
139
|
uiLine.mockImplementation(() => { });
|
|
140
|
+
getServerPortByInstanceId.mockRejectedValue(new Error('No server running'));
|
|
138
141
|
});
|
|
139
142
|
describe('successful flow', () => {
|
|
140
143
|
it('should complete successfully with existing project and provided testing account', async () => {
|
|
@@ -400,4 +403,33 @@ describe('unifiedProjectDevFlow', () => {
|
|
|
400
403
|
expect(uiLogger.log).toHaveBeenCalledWith(commands.project.dev.logs.testingAccountFlagExplanation(providedTestingAccountId));
|
|
401
404
|
});
|
|
402
405
|
});
|
|
406
|
+
describe('confirmLocalDevIsNotRunning', () => {
|
|
407
|
+
it('should exit with error when local dev is already running', async () => {
|
|
408
|
+
getServerPortByInstanceId.mockResolvedValue(3000);
|
|
409
|
+
const mockExit = vi.spyOn(process, 'exit').mockImplementation(() => {
|
|
410
|
+
throw new Error('Process.exit called');
|
|
411
|
+
});
|
|
412
|
+
await unifiedProjectDevFlow({
|
|
413
|
+
args: mockArgs,
|
|
414
|
+
targetProjectAccountId: mockTargetProjectAccountId,
|
|
415
|
+
providedTargetTestingAccountId: mockProvidedTargetTestingAccountId,
|
|
416
|
+
projectConfig: mockProjectConfig,
|
|
417
|
+
projectDir: mockProjectDir,
|
|
418
|
+
});
|
|
419
|
+
expect(uiLogger.error).toHaveBeenCalledWith(commands.project.dev.errors.localDevAlreadyRunning);
|
|
420
|
+
expect(mockExit).toHaveBeenCalledWith(1);
|
|
421
|
+
mockExit.mockRestore();
|
|
422
|
+
});
|
|
423
|
+
it('should continue when local dev is not running', async () => {
|
|
424
|
+
getServerPortByInstanceId.mockRejectedValue(new Error('No server running'));
|
|
425
|
+
await unifiedProjectDevFlow({
|
|
426
|
+
args: mockArgs,
|
|
427
|
+
targetProjectAccountId: mockTargetProjectAccountId,
|
|
428
|
+
providedTargetTestingAccountId: mockProvidedTargetTestingAccountId,
|
|
429
|
+
projectConfig: mockProjectConfig,
|
|
430
|
+
projectDir: mockProjectDir,
|
|
431
|
+
});
|
|
432
|
+
expect(mockLocalDevProcess.start).toHaveBeenCalled();
|
|
433
|
+
});
|
|
434
|
+
});
|
|
403
435
|
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import yargs from 'yargs';
|
|
2
|
+
import { addAccountOptions, addConfigOptions, } from '../../../lib/commonOpts.js';
|
|
3
|
+
import projectListCommand from '../list.js';
|
|
4
|
+
vi.mock('../../../lib/commonOpts');
|
|
5
|
+
describe('commands/project/list', () => {
|
|
6
|
+
const yargsMock = yargs;
|
|
7
|
+
describe('command', () => {
|
|
8
|
+
it('should have the correct command structure', () => {
|
|
9
|
+
expect(projectListCommand.command).toEqual(['list', 'ls']);
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
describe('describe', () => {
|
|
13
|
+
it('should provide a description', () => {
|
|
14
|
+
expect(projectListCommand.describe).toBeDefined();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
describe('builder', () => {
|
|
18
|
+
it('should support the correct options', () => {
|
|
19
|
+
projectListCommand.builder(yargsMock);
|
|
20
|
+
expect(addAccountOptions).toHaveBeenCalledTimes(1);
|
|
21
|
+
expect(addAccountOptions).toHaveBeenCalledWith(yargsMock);
|
|
22
|
+
expect(addConfigOptions).toHaveBeenCalledTimes(1);
|
|
23
|
+
expect(addConfigOptions).toHaveBeenCalledWith(yargsMock);
|
|
24
|
+
});
|
|
25
|
+
it('should define examples', () => {
|
|
26
|
+
const exampleSpy = vi.spyOn(yargsMock, 'example');
|
|
27
|
+
projectListCommand.builder(yargsMock);
|
|
28
|
+
expect(exampleSpy).toHaveBeenCalled();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -10,6 +10,7 @@ vi.mock('../../../lib/ui/logger.js');
|
|
|
10
10
|
vi.mock('../../../lib/app/migrate');
|
|
11
11
|
vi.mock('../../../lib/projects/config');
|
|
12
12
|
vi.mock('../../../lib/ui');
|
|
13
|
+
vi.mock('../../../lib/usageTracking.js');
|
|
13
14
|
const { v2025_2 } = PLATFORM_VERSIONS;
|
|
14
15
|
describe('commands/project/migrate', () => {
|
|
15
16
|
const yargsMock = yargs;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { YargsCommandModule, CommonArgs } from '../../types/Yargs.js';
|
|
2
|
-
export type ProjectAddArgs = CommonArgs & {
|
|
1
|
+
import { YargsCommandModule, CommonArgs, ConfigArgs } from '../../types/Yargs.js';
|
|
2
|
+
export type ProjectAddArgs = CommonArgs & ConfigArgs & {
|
|
3
3
|
type?: string;
|
|
4
4
|
name?: string;
|
|
5
5
|
features?: string[];
|
package/commands/project/add.js
CHANGED
|
@@ -5,7 +5,7 @@ import { makeYargsBuilder } from '../../lib/yargsUtils.js';
|
|
|
5
5
|
import { commands } from '../../lang/en.js';
|
|
6
6
|
import { isV2Project } from '../../lib/projects/platformVersion.js';
|
|
7
7
|
import { legacyAddComponent } from '../../lib/projects/add/legacyAddComponent.js';
|
|
8
|
-
import {
|
|
8
|
+
import { v2AddComponent } from '../../lib/projects/add/v2AddComponent.js';
|
|
9
9
|
import { marketplaceDistribution, oAuth, privateDistribution, staticAuth, } from '../../lib/constants.js';
|
|
10
10
|
import { uiLogger } from '../../lib/ui/logger.js';
|
|
11
11
|
const command = 'add';
|
|
@@ -20,7 +20,7 @@ async function handler(args) {
|
|
|
20
20
|
}
|
|
21
21
|
const isV2ProjectCreate = isV2Project(projectConfig.platformVersion);
|
|
22
22
|
if (isV2ProjectCreate) {
|
|
23
|
-
await
|
|
23
|
+
await v2AddComponent(args, projectDir, projectConfig, derivedAccountId);
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
26
26
|
await legacyAddComponent(args, projectDir, projectConfig, derivedAccountId);
|
|
@@ -68,6 +68,7 @@ function projectAddBuilder(yargs) {
|
|
|
68
68
|
}
|
|
69
69
|
const builder = makeYargsBuilder(projectAddBuilder, command, describe, {
|
|
70
70
|
useGlobalOptions: true,
|
|
71
|
+
useConfigOptions: true,
|
|
71
72
|
});
|
|
72
73
|
const projectAddCommand = {
|
|
73
74
|
command,
|
|
@@ -5,7 +5,7 @@ import { getCwd } from '@hubspot/local-dev-lib/path';
|
|
|
5
5
|
import { trackCommandUsage } from '../../lib/usageTracking.js';
|
|
6
6
|
import { writeProjectConfig, getProjectConfig, } from '../../lib/projects/config.js';
|
|
7
7
|
import { EMPTY_PROJECT_TEMPLATE_NAME } from '../../lib/projects/create/legacy.js';
|
|
8
|
-
import { generateComponentPaths } from '../../lib/projects/create/
|
|
8
|
+
import { generateComponentPaths } from '../../lib/projects/create/v2.js';
|
|
9
9
|
import { PROJECT_WITH_APP, EMPTY_PROJECT } from '../../lib/constants.js';
|
|
10
10
|
import { uiFeatureHighlight } from '../../lib/ui/index.js';
|
|
11
11
|
import { debugError, logError } from '../../lib/errorHandlers/index.js';
|
|
@@ -6,7 +6,7 @@ import { commands } from '../../../lang/en.js';
|
|
|
6
6
|
import { uiLogger } from '../../../lib/ui/logger.js';
|
|
7
7
|
import { EXIT_CODES } from '../../../lib/enums/exitCodes.js';
|
|
8
8
|
import SpinniesManager from '../../../lib/ui/SpinniesManager.js';
|
|
9
|
-
import
|
|
9
|
+
import LocalDevManager_DEPRECATED from '../../../lib/projects/localDev/LocalDevManager_DEPRECATED.js';
|
|
10
10
|
import { confirmDefaultAccountIsTarget, suggestRecommendedNestedAccount, checkIfAccountFlagIsSupported, checkIfDefaultAccountIsSupported, createSandboxForLocalDev, createDeveloperTestAccountForLocalDev, useExistingDevTestAccount, checkIfParentAccountIsAuthed, hasSandboxes, } from '../../../lib/projects/localDev/helpers/account.js';
|
|
11
11
|
import { createInitialBuildForNewProject, createNewProjectForLocalDev, } from '../../../lib/projects/localDev/helpers/project.js';
|
|
12
12
|
import { handleExit } from '../../../lib/process.js';
|
|
@@ -121,7 +121,7 @@ export async function deprecatedProjectDevFlow({ args, accountId, projectConfig,
|
|
|
121
121
|
project = await createNewProjectForLocalDev(projectConfig, targetProjectAccountId, createNewSandbox, hasPublicApps);
|
|
122
122
|
deployedBuild = await createInitialBuildForNewProject(projectConfig, projectDir, targetProjectAccountId);
|
|
123
123
|
}
|
|
124
|
-
const LocalDev = new
|
|
124
|
+
const LocalDev = new LocalDevManager_DEPRECATED({
|
|
125
125
|
runnableComponents,
|
|
126
126
|
debug: args.debug,
|
|
127
127
|
deployedBuild,
|
|
@@ -12,14 +12,14 @@ import { commands } from '../../../lang/en.js';
|
|
|
12
12
|
import { uiLogger } from '../../../lib/ui/logger.js';
|
|
13
13
|
const command = 'dev';
|
|
14
14
|
const describe = commands.project.dev.describe;
|
|
15
|
-
function validateAccountFlags(testingAccount, projectAccount, userProvidedAccount,
|
|
15
|
+
function validateAccountFlags(testingAccount, projectAccount, userProvidedAccount, useV2) {
|
|
16
16
|
// Legacy projects do not support targetTestingAccount and targetProjectAccount
|
|
17
|
-
if (testingAccount && projectAccount && !
|
|
17
|
+
if (testingAccount && projectAccount && !useV2) {
|
|
18
18
|
uiLogger.error(commands.project.dev.errors.unsupportedAccountFlagLegacy);
|
|
19
19
|
process.exit(EXIT_CODES.ERROR);
|
|
20
20
|
}
|
|
21
|
-
if (userProvidedAccount &&
|
|
22
|
-
uiLogger.error(commands.project.dev.errors.
|
|
21
|
+
if (userProvidedAccount && useV2) {
|
|
22
|
+
uiLogger.error(commands.project.dev.errors.unsupportedAccountFlagV2);
|
|
23
23
|
process.exit(EXIT_CODES.ERROR);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
@@ -35,7 +35,7 @@ async function handler(args) {
|
|
|
35
35
|
validateAccountFlags(testingAccount, projectAccount, userProvidedAccount, useV2Projects);
|
|
36
36
|
uiLogger.log(commands.project.dev.logs.header);
|
|
37
37
|
if (useV2Projects) {
|
|
38
|
-
uiLogger.log(commands.project.dev.logs.
|
|
38
|
+
uiLogger.log(commands.project.dev.logs.learnMoreMessageV2);
|
|
39
39
|
}
|
|
40
40
|
else {
|
|
41
41
|
uiLogger.log(commands.project.dev.logs.learnMoreMessageLegacy);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import util from 'util';
|
|
3
3
|
import { HUBSPOT_ACCOUNT_TYPES } from '@hubspot/local-dev-lib/constants/config';
|
|
4
|
+
import { startPortManagerServer, stopPortManagerServer, } from '@hubspot/local-dev-lib/portManager';
|
|
4
5
|
import { isTranslationError } from '@hubspot/project-parsing-lib/src/lib/errors.js';
|
|
5
6
|
import { translateForLocalDev } from '@hubspot/project-parsing-lib';
|
|
6
7
|
import { getEnv, getConfigAccounts, getAccountConfig, } from '@hubspot/local-dev-lib/config';
|
|
@@ -19,7 +20,9 @@ import { isTestAccountOrSandbox, isUnifiedAccount, } from '../../../lib/accountT
|
|
|
19
20
|
import { uiLogger } from '../../../lib/ui/logger.js';
|
|
20
21
|
import { commands } from '../../../lang/en.js';
|
|
21
22
|
import LocalDevWebsocketServer from '../../../lib/projects/localDev/LocalDevWebsocketServer.js';
|
|
23
|
+
import { confirmLocalDevIsNotRunning } from '../../../lib/projects/localDev/helpers/process.js';
|
|
22
24
|
export async function unifiedProjectDevFlow({ args, targetProjectAccountId, providedTargetTestingAccountId, projectConfig, projectDir, }) {
|
|
25
|
+
await confirmLocalDevIsNotRunning();
|
|
23
26
|
const env = getValidEnv(getEnv(targetProjectAccountId));
|
|
24
27
|
let projectNodes;
|
|
25
28
|
let projectProfileData;
|
|
@@ -121,6 +124,7 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
|
|
|
121
124
|
// Check for missing/outdated dependencies
|
|
122
125
|
await checkAndInstallDependencies();
|
|
123
126
|
// End setup, start local dev process
|
|
127
|
+
await startPortManagerServer();
|
|
124
128
|
const localDevProcess = new LocalDevProcess({
|
|
125
129
|
initialProjectNodes: projectNodes,
|
|
126
130
|
initialProjectProfileData: projectProfileData,
|
|
@@ -133,11 +137,11 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
|
|
|
133
137
|
projectData: project,
|
|
134
138
|
env,
|
|
135
139
|
});
|
|
136
|
-
await localDevProcess.start();
|
|
137
|
-
const watcher = new LocalDevWatcher(localDevProcess);
|
|
138
|
-
watcher.start();
|
|
139
140
|
const websocketServer = new LocalDevWebsocketServer(localDevProcess, args.debug);
|
|
141
|
+
const watcher = new LocalDevWatcher(localDevProcess);
|
|
140
142
|
await websocketServer.start();
|
|
143
|
+
await localDevProcess.start();
|
|
144
|
+
watcher.start();
|
|
141
145
|
handleKeypress(async (key) => {
|
|
142
146
|
if ((key.ctrl && key.name === 'c') || key.name === 'q') {
|
|
143
147
|
await Promise.all([
|
|
@@ -151,5 +155,6 @@ export async function unifiedProjectDevFlow({ args, targetProjectAccountId, prov
|
|
|
151
155
|
localDevProcess.stop(!isSIGHUP);
|
|
152
156
|
watcher.stop();
|
|
153
157
|
websocketServer.shutdown();
|
|
158
|
+
stopPortManagerServer();
|
|
154
159
|
});
|
|
155
160
|
}
|
|
@@ -35,9 +35,12 @@ async function handler(args) {
|
|
|
35
35
|
uiLogger.error(commands.project.download.errors.noBuildIdToDownload);
|
|
36
36
|
process.exit(EXIT_CODES.ERROR);
|
|
37
37
|
}
|
|
38
|
-
const
|
|
38
|
+
const sanitizedProjectName = sanitizeFileName(projectName);
|
|
39
|
+
const absoluteDestPath = dest
|
|
40
|
+
? path.resolve(getCwd(), dest, sanitizedProjectName)
|
|
41
|
+
: path.resolve(getCwd(), sanitizedProjectName);
|
|
39
42
|
const { data: zippedProject } = await downloadProject(derivedAccountId, projectName, buildNumberToDownload);
|
|
40
|
-
await extractZipArchive(zippedProject, sanitizeFileName(projectName), path.resolve(absoluteDestPath)
|
|
43
|
+
await extractZipArchive(zippedProject, sanitizeFileName(projectName), path.resolve(absoluteDestPath));
|
|
41
44
|
uiLogger.log(commands.project.download.logs.downloadSucceeded(buildNumberToDownload, projectName));
|
|
42
45
|
process.exit(EXIT_CODES.SUCCESS);
|
|
43
46
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { CommonArgs, YargsCommandModule } from '../../types/Yargs.js';
|
|
2
|
-
export type ProjectInstallDepsArgs = CommonArgs & {
|
|
1
|
+
import { CommonArgs, ConfigArgs, YargsCommandModule } from '../../types/Yargs.js';
|
|
2
|
+
export type ProjectInstallDepsArgs = CommonArgs & ConfigArgs & {
|
|
3
3
|
packages?: string[];
|
|
4
4
|
};
|
|
5
5
|
declare const projectInstallDepsCommand: YargsCommandModule<unknown, ProjectInstallDepsArgs>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AccountArgs, CommonArgs, ConfigArgs, YargsCommandModule } from '../../types/Yargs.js';
|
|
2
|
+
type ProjectListArgs = CommonArgs & ConfigArgs & AccountArgs;
|
|
3
|
+
declare const projectListCommand: YargsCommandModule<unknown, ProjectListArgs>;
|
|
4
|
+
export default projectListCommand;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { trackCommandUsage } from '../../lib/usageTracking.js';
|
|
2
|
+
import { makeYargsBuilder } from '../../lib/yargsUtils.js';
|
|
3
|
+
import { fetchProjects } from '@hubspot/local-dev-lib/api/projects';
|
|
4
|
+
import { logError } from '../../lib/errorHandlers/index.js';
|
|
5
|
+
import { EXIT_CODES } from '../../lib/enums/exitCodes.js';
|
|
6
|
+
import { getTableContents, getTableHeader } from '../../lib/ui/table.js';
|
|
7
|
+
import { uiLogger } from '../../lib/ui/logger.js';
|
|
8
|
+
import { commands } from '../../lang/en.js';
|
|
9
|
+
const command = ['list', 'ls'];
|
|
10
|
+
const describe = commands.project.list.describe;
|
|
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
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function formatProjectsAsTableRows(projects) {
|
|
22
|
+
const projectListData = [];
|
|
23
|
+
projects.forEach(project => {
|
|
24
|
+
projectListData.push([
|
|
25
|
+
project.name,
|
|
26
|
+
project.latestBuild ? project.latestBuild.platformVersion : '',
|
|
27
|
+
]);
|
|
28
|
+
});
|
|
29
|
+
return projectListData;
|
|
30
|
+
}
|
|
31
|
+
async function handler(args) {
|
|
32
|
+
const { derivedAccountId } = args;
|
|
33
|
+
trackCommandUsage('projects-list', undefined, derivedAccountId);
|
|
34
|
+
const projectData = await getProjectData(derivedAccountId);
|
|
35
|
+
if (projectData.length === 0) {
|
|
36
|
+
uiLogger.error(commands.project.list.errors.noProjectsFound(derivedAccountId));
|
|
37
|
+
process.exit(EXIT_CODES.ERROR);
|
|
38
|
+
}
|
|
39
|
+
const projectListData = formatProjectsAsTableRows(projectData);
|
|
40
|
+
projectListData.unshift(getTableHeader([
|
|
41
|
+
commands.project.list.labels.name,
|
|
42
|
+
commands.project.list.labels.platformVersion,
|
|
43
|
+
]));
|
|
44
|
+
uiLogger.log(commands.project.list.projects);
|
|
45
|
+
uiLogger.log(getTableContents(projectListData, { border: { bodyLeft: ' ' } }));
|
|
46
|
+
}
|
|
47
|
+
function projectListBuilder(yargs) {
|
|
48
|
+
yargs.example([['$0 project list']]);
|
|
49
|
+
return yargs;
|
|
50
|
+
}
|
|
51
|
+
const builder = makeYargsBuilder(projectListBuilder, command, describe, {
|
|
52
|
+
useGlobalOptions: true,
|
|
53
|
+
useConfigOptions: true,
|
|
54
|
+
useAccountOptions: true,
|
|
55
|
+
});
|
|
56
|
+
const projectListCommand = {
|
|
57
|
+
command,
|
|
58
|
+
describe,
|
|
59
|
+
handler,
|
|
60
|
+
builder,
|
|
61
|
+
};
|
|
62
|
+
export default projectListCommand;
|