applyPhase1 function
ApplyPhase1Result
applyPhase1({
- required ChangePlan plan,
- required PlanLocationRecord location,
- ApplyFileSystem fileSystem = const ApplyFileSystem(),
- ApplyObservations? observations,
- bool runPreflight = true,
Implementation
ApplyPhase1Result applyPhase1({
required ChangePlan plan,
required PlanLocationRecord location,
ApplyFileSystem fileSystem = const ApplyFileSystem(),
ApplyObservations? observations,
bool runPreflight = true,
}) {
if (runPreflight) {
applyPreflight(
plan: plan,
stagingRoot: location.stagingRoot,
canonicalDestination: location.canonicalDestination,
fileSystem: fileSystem,
observations: observations,
);
}
final materialized = materializePhase1(
plan: plan,
stagingRoot: location.stagingRoot,
canonicalDestination: location.canonicalDestination,
fileSystem: fileSystem,
);
final invariant = checkReviewedContentInvariant(
plan: plan,
canonicalDestination: location.canonicalDestination,
fileSystem: fileSystem,
);
if (!invariant.invariantHolds) {
throw ApplyException(
'Reviewed-content invariant failed: ${invariant.violations.map((v) => v.logicalPath).join(', ')}.',
exitCode: ExitCodes.applyFailedPartialRecoveryOrManualRequired,
);
}
return ApplyPhase1Result(
filesWritten: materialized.filesWritten,
invariantHolds: true,
);
}