Skip to content

Commit 306b333

Browse files
committed
feat: add version settings column to package installed list
1 parent 32a36cd commit 306b333

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

schemas/package-installed-list.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
"SubscriberPackageNamespace": {
2424
"type": "string"
2525
},
26+
"VersionSettings": {
27+
"type": "string"
28+
},
2629
"SubscriberPackageVersionId": {
2730
"type": "string"
2831
},

src/commands/package/installed/list.ts

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export type PackageInstalledListResult = {
3131
SubscriberPackageId?: string;
3232
SubscriberPackageName?: string;
3333
SubscriberPackageNamespace?: string;
34+
VersionSettings?: string;
3435
SubscriberPackageVersionId?: string;
3536
SubscriberPackageVersionName?: string;
3637
SubscriberPackageVersionNumber?: string;
@@ -54,7 +55,32 @@ export class PackageInstalledListCommand extends SfCommand<PackageInstalledComma
5455
const { flags } = await this.parse(PackageInstalledListCommand);
5556
const records = (
5657
await SubscriberPackageVersion.installedList(flags['target-org'].getConnection(flags['api-version']))
57-
).map(transformRow);
58+
).map((r) => {
59+
const transformed = transformRow(r);
60+
61+
// Calculate Version Settings from the data already in the result
62+
if (r.SubscriberPackageVersion) {
63+
// Access fields that are now included in the query but may not be in the type definition yet
64+
const subPkgVersion = r.SubscriberPackageVersion as {
65+
IsManaged?: boolean;
66+
Package2ContainerOptions?: string;
67+
};
68+
const isManaged = subPkgVersion.IsManaged;
69+
const package2ContainerOptions = subPkgVersion.Package2ContainerOptions;
70+
71+
// What does UI do for non-managed packages? Follow the same pattern. Then can probably simplify this logic
72+
// If IsManaged is true AND Package2ContainerOptions is blank, use "namespace"; otherwise use "packageId"
73+
if (isManaged && !package2ContainerOptions) {
74+
transformed.VersionSettings = 'namespace';
75+
} else {
76+
transformed.VersionSettings = 'packageId';
77+
}
78+
} else {
79+
transformed.VersionSettings = 'packageId';
80+
}
81+
82+
return transformed;
83+
});
5884

5985
this.table({
6086
data: records,
@@ -63,6 +89,7 @@ export class PackageInstalledListCommand extends SfCommand<PackageInstalledComma
6389
{ key: 'SubscriberPackageId', name: 'Package ID' },
6490
{ key: 'SubscriberPackageName', name: 'Package Name' },
6591
{ key: 'SubscriberPackageNamespace', name: 'Namespace' },
92+
{ key: 'VersionSettings', name: 'Version Settings' },
6693
{ key: 'SubscriberPackageVersionId', name: 'Package Version ID' },
6794
{ key: 'SubscriberPackageVersionName', name: 'Version Name' },
6895
{ key: 'SubscriberPackageVersionNumber', name: 'Version' },

0 commit comments

Comments
 (0)