checkReviewedContentInvariant function

ReviewedContentInvariantResult checkReviewedContentInvariant({
  1. required ChangePlan plan,
  2. required String canonicalDestination,
  3. 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));
}