applyPreset method
Applies a preset by running its steps in order; success requires every step to succeed.
Implementation
Future<PresetApplyResult> applyPreset(PresetApply request) async {
final results = <FormulaResult>[];
var allOk = true;
for (final step in request.preset.steps) {
final formula = registry.byId(step.formula.value);
if (formula == null) {
results.add(
FormulaResult(
formula: step.formula.value,
action: step.action,
success: false,
message: 'unknown formula "${step.formula.value}"',
finishedAt: clock.now(),
),
);
allOk = false;
continue;
}
final result = await formula.run(
step.action,
_context(targetVersion: step.version),
);
results.add(result);
if (!result.success) allOk = false;
}
return PresetApplyResult(
requestId: request.requestId,
success: allOk,
results: results,
);
}