| // Copyright 2014 The Flutter Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import '../base/user_messages.dart'; |
| import '../doctor.dart'; |
| import 'cocoapods.dart'; |
| |
| /// A validator that confirms cocoapods is in a valid state. |
| /// |
| /// See also: |
| /// * [CocoaPods], for the interface to the cocoapods command line tool. |
| class CocoaPodsValidator extends DoctorValidator { |
| CocoaPodsValidator( |
| CocoaPods cocoaPods, |
| UserMessages userMessages, |
| ) : _cocoaPods = cocoaPods, |
| _userMessages = userMessages, |
| super('CocoaPods subvalidator'); |
| |
| final CocoaPods _cocoaPods; |
| final UserMessages _userMessages; |
| |
| @override |
| Future<ValidationResult> validate() async { |
| final List<ValidationMessage> messages = <ValidationMessage>[]; |
| |
| final CocoaPodsStatus cocoaPodsStatus = await _cocoaPods |
| .evaluateCocoaPodsInstallation; |
| |
| ValidationType status = ValidationType.installed; |
| if (cocoaPodsStatus == CocoaPodsStatus.recommended) { |
| if (await _cocoaPods.isCocoaPodsInitialized) { |
| messages.add(ValidationMessage(_userMessages.cocoaPodsVersion(await _cocoaPods.cocoaPodsVersionText))); |
| } else { |
| status = ValidationType.partial; |
| messages.add(ValidationMessage.error(_userMessages.cocoaPodsUninitialized(noCocoaPodsConsequence))); |
| } |
| } else { |
| if (cocoaPodsStatus == CocoaPodsStatus.notInstalled) { |
| status = ValidationType.missing; |
| messages.add(ValidationMessage.error( |
| _userMessages.cocoaPodsMissing(noCocoaPodsConsequence, cocoaPodsInstallInstructions))); |
| |
| } else if (cocoaPodsStatus == CocoaPodsStatus.brokenInstall) { |
| status = ValidationType.missing; |
| messages.add(ValidationMessage.error( |
| _userMessages.cocoaPodsBrokenInstall(brokenCocoaPodsConsequence, cocoaPodsInstallInstructions))); |
| |
| } else if (cocoaPodsStatus == CocoaPodsStatus.unknownVersion) { |
| status = ValidationType.partial; |
| messages.add(ValidationMessage.hint( |
| _userMessages.cocoaPodsUnknownVersion(unknownCocoaPodsConsequence, cocoaPodsInstallInstructions))); |
| } else { |
| status = ValidationType.partial; |
| final String currentVersionText = await _cocoaPods.cocoaPodsVersionText; |
| messages.add(ValidationMessage.hint( |
| _userMessages.cocoaPodsOutdated(currentVersionText, _cocoaPods.cocoaPodsRecommendedVersion, noCocoaPodsConsequence, cocoaPodsInstallInstructions))); |
| } |
| } |
| |
| return ValidationResult(status, messages); |
| } |
| } |