1// 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 7import 'android/android_sdk.dart'; 8import 'android/android_studio.dart'; 9import 'android/android_workflow.dart'; 10import 'application_package.dart'; 11import 'artifacts.dart'; 12import 'asset.dart'; 13import 'base/build.dart'; 14import 'base/config.dart'; 15import 'base/context.dart'; 16import 'base/flags.dart'; 17import 'base/io.dart'; 18import 'base/logger.dart'; 19import 'base/os.dart'; 20import 'base/platform.dart'; 21import 'base/time.dart'; 22import 'base/user_messages.dart'; 23import 'base/utils.dart'; 24import 'build_system/build_system.dart'; 25import 'cache.dart'; 26import 'compile.dart'; 27import 'devfs.dart'; 28import 'device.dart'; 29import 'doctor.dart'; 30import 'emulator.dart'; 31import 'features.dart'; 32import 'fuchsia/fuchsia_device.dart' show FuchsiaDeviceTools; 33import 'fuchsia/fuchsia_sdk.dart' show FuchsiaSdk, FuchsiaArtifacts; 34import 'fuchsia/fuchsia_workflow.dart' show FuchsiaWorkflow; 35import 'ios/ios_workflow.dart'; 36import 'ios/mac.dart'; 37import 'ios/simulators.dart'; 38import 'ios/xcodeproj.dart'; 39import 'linux/linux_workflow.dart'; 40import 'macos/cocoapods.dart'; 41import 'macos/cocoapods_validator.dart'; 42import 'macos/macos_workflow.dart'; 43import 'macos/xcode.dart'; 44import 'macos/xcode_validator.dart'; 45import 'reporting/reporting.dart'; 46import 'run_hot.dart'; 47import 'version.dart'; 48import 'web/chrome.dart'; 49import 'web/workflow.dart'; 50import 'windows/visual_studio.dart'; 51import 'windows/visual_studio_validator.dart'; 52import 'windows/windows_workflow.dart'; 53 54Future<T> runInContext<T>( 55 FutureOr<T> runner(), { 56 Map<Type, Generator> overrides, 57}) async { 58 return await context.run<T>( 59 name: 'global fallbacks', 60 body: runner, 61 overrides: overrides, 62 fallbacks: <Type, Generator>{ 63 AndroidLicenseValidator: () => AndroidLicenseValidator(), 64 AndroidSdk: AndroidSdk.locateAndroidSdk, 65 AndroidStudio: AndroidStudio.latestValid, 66 AndroidValidator: () => AndroidValidator(), 67 AndroidWorkflow: () => AndroidWorkflow(), 68 ApplicationPackageFactory: () => ApplicationPackageFactory(), 69 Artifacts: () => CachedArtifacts(), 70 AssetBundleFactory: () => AssetBundleFactory.defaultInstance, 71 BotDetector: () => const BotDetector(), 72 BuildSystem: () => const BuildSystem(), 73 Cache: () => Cache(), 74 ChromeLauncher: () => const ChromeLauncher(), 75 CocoaPods: () => CocoaPods(), 76 CocoaPodsValidator: () => const CocoaPodsValidator(), 77 Config: () => Config(), 78 DevFSConfig: () => DevFSConfig(), 79 DeviceManager: () => DeviceManager(), 80 Doctor: () => const Doctor(), 81 DoctorValidatorsProvider: () => DoctorValidatorsProvider.defaultInstance, 82 EmulatorManager: () => EmulatorManager(), 83 FeatureFlags: () => const FeatureFlags(), 84 Flags: () => const EmptyFlags(), 85 FlutterVersion: () => FlutterVersion(const SystemClock()), 86 FuchsiaArtifacts: () => FuchsiaArtifacts.find(), 87 FuchsiaDeviceTools: () => FuchsiaDeviceTools(), 88 FuchsiaSdk: () => FuchsiaSdk(), 89 FuchsiaWorkflow: () => FuchsiaWorkflow(), 90 GenSnapshot: () => const GenSnapshot(), 91 HotRunnerConfig: () => HotRunnerConfig(), 92 IMobileDevice: () => IMobileDevice(), 93 IOSSimulatorUtils: () => IOSSimulatorUtils(), 94 IOSWorkflow: () => const IOSWorkflow(), 95 KernelCompilerFactory: () => const KernelCompilerFactory(), 96 LinuxWorkflow: () => const LinuxWorkflow(), 97 Logger: () => platform.isWindows ? WindowsStdoutLogger() : StdoutLogger(), 98 MacOSWorkflow: () => const MacOSWorkflow(), 99 OperatingSystemUtils: () => OperatingSystemUtils(), 100 SimControl: () => SimControl(), 101 Stdio: () => const Stdio(), 102 SystemClock: () => const SystemClock(), 103 TimeoutConfiguration: () => const TimeoutConfiguration(), 104 Usage: () => Usage(), 105 UserMessages: () => UserMessages(), 106 VisualStudio: () => VisualStudio(), 107 VisualStudioValidator: () => const VisualStudioValidator(), 108 WebWorkflow: () => const WebWorkflow(), 109 WindowsWorkflow: () => const WindowsWorkflow(), 110 Xcode: () => Xcode(), 111 XcodeValidator: () => const XcodeValidator(), 112 XcodeProjectInterpreter: () => XcodeProjectInterpreter(), 113 }, 114 ); 115} 116