1// Copyright 2018 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/user_messages.dart'; 8import '../base/version.dart'; 9import '../doctor.dart'; 10import 'vscode.dart'; 11 12class VsCodeValidator extends DoctorValidator { 13 VsCodeValidator(this._vsCode) : super(_vsCode.productName); 14 15 final VsCode _vsCode; 16 17 static Iterable<DoctorValidator> get installedValidators { 18 return VsCode 19 .allInstalled() 20 .map<DoctorValidator>((VsCode vsCode) => VsCodeValidator(vsCode)); 21 } 22 23 @override 24 Future<ValidationResult> validate() async { 25 final String vsCodeVersionText = _vsCode.version == Version.unknown 26 ? null 27 : userMessages.vsCodeVersion(_vsCode.version.toString()); 28 29 final ValidationType validationType = _vsCode.isValid 30 ? ValidationType.installed 31 : ValidationType.partial; 32 33 return ValidationResult( 34 validationType, 35 _vsCode.validationMessages, 36 statusInfo: vsCodeVersionText, 37 ); 38 } 39} 40