UNPKG

@salesforce/plugin-packaging

Version:

SF plugin that support Salesforce Packaging Platform

128 lines 5.71 kB
/* * Copyright 2026, 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 } from '@salesforce/core'; import { PackageVersion, getPackageVersionNumber, BundleSObjects, PackageBundleVersionCreate, } from '@salesforce/packaging'; import chalk from 'chalk'; import { requiredHubFlag } from '../../../../../utils/hubFlag.js'; Messages.importMessagesDirectoryFromMetaUrl(import.meta.url); const messages = Messages.loadMessages('@salesforce/plugin-packaging', 'bundle_version_create_list'); export class PackageBundleVersionCreateListCommand extends SfCommand { static hidden = true; static state = 'beta'; static summary = messages.getMessage('summary'); static description = messages.getMessage('description'); static examples = messages.getMessages('examples'); static flags = { loglevel, 'target-dev-hub': requiredHubFlag, 'api-version': orgApiVersionFlagWithDeprecations, 'created-last-days': Flags.integer({ char: 'c', summary: messages.getMessage('flags.created-last-days.summary'), }), status: Flags.custom({ options: [ BundleSObjects.PkgBundleVersionCreateReqStatus.queued, BundleSObjects.PkgBundleVersionCreateReqStatus.inProgress, BundleSObjects.PkgBundleVersionCreateReqStatus.success, BundleSObjects.PkgBundleVersionCreateReqStatus.error, ], })({ char: 's', summary: messages.getMessage('flags.status.summary'), }), verbose: Flags.boolean({ summary: messages.getMessage('flags.verbose.summary'), }), }; connection; async run() { const { flags } = await this.parse(PackageBundleVersionCreateListCommand); this.connection = flags['target-dev-hub'].getConnection(flags['api-version']); let results = await PackageBundleVersionCreate.getCreateStatuses(this.connection, flags.status, flags['created-last-days']); if (results.length === 0) { this.warn('No results found'); } else { if (flags.verbose) { try { results = await this.fetchVerboseData(results); } catch (err) { const errMsg = typeof err === 'string' ? err : err instanceof Error ? err.message : 'unknown error'; this.warn(`error when retrieving verbose data (package name and version) due to: ${errMsg}`); } } const data = results.map((r) => ({ Id: r.Id ?? 'N/A', Status: r.RequestStatus ?? 'Unknown', 'Package Bundle Id': r.PackageBundleId ?? 'N/A', 'Package Bundle Version Id': r.PackageBundleVersionId ?? 'N/A', 'Created Date': r.CreatedDate ?? 'N/A', 'Created By': r.CreatedById ?? 'N/A', ...(flags.verbose ? { 'Version Name': r.VersionName ?? 'N/A', 'Major Version': r.MajorVersion ?? 'N/A', 'Minor Version': r.MinorVersion ?? 'N/A', } : {}), })); this.table({ data, overflow: 'wrap', title: chalk.blue(`Package Bundle Version Create Requests [${results.length}]`), }); } return results; } // Queries Package2Version for the name and version number of the packages and adds that data // to the results. async fetchVerboseData(results) { // Filter out any results without a valid PackageBundleVersionId const validResults = results.filter((r) => r?.PackageBundleVersionId); if (validResults.length === 0) { return results; } // Query for the version name and number data const versionData = await PackageVersion.queryPackage2Version(this.connection, { fields: ['Id', 'Name', 'MajorVersion', 'MinorVersion', 'PatchVersion', 'BuildNumber'], whereClause: "WHERE Id IN ('%IDS%')", whereClauseItems: validResults.map((pvcrr) => pvcrr.PackageBundleVersionId), }); const vDataMap = {}; versionData.forEach((vData) => { if (vData?.Id) { const version = getPackageVersionNumber(vData, true); vDataMap[vData.Id] = { name: vData.Name, version }; } }); return results.map((pvcrr) => { if (pvcrr?.PackageBundleVersionId && vDataMap[pvcrr.PackageBundleVersionId]) { return { ...pvcrr, ...{ VersionName: vDataMap[pvcrr.PackageBundleVersionId].name, VersionNumber: vDataMap[pvcrr.PackageBundleVersionId].version, }, }; } return pvcrr; }); } } //# sourceMappingURL=list.js.map