diff --git a/packages/flutter_tools/lib/src/commands/analyze.dart b/packages/flutter_tools/lib/src/commands/analyze.dart index fd54c104c60..bba032c4f70 100644 --- a/packages/flutter_tools/lib/src/commands/analyze.dart +++ b/packages/flutter_tools/lib/src/commands/analyze.dart @@ -6,6 +6,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; +import 'package:den_api/den_api.dart'; import 'package:path/path.dart' as path; import '../artifacts.dart'; @@ -179,6 +180,18 @@ class AnalyzeCommand extends FlutterCommand { Map packages = {}; bool hadInconsistentRequirements = false; for (Directory directory in pubSpecDirectories.map((path) => new Directory(path))) { + String pubSpecYamlPath = path.join(directory.path, 'pubspec.yaml'); + File pubSpecYamlFile = new File(pubSpecYamlPath); + if (pubSpecYamlFile.existsSync()) { + Pubspec pubSpecYaml = await Pubspec.load(pubSpecYamlPath); + String packageName = pubSpecYaml.name; + String packagePath = path.normalize(path.absolute(path.join(directory.path, 'lib'))); + if (packages.containsKey(packageName) && packages[packageName] != packagePath) { + logging.warning('Inconsistent requirements for $packageName; using $packagePath (and not ${packages[packageName]}).'); + hadInconsistentRequirements = true; + } + packages[packageName] = packagePath; + } File dotPackages = new File(path.join(directory.path, '.packages')); if (dotPackages.existsSync()) { Map dependencies = {}; diff --git a/packages/flutter_tools/pubspec.yaml b/packages/flutter_tools/pubspec.yaml index f9ceeea9c7a..eac634a67a5 100644 --- a/packages/flutter_tools/pubspec.yaml +++ b/packages/flutter_tools/pubspec.yaml @@ -12,6 +12,7 @@ dependencies: archive: ^1.0.20 args: ^0.13.0 crypto: ^0.9.1 + den_api: ^0.1.0 mustache4dart: ^1.0.0 path: ^1.3.0 stack_trace: ^1.4.0