From c54d54b7be03c59d0ea7e735293ac3f7cd5faef3 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Wed, 2 Mar 2016 21:52:17 -0800 Subject: [PATCH] improve the atom validation --- packages/flutter_tools/lib/src/doctor.dart | 33 +++++++++++----------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/packages/flutter_tools/lib/src/doctor.dart b/packages/flutter_tools/lib/src/doctor.dart index 4c025f7427..cbd9b03baf 100644 --- a/packages/flutter_tools/lib/src/doctor.dart +++ b/packages/flutter_tools/lib/src/doctor.dart @@ -4,9 +4,11 @@ import 'dart:io'; +import 'package:path/path.dart' as path; + import 'android/android_workflow.dart'; import 'base/context.dart'; -import 'base/process.dart'; +import 'base/os.dart'; import 'globals.dart'; import 'ios/ios_workflow.dart'; @@ -217,6 +219,15 @@ class ValidationResult { } class _AtomValidator extends DoctorValidator { + static String getAtomHomePath() { + final Map env = Platform.environment; + if (env['ATOM_HOME'] != null) + return env['ATOM_HOME']; + return os.isWindows + ? path.join(env['USERPROFILE'], '.atom') + : path.join(env['HOME'], '.atom'); + } + String get label => 'Atom development environment'; ValidationResult validate() { @@ -226,24 +237,14 @@ class _AtomValidator extends DoctorValidator { ); ValidationType atomExists() { - return exitsHappy(['atom', '--version']) ? ValidationType.installed : ValidationType.missing; + bool atomDirExists = FileSystemEntity.isDirectorySync(getAtomHomePath()); + return atomDirExists ? ValidationType.installed : ValidationType.missing; }; ValidationType flutterPluginExists() { - try { - // apm list -b -p -i - List args = ['list', '-b', '-p', '-i']; - printTrace('apm ${args.join(' ')}'); - ProcessResult result = Process.runSync('apm', args); - if (result.exitCode != 0) - return ValidationType.missing; - bool available = (result.stdout as String).split('\n').any((String line) { - return line.startsWith('flutter@'); - }); - return available ? ValidationType.installed : ValidationType.missing; - } catch (error) { - return ValidationType.missing; - } + String flutterPluginPath = path.join(getAtomHomePath(), 'packages', 'flutter'); + bool flutterPluginExists = FileSystemEntity.isDirectorySync(flutterPluginPath); + return flutterPluginExists ? ValidationType.installed : ValidationType.missing; }; atomValidator.addValidator(new Validator(