@salesforce/plugin-packaging
Version:
SF plugin that support Salesforce Packaging Platform
114 lines • 5.15 kB
JavaScript
/*
* 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