• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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