Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
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
4 changes: 4 additions & 0 deletions .talismanrc
Original file line number Diff line number Diff line change
Expand Up @@ -131,4 +131,8 @@ fileignoreconfig:
checksum: e3c1754c6d3e5f3a4cb7f5e1c920cb524858848045e06d189ad6a92451e82d02
- filename: packages/contentstack-variants/src/import/audiences.ts
checksum: 9b1d68db8e25c2cf1e68e7b458adadf477875e7901327586c8e6289479549ee8
- filename: packages/contentstack-bulk-publish/src/producer/publish-unpublished-env.js
checksum: 697006c7f7363d5a17a5c459471f84c263adbc9bbe8f06f1ec970f3b0af79bc3
- filename: packages/contentstack-bulk-publish/src/util/bulk-publish-utils.js
checksum: 4256961b963af6c7f5f0ec9b8bf9b7f22351aa826677cfff0ce81aed12c908a3
version: ''
5 changes: 3 additions & 2 deletions package-lock.json

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

3 changes: 2 additions & 1 deletion packages/contentstack-bulk-publish/package.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
{
"name": "@contentstack/cli-cm-bulk-publish",
"description": "Contentstack CLI plugin for bulk publish actions",
"version": "1.9.0",
"version": "1.9.1",
"author": "Contentstack",
"bugs": "https://github.com/contentstack/cli/issues",
"dependencies": {
"@contentstack/cli-command": "~1.6.0",
"@contentstack/cli-config": "~1.15.0",
"@contentstack/cli-utilities": "~1.13.1",
"@oclif/core": "^4.3.0",
"@oclif/plugin-help": "^6.2.28",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/* eslint-disable camelcase */
/* eslint-disable complexity */
/* eslint-disable max-params */
const { configHandler } = require('@contentstack/cli-utilities');
const { configHandler, cliux } = require('@contentstack/cli-utilities');
const { getQueue } = require('../util/queue');
const { performBulkPublish, publishEntry, publishAsset, initializeLogger } = require('../consumer/publish');
const retryFailedLogs = require('../util/retryfailed');
Expand All @@ -15,6 +15,7 @@ const { Command } = require('@contentstack/cli-command');
const command = new Command();
const { isEmpty } = require('../util');
const { fetchBulkPublishLimit } = require('../util/common-utility');
const { generateBulkPublishStatusUrl } = require('../util/bulk-publish-utils');
const VARIANTS_PUBLISH_API_VERSION = '3.2';

let bulkPublishSet = [];
Expand Down Expand Up @@ -334,6 +335,18 @@ async function start(
} else if (!isSuccessLogEmpty) {
console.log(`The success log for this session is stored at ${filePath}.success`);
}

// Generate and display the bulk publish status link
if (bulkPublish && stack && config) {
const statusUrl = generateBulkPublishStatusUrl(stack, config);
if (statusUrl) {
process.stdout.write('\n');
process.stdout.write('\x1b[37mHere is the link for check the bulk publish status: \x1b[0m');
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
process.stdout.write('\n');
}
}

process.exit(0);
});

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
/* eslint-disable no-console */
/* eslint-disable new-cap */
/* eslint-disable camelcase */
const { cliux } = require('@contentstack/cli-utilities');
const { getQueue } = require('../util/queue');
const { performBulkPublish, publishAsset, initializeLogger } = require('../consumer/publish');
const retryFailedLogs = require('../util/retryfailed');
const { validateFile } = require('../util/fs');
const { isEmpty } = require('../util');
const { fetchBulkPublishLimit } = require('../util/common-utility');
const { generateBulkPublishStatusUrl } = require('../util/bulk-publish-utils');

const queue = getQueue();
let logFileName;
Expand Down Expand Up @@ -129,6 +131,18 @@ async function start({ retryFailed, bulkPublish, environments, folderUid, locale
} else if (!isSuccessLogEmpty) {
console.log(`The success log for this session is stored at ${filePath}.success`);
}

// Generate and display the bulk publish status link
if (bulkPublish && stack && config) {
const statusUrl = generateBulkPublishStatusUrl(stack, config);
if (statusUrl) {
process.stdout.write('\n');
process.stdout.write('\x1b[37mHere is the link for check the bulk publish status: \x1b[0m');
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
process.stdout.write('\n');
}
}

process.exit(0);
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
/* eslint-disable camelcase */
/* eslint-disable max-depth */
/* eslint-disable no-console */
const { cliux } = require('@contentstack/cli-utilities');
const { getQueue } = require('../util/queue');
const { performBulkPublish, publishEntry, initializeLogger } = require('../consumer/publish');
const retryFailedLogs = require('../util/retryfailed');
const { validateFile } = require('../util/fs');
const { isEmpty } = require('../util');
const { fetchBulkPublishLimit } = require('../util/common-utility');
const { generateBulkPublishStatusUrl } = require('../util/bulk-publish-utils');
const VARIANTS_PUBLISH_API_VERSION = '3.2';

const queue = getQueue();
Expand Down Expand Up @@ -253,6 +255,18 @@ async function start(
} else if (!isSuccessLogEmpty) {
console.log(`The success log for this session is stored at ${filePath}.success`);
}

// Generate and display the bulk publish status link
if (bulkPublish && stack && config) {
const statusUrl = generateBulkPublishStatusUrl(stack, config);
if (statusUrl) {
process.stdout.write('\n');
process.stdout.write('\x1b[37mHere is the link for check the bulk publish status: \x1b[0m');
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
process.stdout.write('\n');
}
}

process.exit(0);
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@
/* eslint-disable no-console */
/* eslint-disable new-cap */
/* eslint-disable camelcase */
const { cliux } = require('@contentstack/cli-utilities');
const { getQueue } = require('../util/queue');
const { performBulkPublish, publishEntry, initializeLogger } = require('../consumer/publish');
const retryFailedLogs = require('../util/retryfailed');
const { validateFile } = require('../util/fs');
const { isEmpty } = require('../util');
const { fetchBulkPublishLimit } = require('../util/common-utility');
const { generateBulkPublishStatusUrl } = require('../util/bulk-publish-utils');

const queue = getQueue();
let skipCount;
Expand Down Expand Up @@ -142,6 +144,18 @@ async function start({ sourceEnv, environments, locale, contentTypes, bulkPublis
} else if (!isSuccessLogEmpty) {
console.log(`The success log for this session is stored at ${filePath}.success`);
}

// Generate and display the bulk publish status link
if (bulkPublish && stack && config) {
const statusUrl = generateBulkPublishStatusUrl(stack, config);
if (statusUrl) {
process.stdout.write('\n');
process.stdout.write('\x1b[37mHere is the link for check the bulk unpublish status: \x1b[0m');
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
process.stdout.write('\n');
}
}

process.exit(0);
});

Expand Down
15 changes: 14 additions & 1 deletion packages/contentstack-bulk-publish/src/producer/unpublish.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/* eslint-disable complexity */
/* eslint-disable no-console */
/* eslint-disable camelcase */
const { configHandler } = require('@contentstack/cli-utilities');
const { configHandler, cliux } = require('@contentstack/cli-utilities');
const { getQueue } = require('../util/queue');
const { performBulkUnPublish, UnpublishEntry, UnpublishAsset, initializeLogger } = require('../consumer/publish');
const retryFailedLogs = require('../util/retryfailed');
Expand All @@ -15,6 +15,7 @@ const { Command } = require('@contentstack/cli-command');
const command = new Command();
const { isEmpty } = require('../util');
const { fetchBulkPublishLimit } = require('../util/common-utility');
const { generateBulkPublishStatusUrl } = require('../util/bulk-publish-utils');
const VARIANTS_UNPUBLISH_API_VERSION = '3.2';
const delay = (ms) => new Promise((res) => setTimeout(res, ms));

Expand Down Expand Up @@ -325,6 +326,18 @@ async function start(
} else if (!isSuccessLogEmpty) {
console.log(`The success log for this session is stored at ${filePath}.success`);
}

// Generate and display the bulk publish status link
if (bulkUnpublish && stack && config) {
const statusUrl = generateBulkPublishStatusUrl(stack, config);
if (statusUrl) {
process.stdout.write('\n');
process.stdout.write('\x1b[37mHere is the link for check the bulk unpublish status: \x1b[0m');
process.stdout.write('\x1b[34m' + statusUrl + '\x1b[0m');
process.stdout.write('\n');
}
}

process.exit(0);
});
if (includeVariants) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
const { regions } = require('@contentstack/cli-config/lib/utils/region-handler');

/**
* Get the appropriate app URL based on the host
* @param {string} host - The host URL
* @returns {string} The app URL
*/
function getAppUrlFromHost(host) {
// Handle development and staging environments
if (host.includes('stag')) {
return 'https://stag-app.csnonprod.com';
}

if (host.includes('dev')) {
const devMatch = host.match(/dev(\d+)/);
if (devMatch) {
const devNumber = devMatch[1];
return `https://dev${devNumber}-app.csnonprod.com`;
}
return 'https://dev-app.csnonprod.com';
}

// Find matching region based on host
for (const regionConfig of Object.values(regions)) {
if (host.includes(regionConfig.cma.replace('https://', ''))) {
return regionConfig.uiHost;
}
}
// Default to NA region
return regions['AWS-NA'].uiHost;
}

/**
* Generate the bulk publish status URL based on stack configuration
* @param {Object} stack - Stack object containing api_key and host
* @param {Object} config - Config object containing stackApiKey, branch, and host
* @returns {string|null} The status URL or null if apiKey is not available
*/
function generateBulkPublishStatusUrl(stack, config) {
const apiKey = stack?.api_key || config?.stackApiKey;
if (!apiKey) {
return null;
}
const branch = config?.branch || 'main';
const host = stack?.host || config?.host || 'app.contentstack.com';
const appUrl = getAppUrlFromHost(host);
return `${appUrl}/#!/stack/${apiKey}/publish-queue?branch=${branch}`;
}

module.exports = {
generateBulkPublishStatusUrl,
};
3 changes: 3 additions & 0 deletions packages/contentstack-config/src/utils/region-handler.ts
Original file line number Diff line number Diff line change
Expand Up @@ -201,4 +201,7 @@ class UserConfig {
}
}

// Export the regions object for use in other packages
export { regions };

export default new UserConfig();
2 changes: 1 addition & 1 deletion packages/contentstack/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"@contentstack/cli-auth": "~1.5.1",
"@contentstack/cli-cm-bootstrap": "~1.15.0",
"@contentstack/cli-cm-branches": "~1.5.0",
"@contentstack/cli-cm-bulk-publish": "~1.9.0",
"@contentstack/cli-cm-bulk-publish": "~1.9.1",
"@contentstack/cli-cm-clone": "~1.15.0",
"@contentstack/cli-cm-export": "~1.18.0",
"@contentstack/cli-cm-export-to-csv": "~1.9.0",
Expand Down
4 changes: 3 additions & 1 deletion pnpm-lock.yaml

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

Loading