check method

Checks whether config structure is compatible with state management.

Implementation

CompatibilityResult check(ArchSherpaConfig config) {
  final detected = _detectCapabilities(config.features.structure);
  final required = _requiredCapabilities(config.stateManagement.type);

  final isCompatible = _isSatisfied(
    stateType: config.stateManagement.type,
    detected: detected,
    required: required,
  );

  if (isCompatible) {
    return CompatibilityResult(
      isCompatible: true,
      detectedCapabilities: detected,
      requiredCapabilities: required,
      message: 'Configuration is compatible.',
      suggestion: '',
    );
  }

  final detectedLabels = _labelsForMessage(detected);
  final requiredLabels = _labelsForMessage(required);

  final suggestion = _suggestion(config.stateManagement.type);
  return CompatibilityResult(
    isCompatible: false,
    detectedCapabilities: detected,
    requiredCapabilities: required,
    message:
        'Incompatible config for state_management.type="${config.stateManagement.type}". '
        'Detected capabilities: $detectedLabels. Required: $requiredLabels.',
    suggestion: suggestion,
  );
}