diagnose method

Future<bool> diagnose()

Implementation

Future<bool> diagnose() async {
  _logger.info('Doctor summary:');

  bool doctorResult = true;
  int issues = 0;
  for (final validator in validators) {
    final progress = _logger.progress('Checking ${validator.title}');
    final result = await validator.validate();

    switch (result.type) {
      case ValidationType.crash:
      case ValidationType.missing:
        doctorResult = false;
        issues += 1;
        progress.fail(
          '${validator.title} ${result.statusInfo ?? result.typeStr} ${result.leadingIcon}',
        );
      case ValidationType.partial:
      case ValidationType.notAvailable:
        issues += 1;
        progress.fail(
          '${validator.title} ${result.statusInfo ?? result.typeStr} ${result.leadingIcon}',
        );
      case ValidationType.success:
        progress.complete(
          '${validator.title} ${result.statusInfo ?? result.typeStr} ${result.leadingIcon}',
        );
        break;
    }

    for (final ValidationMessage message in result.messages) {
      switch (message.type) {
        case ValidationMessageType.error:
          _logger.err(message.toString());
          break;
        case ValidationMessageType.warning:
          _logger.alert(message.toString());
          break;
        case ValidationMessageType.information:
          _logger.info(message.toString());
          break;
      }
    }
  }

  _logger.info('');
  _logger.info(UserMessages.summarizeDoctorCheckup(issues));

  return doctorResult;
}