applyPreset method

Future<PresetApplyResult> applyPreset(
  1. PresetApply request
)

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,
  );
}