UNPKG

@salesforce/plugin-packaging

Version:

SF plugin that support Salesforce Packaging Platform

148 lines 6.19 kB
/* * Copyright 2025, Salesforce, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand } from '@salesforce/sf-plugins-core'; import { Messages, Logger } from '@salesforce/core'; import chalk from 'chalk'; import { PackagePushUpgrade, } from '@salesforce/packaging'; import { requiredHubFlag } from '../../../utils/hubFlag.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-packaging', 'package_pushupgrade_report'); const ERROR_LIMIT = 12; export class PackagePushUpgradeReportCommand extends SfCommand { static summary = messages.getMessage('summary'); static description = messages.getMessage('description'); static examples = messages.getMessages('examples'); static deprecateAliases = true; static aliases = ['force:package:push-upgrade:report']; static flags = { loglevel, 'target-dev-hub': requiredHubFlag, 'api-version': orgApiVersionFlagWithDeprecations, 'push-request-id': Flags.salesforceId({ length: 'both', deprecateAliases: true, aliases: ['pushrequestid'], char: 'i', summary: messages.getMessage('flags.push-request-id.summary'), required: true, }), }; async run() { const { flags } = await this.parse(PackagePushUpgradeReportCommand); const logger = await Logger.child(this.constructor.name); const hubOrg = flags['target-dev-hub']; const connection = hubOrg.getConnection(flags['api-version']); const packagePushRequestOptions = { packagePushRequestId: flags['push-request-id'] }; logger.debug(`Querying PackagePushRequestReport records from org ${hubOrg?.getOrgId()} using PackagePushRequest ID: ${packagePushRequestOptions.packagePushRequestId}`); const records = await PackagePushUpgrade.report(connection, packagePushRequestOptions); if (records?.length === 1) { const record = records[0]; logger.debug(`Found PackagePushRequestReport record: ${record?.Id}`); const totalJobs = await PackagePushUpgrade.getTotalJobs(connection, packagePushRequestOptions); let failedJobs = 0; let succeededJobs = 0; let jobFailureReasons; if (record?.Status === 'Succeeded' || record?.Status === 'Failed' || record?.Status === 'In Progress') { logger.debug(`PushRequest Status is ${record.Status}, getting job details.`); failedJobs = await PackagePushUpgrade.getFailedJobs(connection, packagePushRequestOptions); succeededJobs = await PackagePushUpgrade.getSucceededJobs(connection, packagePushRequestOptions); jobFailureReasons = await PackagePushUpgrade.getJobFailureReasons(connection, packagePushRequestOptions); } this.display(record, totalJobs, succeededJobs, failedJobs, jobFailureReasons); return record; } this.warn('No results found'); return null; } display(record, totalJobs, succeededJobs, failedJobs, jobFailureReasons) { const data = [ { name: 'Package Name', value: record.PackageVersion.MetadataPackage.Name, }, { name: 'Package Version Name', value: record.PackageVersion.Name, }, { name: 'Package Version', value: record.PackageVersion.MajorVersion + '.' + record.PackageVersion.MinorVersion, }, { name: 'Namespace', value: record.PackageVersion.MetadataPackage.NamespacePrefix, }, { name: 'Package Id', value: record.PackageVersion.MetadataPackageId, }, { name: 'Package Version Id', value: record.PackageVersionId, }, { name: 'Package Push Request Id', value: record.Id, }, { name: 'Status', value: record.Status, }, { name: 'Scheduled Start Time', value: record.ScheduledStartTime, }, { name: 'Start Time', value: record.StartTime, }, { name: 'End Time', value: record.EndTime, }, { name: 'Duration Seconds', value: record.DurationSeconds, }, { name: '# Orgs Scheduled', value: totalJobs, }, { name: '# Orgs Upgrade Succeeded', value: succeededJobs, }, { name: '# Orgs Upgrade Failed', value: failedJobs, }, ]; this.table({ data }); if (jobFailureReasons?.length) { this.log(''); const errors = []; jobFailureReasons.slice(0, ERROR_LIMIT).forEach((error) => { errors.push(`(${errors.length + 1}) ${error.ErrorMessage}`); }); this.styledHeader(chalk.red('Errors')); this.warn(errors.join('\n')); if (jobFailureReasons?.length > ERROR_LIMIT) { this.warn(messages.getMessage('truncatedErrors', [this.config.bin, record.Id])); } } } } //# sourceMappingURL=report.js.map