generated from salesforcecli/plugin-template
-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathlist.ts
More file actions
109 lines (98 loc) · 4.85 KB
/
list.ts
File metadata and controls
109 lines (98 loc) · 4.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
* Copyright (c) 2024, 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, SfCommand, orgApiVersionFlagWithDeprecations } from '@salesforce/sf-plugins-core';
import { Messages } from '@salesforce/core';
import { PackagePushRequestListResult, PackagePushUpgrade } 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_pushupgrade_list');
type Status = 'Created' | 'Cancelled' | 'Pending' | 'In Progress' | 'Failed' | 'Succeeded';
export type PackagePushRequestListResultArr = PackagePushRequestListResult[];
export class PackagePushRequestListCommand extends SfCommand<PackagePushRequestListResultArr> {
public static readonly summary = messages.getMessage('summary');
public static readonly description = messages.getMessage('description');
public static readonly examples = messages.getMessages('examples');
public static readonly hidden = true;
public static state = 'beta';
public static readonly aliases = ['force:package:pushupgrade:list'];
public static readonly flags = {
'target-dev-hub': requiredHubFlag,
'api-version': orgApiVersionFlagWithDeprecations,
packageid: Flags.string({
char: 'p',
summary: messages.getMessage('flags.package-id.summary'),
required: true,
}),
'scheduled-last-days': Flags.integer({
char: 'l',
deprecateAliases: true,
aliases: ['scheduledlastdays'],
summary: messages.getMessage('flags.scheduled-last-days.summary'),
}),
status: Flags.custom<Status>({
options: ['Created', 'Cancelled', 'Pending', 'In Progress', 'Failed', 'Succeeded'],
})({
char: 's',
summary: messages.getMessage('flags.status.summary'),
}),
};
public async run(): Promise<PackagePushRequestListResultArr> {
const { flags } = await this.parse(PackagePushRequestListCommand);
const connection = flags['target-dev-hub'].getConnection(flags['api-version']);
const scheduledLastDays = flags['scheduled-last-days'];
// Check if scheduledLastDays is valid
if (flags['scheduled-last-days'] !== undefined) {
if (isNaN(scheduledLastDays!) || scheduledLastDays! <= 0) {
throw new Error('Invalid value for --scheduled-last-days. It must be a positive integer.');
}
}
// Get results of query here
// Use const since we will add verbose later
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
const results: PackagePushRequestListResult[] = await PackagePushUpgrade.list(connection, {
packageId: flags.packageid,
status: flags.status,
scheduledLastDays,
});
if (results.length === 0) {
this.warn('No results found');
} else {
const data = await Promise.all(
results.map(async (record: PackagePushRequestListResult) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const packagePushRequestOptions = { packagePushRequestId: record?.Id };
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
const totalNumOrgs = await PackagePushUpgrade.getTotalJobs(connection, packagePushRequestOptions);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
const numOrgsUpgradedFail = await PackagePushUpgrade.getFailedJobs(connection, packagePushRequestOptions);
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
const numOrgsUpgradedSuccess = await PackagePushUpgrade.getSucceededJobs(
connection,
packagePushRequestOptions
);
return {
Id: record?.Id,
PackageVersionId: record?.PackageVersionId,
PackageVersionName: record?.PackageVersion?.Name,
PackageVersionNumber: record?.PackageVersion?.MajorVersion + '.' + record?.PackageVersion?.MinorVersion,
Status: record?.Status,
ScheduledStartTime: record?.ScheduledStartTime,
StartTime: record?.StartTime,
EndTime: record?.EndTime,
NumOrgsScheduled: totalNumOrgs,
NumOrgsUpgradedFail: numOrgsUpgradedFail,
NumOrgsUpgradedSuccess: numOrgsUpgradedSuccess,
};
})
);
this.table({ data, overflow: 'wrap', title: chalk.blue(`Push Upgrade Request List: [${results.length}]`) });
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return results;
}
}