// 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';

import 'package:quiver/time.dart';

import 'android/android_sdk.dart';
import 'android/android_studio.dart';
import 'android/android_workflow.dart';
import 'artifacts.dart';
import 'asset.dart';
import 'base/build.dart';
import 'base/config.dart';
import 'base/context.dart';
import 'base/flags.dart';
import 'base/io.dart';
import 'base/logger.dart';
import 'base/os.dart';
import 'base/platform.dart';
import 'base/port_scanner.dart';
import 'base/utils.dart';
import 'cache.dart';
import 'devfs.dart';
import 'device.dart';
import 'doctor.dart';
import 'ios/cocoapods.dart';
import 'ios/ios_workflow.dart';
import 'ios/mac.dart';
import 'ios/simulators.dart';
import 'ios/xcodeproj.dart';
import 'run_hot.dart';
import 'usage.dart';
import 'version.dart';

Future<T> runInContext<T>(
  FutureOr<T> runner(), {
  Map<Type, dynamic> overrides,
}) async {
  return await context.run<T>(
    name: 'global fallbacks',
    body: runner,
    overrides: overrides,
    fallbacks: <Type, Generator>{
      AndroidSdk: AndroidSdk.locateAndroidSdk,
      AndroidStudio: AndroidStudio.latestValid,
      AndroidWorkflow: () => new AndroidWorkflow(),
      Artifacts: () => new CachedArtifacts(),
      AssetBundleFactory: () => AssetBundleFactory.defaultInstance,
      BotDetector: () => const BotDetector(),
      Cache: () => new Cache(),
      Clock: () => const Clock(),
      CocoaPods: () => const CocoaPods(),
      Config: () => new Config(),
      DevFSConfig: () => new DevFSConfig(),
      DeviceManager: () => new DeviceManager(),
      Doctor: () => new Doctor(),
      Flags: () => const EmptyFlags(),
      FlutterVersion: () => new FlutterVersion(const Clock()),
      GenSnapshot: () => const GenSnapshot(),
      HotRunnerConfig: () => new HotRunnerConfig(),
      IMobileDevice: () => const IMobileDevice(),
      IOSSimulatorUtils: () => new IOSSimulatorUtils(),
      IOSWorkflow: () => const IOSWorkflow(),
      Logger: () => platform.isWindows ? new WindowsStdoutLogger() : new StdoutLogger(),
      OperatingSystemUtils: () => new OperatingSystemUtils(),
      PortScanner: () => const HostPortScanner(),
      SimControl: () => new SimControl(),
      Stdio: () => const Stdio(),
      Usage: () => new Usage(),
      Xcode: () => new Xcode(),
      XcodeProjectInterpreter: () => new XcodeProjectInterpreter(),
    },
  );
}
