blob: 31a88b482459bfba0ece1a69d61e89a2515e8bad [file] [log] [blame]
Justinec76c652018-02-14 08:05:05 -08001// Copyright 2018 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5import 'dart:async';
6
Todd Volkert8d11f5c2018-03-28 10:58:28 -07007import 'android/android_sdk.dart';
8import 'android/android_studio.dart';
9import 'android/android_workflow.dart';
10import 'artifacts.dart';
11import 'asset.dart';
12import 'base/build.dart';
Justinec76c652018-02-14 08:05:05 -080013import 'base/config.dart';
14import 'base/context.dart';
Todd Volkert8d11f5c2018-03-28 10:58:28 -070015import 'base/flags.dart';
Justinec76c652018-02-14 08:05:05 -080016import 'base/io.dart';
17import 'base/logger.dart';
18import 'base/os.dart';
19import 'base/platform.dart';
Jonah Williamsa871d592018-11-10 17:02:32 -080020import 'base/time.dart';
tonyzhao1f8ab7262018-12-19 10:10:08 -080021import 'base/user_messages.dart';
jcollins-gca677012018-02-21 09:54:07 -080022import 'base/utils.dart';
Justinec76c652018-02-14 08:05:05 -080023import 'cache.dart';
Chris Bracken7ffcd3d2018-04-24 14:03:41 -070024import 'compile.dart';
Todd Volkert8d11f5c2018-03-28 10:58:28 -070025import 'devfs.dart';
26import 'device.dart';
27import 'doctor.dart';
Danny Tuppeny53840fb2018-04-18 10:48:39 +010028import 'emulator.dart';
Jonah Williamsb7c9c962018-10-22 16:48:17 -070029import 'fuchsia/fuchsia_sdk.dart';
30import 'fuchsia/fuchsia_workflow.dart';
Todd Volkert8d11f5c2018-03-28 10:58:28 -070031import 'ios/cocoapods.dart';
32import 'ios/ios_workflow.dart';
33import 'ios/mac.dart';
34import 'ios/simulators.dart';
35import 'ios/xcodeproj.dart';
36import 'run_hot.dart';
Justinec76c652018-02-14 08:05:05 -080037import 'usage.dart';
Todd Volkert8d11f5c2018-03-28 10:58:28 -070038import 'version.dart';
Justinec76c652018-02-14 08:05:05 -080039
Todd Volkert8d11f5c2018-03-28 10:58:28 -070040Future<T> runInContext<T>(
41 FutureOr<T> runner(), {
Todd Volkert6258f322018-07-24 16:33:49 -070042 Map<Type, Generator> overrides,
Todd Volkert8d11f5c2018-03-28 10:58:28 -070043}) async {
Todd Volkertf8058d72018-03-28 15:17:29 -070044 return await context.run<T>(
Todd Volkert8d11f5c2018-03-28 10:58:28 -070045 name: 'global fallbacks',
Todd Volkertf8058d72018-03-28 15:17:29 -070046 body: runner,
Todd Volkert8d11f5c2018-03-28 10:58:28 -070047 overrides: overrides,
48 fallbacks: <Type, Generator>{
49 AndroidSdk: AndroidSdk.locateAndroidSdk,
50 AndroidStudio: AndroidStudio.latestValid,
Alexandre Ardhuind927c932018-09-12 08:29:29 +020051 AndroidWorkflow: () => AndroidWorkflow(),
52 AndroidValidator: () => AndroidValidator(),
tonyzhao1b04447d2018-10-05 08:45:16 -070053 AndroidLicenseValidator: () => AndroidLicenseValidator(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020054 Artifacts: () => CachedArtifacts(),
Todd Volkert8d11f5c2018-03-28 10:58:28 -070055 AssetBundleFactory: () => AssetBundleFactory.defaultInstance,
56 BotDetector: () => const BotDetector(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020057 Cache: () => Cache(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020058 CocoaPods: () => CocoaPods(),
tonyzhao18b5af142018-09-19 15:42:51 -070059 CocoaPodsValidator: () => const CocoaPodsValidator(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020060 Config: () => Config(),
61 DevFSConfig: () => DevFSConfig(),
62 DeviceManager: () => DeviceManager(),
josephmr7f9bf5a2018-04-24 22:01:53 -040063 Doctor: () => const Doctor(),
64 DoctorValidatorsProvider: () => DoctorValidatorsProvider.defaultInstance,
Alexandre Ardhuind927c932018-09-12 08:29:29 +020065 EmulatorManager: () => EmulatorManager(),
Jonah Williamsb7c9c962018-10-22 16:48:17 -070066 FuchsiaSdk: () => FuchsiaSdk(),
Jonah Williams81c7af32018-11-06 14:36:35 -080067 FuchsiaArtifacts: () => FuchsiaArtifacts(),
Jonah Williamsb7c9c962018-10-22 16:48:17 -070068 FuchsiaWorkflow: () => FuchsiaWorkflow(),
Todd Volkert8d11f5c2018-03-28 10:58:28 -070069 Flags: () => const EmptyFlags(),
Jonah Williamsa871d592018-11-10 17:02:32 -080070 FlutterVersion: () => FlutterVersion(const SystemClock()),
Todd Volkert8d11f5c2018-03-28 10:58:28 -070071 GenSnapshot: () => const GenSnapshot(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020072 HotRunnerConfig: () => HotRunnerConfig(),
Todd Volkert8d11f5c2018-03-28 10:58:28 -070073 IMobileDevice: () => const IMobileDevice(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020074 IOSSimulatorUtils: () => IOSSimulatorUtils(),
Todd Volkert8d11f5c2018-03-28 10:58:28 -070075 IOSWorkflow: () => const IOSWorkflow(),
tonyzhao158d98ce2018-09-04 19:36:47 -070076 IOSValidator: () => const IOSValidator(),
Chris Bracken7ffcd3d2018-04-24 14:03:41 -070077 KernelCompiler: () => const KernelCompiler(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020078 Logger: () => platform.isWindows ? WindowsStdoutLogger() : StdoutLogger(),
79 OperatingSystemUtils: () => OperatingSystemUtils(),
Chris Brackenf8c50ea2018-09-18 10:05:46 -070080 PlistBuddy: () => const PlistBuddy(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020081 SimControl: () => SimControl(),
Jonah Williamsa871d592018-11-10 17:02:32 -080082 SystemClock: () => const SystemClock(),
Todd Volkert8d11f5c2018-03-28 10:58:28 -070083 Stdio: () => const Stdio(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020084 Usage: () => Usage(),
tonyzhao1f8ab7262018-12-19 10:10:08 -080085 UserMessages: () => UserMessages(),
Alexandre Ardhuind927c932018-09-12 08:29:29 +020086 Xcode: () => Xcode(),
87 XcodeProjectInterpreter: () => XcodeProjectInterpreter(),
Todd Volkert8d11f5c2018-03-28 10:58:28 -070088 },
89 );
Justinec76c652018-02-14 08:05:05 -080090}