UNPKG

@salesforce/plugin-packaging

Version:

SF plugin that support Salesforce Packaging Platform

114 lines 5.15 kB
/* * Copyright (c) 2022, salesforce.com, inc. * All rights reserved. * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ import { Flags, loglevel, orgApiVersionFlagWithDeprecations, SfCommand } from '@salesforce/sf-plugins-core'; import { Messages } from '@salesforce/core'; import { PackageVersion, getPackageVersionNumber } 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', 'package_version_create_list'); const packaging = Messages.loadMessages('@salesforce/plugin-packaging', 'packaging'); export class PackageVersionCreateListCommand extends SfCommand { static summary = messages.getMessage('summary'); static description = messages.getMessage('description'); static examples = messages.getMessages('examples'); static deprecateAliases = true; static aliases = ['force:package:version:create:list']; static flags = { loglevel, 'target-dev-hub': requiredHubFlag, 'api-version': orgApiVersionFlagWithDeprecations, 'created-last-days': Flags.integer({ char: 'c', deprecateAliases: true, aliases: ['createdlastdays'], summary: packaging.getMessage('flags.created-last-days.summary'), }), status: Flags.custom({ options: ['Queued', 'InProgress', 'Success', 'Error'], })({ char: 's', summary: messages.getMessage('flags.status.summary'), }), 'show-conversions-only': Flags.boolean({ summary: messages.getMessage('flags.show-conversions-only.summary'), }), verbose: Flags.boolean({ summary: messages.getMessage('flags.verbose.summary'), }), }; connection; async run() { const { flags } = await this.parse(PackageVersionCreateListCommand); this.connection = flags['target-dev-hub'].getConnection(flags['api-version']); let results = (await PackageVersion.getPackageVersionCreateRequests(this.connection, { createdlastdays: flags['created-last-days'], status: flags.status, showConversionsOnly: flags['show-conversions-only'], })); 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, Status: r.Status, 'Package Id': r.Package2Id, 'Package Version Id': r.Package2VersionId, 'Subscriber Package Version Id': r.SubscriberPackageVersionId, Tag: r.Tag, Branch: r.Branch, 'Created Date': r.CreatedDate, 'Created By': r.CreatedBy, ...(flags['show-conversions-only'] ? { 'Converted From Version Id': r.ConvertedFromVersionId } : {}), ...(flags.verbose ? { 'Version Name': r.VersionName, 'Version Number': r.VersionNumber } : {}), })); this.table({ data, overflow: 'wrap', title: chalk.blue(`Package 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) { // 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: results.map((pvcrr) => pvcrr.Package2VersionId).filter(Boolean), }); const vDataMap = {}; versionData.map((vData) => { if (vData) { const version = getPackageVersionNumber(vData, true); vDataMap[vData.Id] = { name: vData.Name, version }; } }); return results.map((pvcrr) => { if (vDataMap[pvcrr.Package2VersionId]) { return { ...pvcrr, ...{ VersionName: vDataMap[pvcrr.Package2VersionId].name, VersionNumber: vDataMap[pvcrr.Package2VersionId].version, }, }; } else return pvcrr; }); } } //# sourceMappingURL=list.js.map