1// Copyright 2016 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5import 'dart:async'; 6 7import '../base/context.dart'; 8import '../base/user_messages.dart'; 9import '../doctor.dart'; 10import 'cocoapods.dart'; 11 12CocoaPodsValidator get cocoapodsValidator => context.get<CocoaPodsValidator>(); 13 14class CocoaPodsValidator extends DoctorValidator { 15 const CocoaPodsValidator() : super('CocoaPods subvalidator'); 16 17 @override 18 Future<ValidationResult> validate() async { 19 final List<ValidationMessage> messages = <ValidationMessage>[]; 20 21 final CocoaPodsStatus cocoaPodsStatus = await cocoaPods 22 .evaluateCocoaPodsInstallation; 23 24 ValidationType status = ValidationType.installed; 25 if (cocoaPodsStatus == CocoaPodsStatus.recommended) { 26 if (await cocoaPods.isCocoaPodsInitialized) { 27 messages.add(ValidationMessage(userMessages.cocoaPodsVersion(await cocoaPods.cocoaPodsVersionText))); 28 } else { 29 status = ValidationType.partial; 30 messages.add(ValidationMessage.error(userMessages.cocoaPodsUninitialized(noCocoaPodsConsequence))); 31 } 32 } else { 33 if (cocoaPodsStatus == CocoaPodsStatus.notInstalled) { 34 status = ValidationType.missing; 35 messages.add(ValidationMessage.error( 36 userMessages.cocoaPodsMissing(noCocoaPodsConsequence, cocoaPodsInstallInstructions))); 37 } else if (cocoaPodsStatus == CocoaPodsStatus.unknownVersion) { 38 status = ValidationType.partial; 39 messages.add(ValidationMessage.hint( 40 userMessages.cocoaPodsUnknownVersion(unknownCocoaPodsConsequence, cocoaPodsUpgradeInstructions))); 41 } else { 42 status = ValidationType.partial; 43 messages.add(ValidationMessage.hint( 44 userMessages.cocoaPodsOutdated(cocoaPods.cocoaPodsRecommendedVersion, noCocoaPodsConsequence, cocoaPodsUpgradeInstructions))); 45 } 46 } 47 48 return ValidationResult(status, messages); 49 } 50} 51