checkReviewedContentInvariant function
ReviewedContentInvariantResult
checkReviewedContentInvariant({
- required ChangePlan plan,
- required String canonicalDestination,
- ApplyFileSystem fileSystem = const ApplyFileSystem(),
Implementation
ReviewedContentInvariantResult checkReviewedContentInvariant({
required ChangePlan plan,
required String canonicalDestination,
ApplyFileSystem fileSystem = const ApplyFileSystem(),
}) {
final violations = <InvariantViolation>[];
for (final operation in plan.operations.where(
(operation) => operation.ownershipClass.inReviewedContentInvariant,
)) {
final reviewed =
plan.reviewedSourceHashes[operation.logicalPath] ??
operation.contentHash;
final target = applyPath(canonicalDestination, operation.logicalPath);
final applied = fileSystem.fileExists(target)
? computeRawHash(fileSystem.readBytes(target))
: null;
if (applied != reviewed) {
violations.add(
InvariantViolation(operation.logicalPath, reviewed, applied),
);
}
}
return ReviewedContentInvariantResult(List.unmodifiable(violations));
}