| // Copyright 2013 The Flutter 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' as io; |
| |
| import 'package:process_runner/process_runner.dart'; |
| |
| import 'environment.dart'; |
| import 'logger.dart'; |
| |
| /// Update Flutter engine dependencies. Returns an exit code. |
| Future<int> fetchDependencies( |
| Environment environment, { |
| bool verbose = false, |
| }) async { |
| if (!environment.processRunner.processManager.canRun('gclient')) { |
| environment.logger.error('Cannot find the gclient command in your path'); |
| return 1; |
| } |
| |
| environment.logger.status('Fetching dependencies... ', newline: verbose); |
| |
| Spinner? spinner; |
| ProcessRunnerResult result; |
| try { |
| if (!verbose) { |
| spinner = environment.logger.startSpinner(); |
| } |
| |
| result = await environment.processRunner.runProcess( |
| <String>[ |
| 'gclient', |
| 'sync', |
| '-D', |
| ], |
| runInShell: true, |
| startMode: verbose |
| ? io.ProcessStartMode.inheritStdio |
| : io.ProcessStartMode.normal, |
| ); |
| } finally { |
| spinner?.finish(); |
| } |
| |
| if (result.exitCode != 0) { |
| environment.logger.error('Fetching dependencies failed.'); |
| |
| // Verbose mode already logged output by making the child process inherit |
| // this process's stdio handles. |
| if (!verbose) { |
| environment.logger.error('Output:\n${result.output}'); |
| } |
| } |
| |
| return result.exitCode; |
| } |