|
1 | 1 | /* eslint-disable */ |
2 | 2 |
|
3 | | -import { Connection } from '@salesforce/core'; |
| 3 | +import { Connection, Messages } from '@salesforce/core'; |
4 | 4 | import { QueryTools } from '../query'; |
| 5 | +import { Logger } from '../logger'; |
| 6 | + |
| 7 | +// Load messages |
| 8 | +const messages = Messages.loadMessages('@salesforce/plugin-omnistudio-migration-tool', 'migrate'); |
5 | 9 |
|
6 | 10 | interface InstalledPackage { |
7 | 11 | MajorVersion: number; |
@@ -312,18 +316,52 @@ export class OrgUtils { |
312 | 316 | break; |
313 | 317 | } |
314 | 318 | } |
315 | | - |
| 319 | + const installedOmniPackages = []; |
316 | 320 | if (packageDetails.namespace === '') { |
317 | 321 | hasValidNamespace = false; |
318 | 322 | for (const pkg of allInstalledPackages) { |
319 | 323 | 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); |
323 | 325 | } |
324 | 326 | } |
325 | 327 | } |
326 | 328 |
|
| 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 | + |
327 | 365 | //Execute apex rest resource to get omnistudio org permission |
328 | 366 | const omniStudioOrgPermissionEnabled: boolean = await this.isOmniStudioOrgPermissionEnabled( |
329 | 367 | connection, |
|
0 commit comments