Run `pub get` if flutter_tools.stamp changes (#3206)
This will help folks run pub get after they upgrade their flutter.git
revision.
diff --git a/packages/flutter_tools/lib/src/dart/pub.dart b/packages/flutter_tools/lib/src/dart/pub.dart
index 49a173d..9091614 100644
--- a/packages/flutter_tools/lib/src/dart/pub.dart
+++ b/packages/flutter_tools/lib/src/dart/pub.dart
@@ -9,8 +9,21 @@
import '../base/logger.dart';
import '../base/process.dart';
+import '../cache.dart';
import '../globals.dart';
+bool _shouldRunPubGet({ File pubSpecYaml, File dotPackages }) {
+ if (!dotPackages.existsSync())
+ return true;
+ DateTime dotPackagesLastModified = dotPackages.lastModifiedSync();
+ if (pubSpecYaml.lastModifiedSync().isAfter(dotPackagesLastModified))
+ return true;
+ File flutterToolsStamp = new File(path.join(Cache.instance.getRoot().path, 'flutter_tools.stamp'));
+ if (flutterToolsStamp.lastModifiedSync().isAfter(dotPackagesLastModified))
+ return true;
+ return false;
+}
+
Future<int> pubGet({
String directory,
bool skipIfAbsent: false,
@@ -30,7 +43,7 @@
return 1;
}
- if (!checkLastModified || !dotPackages.existsSync() || pubSpecYaml.lastModifiedSync().isAfter(dotPackages.lastModifiedSync())) {
+ if (!checkLastModified || _shouldRunPubGet(pubSpecYaml: pubSpecYaml, dotPackages: dotPackages)) {
String command = upgrade ? 'upgrade' : 'get';
Status status = logger.startProgress("Running 'pub $command' in ${path.basename(directory)}...");
int code = await runCommandAndStreamOutput(