context_runner.dart 4.83 KB
Newer Older
1 2 3 4 5 6
// Copyright 2018 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:async';

7 8 9
import 'android/android_sdk.dart';
import 'android/android_studio.dart';
import 'android/android_workflow.dart';
10
import 'android/gradle_utils.dart';
11
import 'application_package.dart';
12 13 14
import 'artifacts.dart';
import 'asset.dart';
import 'base/build.dart';
15 16
import 'base/config.dart';
import 'base/context.dart';
17
import 'base/flags.dart';
18 19 20 21
import 'base/io.dart';
import 'base/logger.dart';
import 'base/os.dart';
import 'base/platform.dart';
22
import 'base/process.dart';
23
import 'base/signals.dart';
24
import 'base/time.dart';
25
import 'base/user_messages.dart';
26
import 'base/utils.dart';
27
import 'build_system/build_system.dart';
28
import 'cache.dart';
29
import 'compile.dart';
30
import 'dart/pub.dart';
31 32 33
import 'devfs.dart';
import 'device.dart';
import 'doctor.dart';
34
import 'emulator.dart';
35
import 'features.dart';
36 37 38
import 'fuchsia/fuchsia_device.dart' show FuchsiaDeviceTools;
import 'fuchsia/fuchsia_sdk.dart' show FuchsiaSdk, FuchsiaArtifacts;
import 'fuchsia/fuchsia_workflow.dart' show FuchsiaWorkflow;
39
import 'ios/devices.dart' show IOSDeploy;
40 41 42 43
import 'ios/ios_workflow.dart';
import 'ios/mac.dart';
import 'ios/simulators.dart';
import 'ios/xcodeproj.dart';
44
import 'linux/linux_workflow.dart';
45 46
import 'macos/cocoapods.dart';
import 'macos/cocoapods_validator.dart';
47
import 'macos/macos_workflow.dart';
48 49
import 'macos/xcode.dart';
import 'macos/xcode_validator.dart';
50
import 'mdns_discovery.dart';
51
import 'persistent_tool_state.dart';
52
import 'reporting/reporting.dart';
53 54
import 'run_hot.dart';
import 'version.dart';
55 56
import 'web/chrome.dart';
import 'web/workflow.dart';
57 58
import 'windows/visual_studio.dart';
import 'windows/visual_studio_validator.dart';
59
import 'windows/windows_workflow.dart';
60

61 62
Future<T> runInContext<T>(
  FutureOr<T> runner(), {
63
  Map<Type, Generator> overrides,
64
}) async {
65
  return await context.run<T>(
66
    name: 'global fallbacks',
67
    body: runner,
68 69
    overrides: overrides,
    fallbacks: <Type, Generator>{
70
      AndroidLicenseValidator: () => AndroidLicenseValidator(),
71 72
      AndroidSdk: AndroidSdk.locateAndroidSdk,
      AndroidStudio: AndroidStudio.latestValid,
73
      AndroidValidator: () => AndroidValidator(),
74
      AndroidWorkflow: () => AndroidWorkflow(),
75
      ApplicationPackageFactory: () => ApplicationPackageFactory(),
76
      Artifacts: () => CachedArtifacts(),
77 78
      AssetBundleFactory: () => AssetBundleFactory.defaultInstance,
      BotDetector: () => const BotDetector(),
79
      BuildSystem: () => const BuildSystem(),
80
      Cache: () => Cache(),
81
      ChromeLauncher: () => const ChromeLauncher(),
82
      CocoaPods: () => CocoaPods(),
83
      CocoaPodsValidator: () => const CocoaPodsValidator(),
84 85 86
      Config: () => Config(),
      DevFSConfig: () => DevFSConfig(),
      DeviceManager: () => DeviceManager(),
87 88
      Doctor: () => const Doctor(),
      DoctorValidatorsProvider: () => DoctorValidatorsProvider.defaultInstance,
89
      EmulatorManager: () => EmulatorManager(),
90
      FeatureFlags: () => const FeatureFlags(),
91
      Flags: () => const EmptyFlags(),
92
      FlutterVersion: () => FlutterVersion(const SystemClock()),
93
      FuchsiaArtifacts: () => FuchsiaArtifacts.find(),
94
      FuchsiaDeviceTools: () => FuchsiaDeviceTools(),
95 96
      FuchsiaSdk: () => FuchsiaSdk(),
      FuchsiaWorkflow: () => FuchsiaWorkflow(),
97
      GenSnapshot: () => const GenSnapshot(),
98
      GradleUtils: () => GradleUtils(),
99
      HotRunnerConfig: () => HotRunnerConfig(),
100
      IMobileDevice: () => IMobileDevice(),
101
      IOSDeploy: () => const IOSDeploy(),
102
      IOSSimulatorUtils: () => IOSSimulatorUtils(),
103
      IOSWorkflow: () => const IOSWorkflow(),
104
      KernelCompilerFactory: () => const KernelCompilerFactory(),
105
      LinuxWorkflow: () => const LinuxWorkflow(),
106
      Logger: () => platform.isWindows ? WindowsStdoutLogger() : StdoutLogger(),
107
      MacOSWorkflow: () => const MacOSWorkflow(),
108
      MDnsObservatoryDiscovery: () => MDnsObservatoryDiscovery(),
109
      OperatingSystemUtils: () => OperatingSystemUtils(),
110
      PersistentToolState: () => PersistentToolState(),
111
      ProcessInfo: () => ProcessInfo(),
112
      ProcessUtils: () => ProcessUtils(),
113
      Pub: () => const Pub(),
114
      Signals: () => Signals(),
115
      SimControl: () => SimControl(),
116
      Stdio: () => const Stdio(),
117
      SystemClock: () => const SystemClock(),
118
      TimeoutConfiguration: () => const TimeoutConfiguration(),
119
      Usage: () => Usage(),
120
      UserMessages: () => UserMessages(),
121 122
      VisualStudio: () => VisualStudio(),
      VisualStudioValidator: () => const VisualStudioValidator(),
123
      WebWorkflow: () => const WebWorkflow(),
124
      WindowsWorkflow: () => const WindowsWorkflow(),
125 126
      Xcode: () => Xcode(),
      XcodeProjectInterpreter: () => XcodeProjectInterpreter(),
127
      XcodeValidator: () => const XcodeValidator(),
128 129
    },
  );
130
}