Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion packages/contentstack-branches/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
},
"devDependencies": {
"@contentstack/cli-auth": "~1.3.19",
"@contentstack/cli-config": "~1.6.4",
"@contentstack/cli-config": "~1.7.0",
"@contentstack/cli-dev-dependencies": "~1.2.4",
"@oclif/plugin-help": "^5.1.19",
"@oclif/test": "^2.5.6",
Expand Down
29 changes: 21 additions & 8 deletions packages/contentstack-config/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-config
$ csdx COMMAND
running command...
$ csdx (--version)
@contentstack/cli-config/1.6.5 darwin-arm64 node-v22.2.0
@contentstack/cli-config/1.7.0 darwin-arm64 node-v22.2.0
$ csdx --help [COMMAND]
USAGE
$ csdx COMMAND
Expand Down Expand Up @@ -265,18 +265,23 @@ Set region for CLI

```
USAGE
$ csdx config:set:region [REGION] [-d <value> -m <value> --ui-host <value> -n <value>]
$ csdx config:set:region [REGION] [-d <value> -m <value> --ui-host <value> -n <value>] [--developer-hub <value>]
[--personalize <value>] [--launch <value>]

ARGUMENTS
REGION Name for the region

FLAGS
-d, --cda=<value> Custom host to set for content delivery API, if this flag is added then cma, ui-host and name
flags are required
-m, --cma=<value> Custom host to set for content management API, , if this flag is added then cda, ui-host and name
flags are required
-n, --name=<value> Name for the region, if this flag is added then cda, cma and ui-host flags are required
--ui-host=<value> Custom UI host to set for CLI, if this flag is added then cda, cma and name flags are required
-d, --cda=<value> Custom host to set for content delivery API, if this flag is added then cma, ui-host and name
flags are required
-m, --cma=<value> Custom host to set for content management API, , if this flag is added then cda, ui-host and
name flags are required
-n, --name=<value> Name for the region, if this flag is added then cda, cma and ui-host flags are required
--developer-hub=<value> Custom host to set for developer hub API
--launch=<value> Custom host to set for launch API
--personalize=<value> Custom host to set for personalization API
--ui-host=<value> Custom UI host to set for CLI, if this flag is added then cda, cma and name flags are
required

DESCRIPTION
Set region for CLI
Expand All @@ -295,6 +300,14 @@ EXAMPLES
$ csdx config:set:region GCP-NA

$ csdx config:set:region --cma <contentstack_cma_endpoint> --cda <contentstack_cda_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India"

$ csdx config:set:region --cma <contentstack_cma_endpoint> --cda <contentstack_cda_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India" --developer-hub <developer_hub_url>

$ csdx config:set:region --cma <contentstack_cma_endpoint> --cda <contentstack_cda_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India" --personalize <personalize_url>

$ csdx config:set:region --cma <contentstack_cma_endpoint> --cda <contentstack_cda_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India" --launch <launch_url>

$ csdx config:set:region --cda <contentstack_cda_endpoint> --cma <contentstack_cma_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India" --developer-hub <developer_hub_url> --personalize <personalize_url> --launch <launch_url>
```

_See code: [src/commands/config/set/region.ts](https://github.com/contentstack/cli/blob/main/packages/contentstack-config/src/commands/config/set/region.ts)_
Expand Down
2 changes: 1 addition & 1 deletion packages/contentstack-config/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@contentstack/cli-config",
"description": "Contentstack CLI plugin for configuration",
"version": "1.6.5",
"version": "1.7.0",
"author": "Contentstack",
"scripts": {
"build": "npm run clean && npm run compile",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ export default class RegionGetCommand extends BaseCommand<typeof RegionGetComman
cliux.print(`CDA HOST: ${currentRegion.cda}`);
cliux.print(`CMA HOST: ${currentRegion.cma}`);
cliux.print(`UI HOST: ${currentRegion.uiHost}`);
cliux.print(`Developer Hub URL: ${currentRegion.developerHubUrl}`);
cliux.print(`Launch URL: ${currentRegion.launchHubUrl}`);
cliux.print(`Personalize URL: ${currentRegion.personalizeUrl}`);
this.logger.error(`Currently using ${currentRegion.name} region`);

}
Expand Down
42 changes: 41 additions & 1 deletion packages/contentstack-config/src/commands/config/set/region.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ export default class RegionSetCommand extends BaseCommand<typeof RegionSetComman
description: 'Name for the region, if this flag is added then cda, cma and ui-host flags are required',
dependsOn: ['cda', 'cma', 'ui-host'],
}),
'developer-hub': _flags.string({
description: 'Custom host to set for developer hub API',
}),
'personalize': _flags.string({
description: 'Custom host to set for personalization API',
}),
'launch': _flags.string({
description: 'Custom host to set for launch API',
}),
};
static examples = [
'$ csdx config:set:region',
Expand All @@ -48,6 +57,10 @@ export default class RegionSetCommand extends BaseCommand<typeof RegionSetComman
'$ csdx config:set:region AZURE-EU',
'$ csdx config:set:region GCP-NA',
'$ csdx config:set:region --cma <contentstack_cma_endpoint> --cda <contentstack_cda_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India"',
'$ csdx config:set:region --cma <contentstack_cma_endpoint> --cda <contentstack_cda_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India" --developer-hub <developer_hub_url>',
'$ csdx config:set:region --cma <contentstack_cma_endpoint> --cda <contentstack_cda_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India" --personalize <personalize_url>',
'$ csdx config:set:region --cma <contentstack_cma_endpoint> --cda <contentstack_cda_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India" --launch <launch_url>',
'$ csdx config:set:region --cda <contentstack_cda_endpoint> --cma <contentstack_cma_endpoint> --ui-host <contentstack_ui_host_endpoint> --name "India" --developer-hub <developer_hub_url> --personalize <personalize_url> --launch <launch_url>',
];

static args: ArgInput = {
Expand All @@ -60,6 +73,9 @@ export default class RegionSetCommand extends BaseCommand<typeof RegionSetComman
let cma = regionSetFlags.cma;
let name = regionSetFlags.name;
let uiHost = regionSetFlags['ui-host'];
let developerHubUrl = regionSetFlags['developer-hub'];
let personalizeUrl = regionSetFlags['personalize'];
let launchHubUrl = regionSetFlags['launch'];
let selectedRegion = args.region;
if (!(cda && cma && uiHost && name) && !selectedRegion) {
selectedRegion = await interactive.askRegions();
Expand All @@ -78,13 +94,25 @@ export default class RegionSetCommand extends BaseCommand<typeof RegionSetComman
// Custom flag will get first priority over region argument
if (cda && cma && uiHost && name) {
try {
let customRegion: Region = { cda, cma, uiHost, name };
if (!developerHubUrl) {
developerHubUrl = this.transformUrl(cma, 'developerhub-api');
}
if (!launchHubUrl) {
launchHubUrl = this.transformUrl(cma, 'launch-api');
}
if (!personalizeUrl) {
personalizeUrl = this.transformUrl(cma, 'personalize-api');
}
let customRegion: Region = { cda, cma, uiHost, name, developerHubUrl, personalizeUrl, launchHubUrl };
customRegion = regionHandler.setCustomRegion(customRegion);
await authHandler.setConfigData('logout'); //Todo: Handle this logout flow well through logout command call
cliux.success(`Custom region has been set to ${customRegion.name}`);
cliux.success(`CMA HOST: ${customRegion.cma}`);
cliux.success(`CDA HOST: ${customRegion.cda}`);
cliux.success(`UI HOST: ${customRegion.uiHost}`);
cliux.success(`Developer Hub URL: ${customRegion.developerHubUrl}`);
cliux.success(`Personalization URL: ${customRegion.personalizeUrl}`);
cliux.success(`Launch URL: ${customRegion.launchHubUrl}`);
} catch (error) {
this.logger.error('failed to set the region', error);
cliux.error(`Failed to set region due to: ${error.message}`);
Expand All @@ -96,8 +124,20 @@ export default class RegionSetCommand extends BaseCommand<typeof RegionSetComman
cliux.success(`CDA HOST: ${regionDetails.cda}`);
cliux.success(`CMA HOST: ${regionDetails.cma}`);
cliux.success(`UI HOST: ${regionDetails.uiHost}`);
cliux.success(`Developer Hub URL: ${regionDetails.developerHubUrl}`);
cliux.success(`Personalization URL: ${regionDetails.personalizeUrl}`);
cliux.success(`Launch URL: ${regionDetails.launchHubUrl}`);
} else {
cliux.error(`Invalid region is given`);
}
}
transformUrl(url: string, replacement: string): string {
let transformedUrl = url.replace('api', replacement);
if (transformedUrl.startsWith('http')) {
transformedUrl = transformedUrl.split('//')[1];
}
transformedUrl = transformedUrl.startsWith('dev11') ? transformedUrl.replace('dev11', 'dev') : transformedUrl;
transformedUrl = transformedUrl.endsWith('io') ? transformedUrl.replace('io', 'com') : transformedUrl;
return `https://${transformedUrl}`
}
}
3 changes: 3 additions & 0 deletions packages/contentstack-config/src/interfaces/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,7 @@ export interface Region {
cma: string;
cda: string;
uiHost: string;
developerHubUrl: string;
personalizeUrl: string;
launchHubUrl: string;
}
30 changes: 24 additions & 6 deletions packages/contentstack-config/src/utils/region-handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ import { configHandler } from '@contentstack/cli-utilities';
function validURL(str) {
const pattern = new RegExp(
'^(https?:\\/\\/)?' + // protocol (http or https)
'([a-zA-Z0-9.-]+|' + // domain name
'((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))' + // IP address
'(:\\d+)?' + // port
'(/[-a-zA-Z0-9_.~+-]*)*' + // path
'(\\?[;&a-zA-Z0-9_.~+=-]*)?' + // query string
'(\\#[-a-zA-Z0-9_]*)?$', // fragment
'([a-zA-Z0-9.-]+|' + // domain name
'((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))' + // IP address
'(:\\d+)?' + // port
'(/[-a-zA-Z0-9_.~+-]*)*' + // path
'(\\?[;&a-zA-Z0-9_.~+=-]*)?' + // query string
'(\\#[-a-zA-Z0-9_]*)?$', // fragment
'i',
);

Expand All @@ -22,30 +22,45 @@ const regions = {
cda: 'https://cdn.contentstack.io',
uiHost: 'https://app.contentstack.com',
name: 'NA',
'developerHubUrl': 'https://developerhub-api.contentstack.com',
'launchHubUrl': 'https://launch-api.contentstack.com',
'personalizeUrl': 'https://personalization-api.contentstack.com',
},
EU: {
cma: 'https://eu-api.contentstack.com',
cda: 'https://eu-cdn.contentstack.com',
uiHost: 'https://eu-app.contentstack.com',
name: 'EU',
'developerHubUrl': 'https://eu-developerhub-api.contentstack.com',
'launchHubUrl': 'https://eu-launch-api.contentstack.com',
'personalizeUrl': '',
},
'AZURE-NA': {
cma: 'https://azure-na-api.contentstack.com',
cda: 'https://azure-na-cdn.contentstack.com',
uiHost: 'https://azure-na-app.contentstack.com',
name: 'AZURE-NA',
'developerHubUrl': 'https://azure-na-developerhub-api.contentstack.com',
'launchHubUrl': 'https://azure-na-launch-api.contentstack.com',
'personalizeUrl': '',
},
'AZURE-EU': {
cma: 'https://azure-eu-api.contentstack.com',
cda: 'https://azure-eu-cdn.contentstack.com',
uiHost: 'https://azure-eu-app.contentstack.com',
name: 'AZURE-EU',
'developerHubUrl': 'https://azure-eu-developerhub-api.contentstack.com',
'launchHubUrl': 'https://azure-eu-launch-api.contentstack.com',
'personalizeUrl': '',
},
'GCP-NA': {
cma: 'https://gcp-na-api.contentstack.com',
cda: 'https://gcp-na-cdn.contentstack.com',
uiHost: 'https://gcp-na-app.contentstack.com',
name: 'GCP-NA',
'developerHubUrl': 'https://gcp-na-developerhub-api.contentstack.com',
'launchHubUrl': '',
'personalizeUrl': '',
},
};

Expand Down Expand Up @@ -133,6 +148,9 @@ class UserConfig {
cda: regionObject.cda,
uiHost: regionObject.uiHost,
name: regionObject.name,
developerHubUrl: regionObject['developerHubUrl'],
personalizeUrl: regionObject['personalizeUrl'],
launchHubUrl: regionObject['launchHubUrl'],
};

return sanitizedRegion;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ describe('Region command', function () {
cma: 'https://api.contentstack.com',
cda: 'https://cda.contentstack.com',
uiHost: '',
'developerHubUrl': 'https://developerhub-api.contentstack.com',
'launchHubUrl': 'https://launch-api.contentstack.com',
'personalizeUrl': 'https://personalization-api.contentstack.com',
};
let cliuxPrintStub;
beforeEach(function () {
Expand Down
2 changes: 1 addition & 1 deletion packages/contentstack-export/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
},
"devDependencies": {
"@contentstack/cli-auth": "~1.3.19",
"@contentstack/cli-config": "~1.6.4",
"@contentstack/cli-config": "~1.7.0",
"@contentstack/cli-dev-dependencies": "~1.2.4",
"@oclif/plugin-help": "^5.1.19",
"@oclif/test": "^2.5.6",
Expand Down
4 changes: 2 additions & 2 deletions packages/contentstack/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@contentstack/cli",
"description": "Command-line tool (CLI) to interact with Contentstack",
"version": "1.23.0",
"version": "1.24.0",
"author": "Contentstack",
"bin": {
"csdx": "./bin/run.js"
Expand Down Expand Up @@ -34,7 +34,7 @@
"@contentstack/cli-cm-migrate-rte": "~1.4.18",
"@contentstack/cli-cm-seed": "~1.7.8",
"@contentstack/cli-command": "~1.2.19",
"@contentstack/cli-config": "~1.6.5",
"@contentstack/cli-config": "~1.7.0",
"@contentstack/cli-launch": "~1.2.0",
"@contentstack/cli-migration": "~1.6.1",
"@contentstack/cli-utilities": "~1.7.1",
Expand Down
6 changes: 3 additions & 3 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.