| #!/usr/bin/env dart |
| // Copyright 2015 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| import 'dart:io'; |
| |
| final String binaryName = Platform.isWindows ? 'pub.bat' : 'pub'; |
| int runPub(Directory directory, List<String> pubArgs) { |
| int updateCount = 0; |
| for (FileSystemEntity dir in directory.listSync()) { |
| if (dir is Directory && FileSystemEntity.isFileSync(dir.path + Platform.pathSeparator + 'pubspec.yaml')) { |
| updateCount++; |
| Stopwatch timer = new Stopwatch()..start(); |
| stdout.write("Updating ${dir.path}..."); |
| ProcessResult result = Process.runSync( |
| binaryName, |
| pubArgs, |
| workingDirectory: dir.path |
| ); |
| timer.stop(); |
| stdout.write(" (${timer.elapsedMilliseconds} ms)"); |
| if (result.exitCode != 0) { |
| print("... failed with exit code ${result.exitCode}."); |
| print(result.stdout); |
| print(result.stderr); |
| } else { |
| stdout.write("\n"); |
| } |
| } |
| } |
| return updateCount; |
| } |
| |
| void main(List<String> arguments) { |
| Stopwatch timer = new Stopwatch()..start(); |
| bool upgrade = arguments.length > 0 && arguments[0] == '--upgrade'; |
| String FLUTTER_ROOT = new File(Platform.script.toFilePath()).parent.parent.path; |
| List<String> pubArgs = [ upgrade ? 'upgrade' : 'get' ]; |
| int count = 0; |
| count += runPub(new Directory("$FLUTTER_ROOT/packages"), pubArgs); |
| count += runPub(new Directory("$FLUTTER_ROOT/examples"), pubArgs); |
| String command = "$binaryName ${pubArgs.join(' ')}"; |
| print("Ran \"$command\" $count times in ${timer.elapsedMilliseconds} ms"); |
| } |