Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions messages/package_version_list.md
Original file line number Diff line number Diff line change
Expand Up @@ -157,3 +157,7 @@ Language
# endToEndBuildDurationInSeconds

End To End Build Duration In Seconds

# hasVpi

Has Version Settings
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"@oclif/core": "^4",
"@salesforce/core": "^8.31.0",
"@salesforce/kit": "^3.2.6",
"@salesforce/packaging": "^4.24.3",
"@salesforce/packaging": "^4.25.0",
"@salesforce/sf-plugins-core": "^12.2.22",
"chalk": "^5.6.2"
},
Expand Down
3 changes: 3 additions & 0 deletions schemas/package-version-list.json
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,9 @@
},
"Language": {
"type": "string"
},
"HasVpi": {
"type": ["string", "boolean"]
}
},
"required": [
Expand Down
61 changes: 16 additions & 45 deletions schemas/package-version-report.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@
]
},
"HasPassedCodeCoverageCheck": {
"type": [
"boolean",
"string"
]
"type": ["boolean", "string"]
},
"Package2": {
"type": "object",
Expand Down Expand Up @@ -96,10 +93,7 @@
]
},
"HasMetadataRemoved": {
"type": [
"boolean",
"string"
]
"type": ["boolean", "string"]
},
"Id": {
"type": "string"
Expand Down Expand Up @@ -201,32 +195,23 @@
"$ref": "#/definitions/PackagingSObjects.SubscriberPackageDependencies"
}
},
"required": [
"Dependencies"
],
"required": ["Dependencies"],
"additionalProperties": false
},
"Version": {
"type": "string"
},
"AncestorVersion": {
"type": [
"string",
"null"
]
"type": ["string", "null"]
},
"AncestorId": {
"type": [
"string",
"null"
]
"type": ["string", "null"]
},
"HasVpi": {
"type": ["boolean", "string"]
}
},
"required": [
"HasMetadataRemoved",
"Package2",
"Version"
]
"required": ["HasMetadataRemoved", "Package2", "Version"]
},
"CodeCoverage": {
"anyOf": [
Expand All @@ -240,19 +225,14 @@
"type": "number"
}
},
"required": [
"apexCodeCoveragePercentage"
],
"required": ["apexCodeCoveragePercentage"],
"additionalProperties": false
}
]
},
"PackageType": {
"type": "string",
"enum": [
"Managed",
"Unlocked"
]
"enum": ["Managed", "Unlocked"]
},
"CodeCoveragePercentages": {
"anyOf": [
Expand All @@ -274,19 +254,14 @@
"type": "number"
}
},
"required": [
"className",
"codeCoveragePercentage"
],
"required": ["className", "codeCoveragePercentage"],
"additionalProperties": false
},
"minItems": 1,
"maxItems": 1
}
},
"required": [
"codeCovPercentages"
],
"required": ["codeCovPercentages"],
"additionalProperties": false
}
]
Expand All @@ -303,17 +278,13 @@
"type": "string"
}
},
"required": [
"subscriberPackageVersionId"
],
"required": ["subscriberPackageVersionId"],
"additionalProperties": false
}
}
},
"required": [
"ids"
],
"required": ["ids"],
"additionalProperties": false
}
}
}
}
11 changes: 11 additions & 0 deletions src/commands/package/version/list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ export type PackageVersionListDetails = Omit<
| 'BuildDurationInSeconds'
| 'CodeCoverage'
| 'Package2'
| 'HasVpi'
> & {
HasMetadataRemoved: string;
IsPasswordProtected: string | boolean;
Expand All @@ -57,6 +58,7 @@ export type PackageVersionListDetails = Omit<
IsOrgDependent: 'N/A' | 'Yes' | 'No';
CreatedBy: string;
ValidatedAsync?: boolean;
HasVpi?: string | boolean;
};

export type PackageVersionListCommandResult = PackageVersionListDetails[];
Expand Down Expand Up @@ -187,6 +189,13 @@ export class PackageVersionListCommand extends SfCommand<PackageVersionListComma
const hasMetadataRemoved =
containerOptionsMap.get(record.Package2Id) !== 'Managed' ? 'N/A' : record.HasMetadataRemoved ? 'Yes' : 'No';

const hasVpi =
record.HasVpi === undefined
? undefined
: containerOptionsMap.get(record.Package2Id) !== 'Managed'
? 'N/A'
: String(record.HasVpi); // displays 'true'/'false'

results.push({
Package2Id: record.Package2Id,
Branch: record.Branch,
Expand Down Expand Up @@ -222,6 +231,7 @@ export class PackageVersionListCommand extends SfCommand<PackageVersionListComma
HasMetadataRemoved: hasMetadataRemoved,
CreatedBy: record.CreatedById,
Language: record.Language,
HasVpi: hasVpi,
});
});
this.table({
Expand Down Expand Up @@ -287,6 +297,7 @@ const getColumnData = (
{ key: 'Description', name: messages.getMessage('description') },
{ key: 'CodeCoverage', name: messages.getMessage('codeCoverage') },
{ key: 'HasPassedCodeCoverageCheck', name: messages.getMessage('hasPassedCodeCoverageCheck') },
{ key: 'HasVpi', name: messages.getMessage('hasVpi') },
{ key: 'ConvertedFromVersionId', name: messages.getMessage('convertedFromVersionId') },
{ key: 'IsOrgDependent', name: messages.getMessage('isOrgDependent') },
{ key: 'ReleaseVersion', name: messages.getMessage('releaseVersion') },
Expand Down
13 changes: 13 additions & 0 deletions src/commands/package/version/report.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ const omissions = [
'Package2',
'HasMetadataRemoved',
'DeveloperUsePkgZip',
'HasVpi',
] as const;
type Omission = (typeof omissions)[number];

Expand All @@ -48,6 +49,7 @@ export type PackageVersionReportResultModified = Omit<PackageVersionReportResult
Package2: Partial<Omit<PackagingSObjects.Package2, 'IsOrgDependent'> & { IsOrgDependent: string }>;
PackageType?: PackageType;
HasMetadataRemoved: boolean | string;
HasVpi?: boolean | string;
};

export class PackageVersionReportCommand extends SfCommand<PackageVersionReportResultModified> {
Expand Down Expand Up @@ -85,6 +87,7 @@ export class PackageVersionReportCommand extends SfCommand<PackageVersionReportR
return massagedResults;
}

// eslint-disable-next-line complexity
private display(record: PackageVersionReportResultModified, verbose: boolean, connection: Connection): void {
if (this.jsonEnabled()) {
return;
Expand Down Expand Up @@ -197,6 +200,12 @@ export class PackageVersionReportCommand extends SfCommand<PackageVersionReportR
: '') as unknown as string,
}
);
if (Number(connection.version) >= 67) {
displayRecords.push({
key: pvlMessages.getMessage('hasVpi'),
value: record.HasVpi,
});
}
}
const maximumNumClasses = 15; // Number of least code covered classes displayed on the cli output for better UX.
let codeCovStr = ''; // String to display when code coverage data is empty or null
Expand Down Expand Up @@ -298,6 +307,10 @@ export class PackageVersionReportCommand extends SfCommand<PackageVersionReportR
// set HasMetadataRemoved to N/A for Unlocked, and No when value is false or absent (pre-230)
record.HasMetadataRemoved = results.PackageType !== 'Managed' ? 'N/A' : results.HasMetadataRemoved ? 'Yes' : 'No';

if (results.HasVpi !== undefined) {
record.HasVpi = results.PackageType !== 'Managed' ? 'N/A' : String(results.HasVpi);
}

record.ConvertedFromVersionId ??= ' ';

return record;
Expand Down
4 changes: 4 additions & 0 deletions test/commands/package/packageVersion.nut.ts
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,10 @@ describe('package:version:*', () => {
'HasMetadataRemoved',
'CreatedBy',
];
// HasVpi is only present at API v67+ (app version 262)
if (Number((session.hubOrg as { apiVersion?: string }).apiVersion) >= 67) {
keys.push('HasVpi');
}

expect(output).to.have.length.greaterThan(0);
expect(output[0]).to.have.keys(keys);
Expand Down
13 changes: 13 additions & 0 deletions test/commands/package/versionReport.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ const pkgVersionReportResultModified: PackageVersionReportResultModified = {
Description: '',
HasMetadataRemoved: 'N/A',
HasPassedCodeCoverageCheck: false,
HasVpi: 'N/A',
Id: '05i3i000000Gmj6XXX',
InstallKey: '',
IsDeleted: false,
Expand Down Expand Up @@ -93,6 +94,7 @@ const pkgVersionReportResult: PackageVersionReportResult = {
Description: '',
HasMetadataRemoved: false,
HasPassedCodeCoverageCheck: false,
HasVpi: false,
Id: '05i3i000000Gmj6XXX',
InstallKey: '',
IsDeleted: false,
Expand Down Expand Up @@ -189,6 +191,7 @@ describe('package:version:report - tests', () => {
pvrr.PackageType = 'Managed';
pvrr.CodeCoverage = { apexCodeCoveragePercentage: 33 };
pvrr.HasMetadataRemoved = true;
pvrr.HasVpi = true;
pvrr.Description = 'test description';
const pvrrm = Object.assign({} as PackageVersionReportResultModified, pvrr) as PackageVersionReportResultModified;
pvrrm.Version = '0.0.6.0';
Expand All @@ -197,6 +200,7 @@ describe('package:version:report - tests', () => {
pvrrm.Package2.IsOrgDependent = 'N/A';
pvrrm.CodeCoverage = { apexCodeCoveragePercentage: 33 };
pvrrm.HasMetadataRemoved = 'Yes';
pvrrm.HasVpi = 'true';
pvrrm.HasPassedCodeCoverageCheck = 'N/A';

const result = cmd['massageResultsForDisplay'](pvrr);
Expand All @@ -208,6 +212,7 @@ describe('package:version:report - tests', () => {
pvrr.PackageType = undefined;
pvrr.CodeCoverage = { apexCodeCoveragePercentage: 33 };
pvrr.HasMetadataRemoved = true;
pvrr.HasVpi = false;
pvrr.Package2.IsOrgDependent = true;
pvrr.ValidationSkipped = true;
const pvrrm = Object.assign({} as PackageVersionReportResultModified, pvrr) as PackageVersionReportResultModified;
Expand All @@ -217,10 +222,18 @@ describe('package:version:report - tests', () => {
pvrrm.Package2.IsOrgDependent = 'No';
pvrrm.CodeCoverage = 'N/A';
pvrrm.HasMetadataRemoved = 'N/A';
pvrrm.HasVpi = 'N/A';
pvrrm.HasPassedCodeCoverageCheck = 'N/A';

const result = cmd['massageResultsForDisplay'](pvrr);
expect(result).to.deep.equal(pvrrm);
});
it('should not transform HasVpi when undefined (api < 67)', () => {
const pvrr = Object.assign({}, pkgVersionReportResult);
delete (pvrr as Partial<PackageVersionReportResult>).HasVpi;

const result = cmd['massageResultsForDisplay'](pvrr);
expect(result.HasVpi).to.be.undefined;
});
});
});
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1574,10 +1574,10 @@
dependencies:
"@salesforce/ts-types" "^2.0.12"

"@salesforce/packaging@^4.24.3":
version "4.24.3"
resolved "https://registry.yarnpkg.com/@salesforce/packaging/-/packaging-4.24.3.tgz#e148fd73e20f264f9d04f796c1a1809c9453a706"
integrity sha512-PqLpjyYId1Fjbpl6I6gvvDwRuvgXLVtWMvUDE8a1lYhAi7OhqRaxw0o5NZ/wAp/DyqG02j3q4kwlw1iMFyzt/Q==
"@salesforce/packaging@^4.25.0":
version "4.25.0"
resolved "https://registry.yarnpkg.com/@salesforce/packaging/-/packaging-4.25.0.tgz#e9f65226368ed9dd03c884417c06f1fa50b6e010"
integrity sha512-3yAC34sCm699FROy7Ijt7FEC4uuHZFHPdWazDeBgmPGVMY57AEBrNCBEP1L23uI1LfzjjpA0xXQf2D/Bdv5WQw==
dependencies:
"@jsforce/jsforce-node" "^3.10.15"
"@salesforce/core" "^8.31.0"
Expand Down
Loading