doctorBlockingConditions function

List<String> doctorBlockingConditions(
  1. DoctorReport report, {
  2. CompatibilityResult? compatibility,
})

The 'doctor' command.

Binds: FR-010, FR-011.

Implementation

List<String> doctorBlockingConditions(
  DoctorReport report, {
  CompatibilityResult? compatibility,
}) {
  final blocking = <String>[];
  if (!report.flutterExecutable.observed ||
      report.flutterExecutable.value == null) {
    blocking.add('Flutter executable not found on PATH');
  }
  if (!report.dartExecutable.observed || report.dartExecutable.value == null) {
    blocking.add('Dart executable not found on PATH');
  }
  if (report.stagingAccess.observed && report.stagingAccess.value == false) {
    blocking.add('Staging directory not writable');
  }
  if (report.tempAccess.observed && report.tempAccess.value == false) {
    blocking.add('Temporary directory not writable');
  }
  if (report.recipeCompatibility.observed &&
      report.recipeCompatibility.value == false) {
    blocking.add('Recipe/toolchain compatibility check failed');
  }
  if (report.engineCompatibility.observed &&
      report.engineCompatibility.value == false) {
    blocking.add('Engine version compatibility check failed');
  }
  if (report.rendererVersionCompatibility.observed &&
      report.rendererVersionCompatibility.value == false) {
    blocking.add('Renderer version compatibility check failed');
  }
  blocking.addAll(
    compatibility?.blockers.map((finding) => finding.message) ?? const [],
  );
  return blocking;
}