Skip to content

Commit fabe4c1

Browse files
Merge pull request #298 from mdmehran-qureshi/prerelease/alpha
Multiple Omnistudio packages in single org & lint resolve
2 parents 041fde4 + 4d37dcc commit fabe4c1

File tree

4 files changed

+51
-7
lines changed

4 files changed

+51
-7
lines changed

messages/migrate.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@
7373
"deployingMetadata": "Deploying metadata %s to %s",
7474
"metadataDeployed": "Metadata %s deployed to %s",
7575
"sfProjectCommandError": "Error executing command: %s",
76+
"multiplePackagesFound": "Multiple OmniStudio packages found. Please select one:",
77+
"packageSelectionPrompt": "Enter the number of the package to use (1-%s):",
78+
"invalidPackageSelection": "Invalid selection. Please enter a number between 1 and %s.",
79+
"selectedPackage": "Selected package: %s (Version: %s)"
7680
"dataRaptorNameChangeMessage": "DataRaptor reference {0} will be changed to {1} during migration.",
7781
"integrationProcedureNameChangeMessage": "Integration Procedure reference {0} will be changed to {1} during migration.",
7882
"integrationProcedureManualUpdateMessage": "Integration Procedure reference {0} may need manual updates after migration.",
@@ -81,3 +85,4 @@
8185
"cardNameChangeMessage": "Card name has been modified to fit naming rules: {0}",
8286
"duplicateCardNameMessage": "Potential duplicate: Another card has the same name {0} after name cleaning. This may cause conflicts during migration"
8387
}
88+

src/commands/omnistudio/migration/assess.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,8 @@ export default class Assess extends OmniStudioBaseCommand {
125125
try {
126126
orgs.rollbackFlags = await OrgPreferences.checkRollbackFlags(conn);
127127
} catch (error) {
128-
this.ux.log(error);
128+
Logger.log((error as Error).message);
129+
Logger.log((error as Error).stack);
129130
}
130131
await AssessmentReporter.generate(assesmentInfo, conn.instanceUrl, orgs, assessOnly, objectsToProcess);
131132
return assesmentInfo;

src/commands/omnistudio/migration/migrate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ export default class Migrate extends OmniStudioBaseCommand {
101101
await OrgPreferences.enableOmniPreferences(conn);
102102
} catch (error) {
103103
const errMsg = error instanceof Error ? error.message : String(error);
104-
this.ux.log(`Could not enable Omni preferences: ${errMsg}`);
104+
Logger.log(`Could not enable Omni preferences: ${errMsg}`);
105105
}
106106

107107
const namespace = orgs.packageDetails.namespace;

src/utils/orgUtils/index.ts

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
/* eslint-disable */
22

3-
import { Connection } from '@salesforce/core';
3+
import { Connection, Messages } from '@salesforce/core';
44
import { QueryTools } from '../query';
5+
import { Logger } from '../logger';
6+
7+
// Load messages
8+
const messages = Messages.loadMessages('@salesforce/plugin-omnistudio-migration-tool', 'migrate');
59

610
interface InstalledPackage {
711
MajorVersion: number;
@@ -312,18 +316,52 @@ export class OrgUtils {
312316
break;
313317
}
314318
}
315-
319+
const installedOmniPackages = [];
316320
if (packageDetails.namespace === '') {
317321
hasValidNamespace = false;
318322
for (const pkg of allInstalledPackages) {
319323
if ((namespace && namespace === pkg.NamespacePrefix) || this.namespaces.has(pkg.NamespacePrefix)) {
320-
packageDetails.version = `${pkg.MajorVersion}.${pkg.MinorVersion}`;
321-
packageDetails.namespace = pkg.NamespacePrefix;
322-
break; // Exit loop after first match
324+
installedOmniPackages.push(pkg);
323325
}
324326
}
325327
}
326328

329+
// Handle multiple packages by prompting user to select one
330+
if (installedOmniPackages.length > 1) {
331+
Logger.log(messages.getMessage('multiplePackagesFound'));
332+
333+
// Display available packages
334+
for (let i = 0; i < installedOmniPackages.length; i++) {
335+
const pkg = installedOmniPackages[i];
336+
Logger.log(`${i + 1}. ${pkg.NamespacePrefix} - Version ${pkg.MajorVersion}.${pkg.MinorVersion}`);
337+
}
338+
339+
// Prompt user to select a package
340+
let selectedIndex: number;
341+
do {
342+
const selection = await Logger.prompt(messages.getMessage('packageSelectionPrompt', [installedOmniPackages.length.toString()]));
343+
selectedIndex = parseInt(selection, 10) - 1;
344+
345+
if (isNaN(selectedIndex) || selectedIndex < 0 || selectedIndex >= installedOmniPackages.length) {
346+
Logger.warn(messages.getMessage('invalidPackageSelection', [installedOmniPackages.length.toString()]));
347+
}
348+
} while (isNaN(selectedIndex) || selectedIndex < 0 || selectedIndex >= installedOmniPackages.length);
349+
350+
// Set the selected package details
351+
const selectedPackage = installedOmniPackages[selectedIndex];
352+
packageDetails.version = `${selectedPackage.MajorVersion}.${selectedPackage.MinorVersion}`;
353+
packageDetails.namespace = selectedPackage.NamespacePrefix;
354+
hasValidNamespace = true;
355+
356+
Logger.log(messages.getMessage('selectedPackage', [selectedPackage.NamespacePrefix, packageDetails.version]));
357+
} else if (installedOmniPackages.length === 1) {
358+
// Only one package found, use it automatically
359+
const pkg = installedOmniPackages[0];
360+
packageDetails.version = `${pkg.MajorVersion}.${pkg.MinorVersion}`;
361+
packageDetails.namespace = pkg.NamespacePrefix;
362+
hasValidNamespace = true;
363+
}
364+
327365
//Execute apex rest resource to get omnistudio org permission
328366
const omniStudioOrgPermissionEnabled: boolean = await this.isOmniStudioOrgPermissionEnabled(
329367
connection,

0 commit comments

Comments
 (0)