| // Copyright 2014 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 'package:process/process.dart'; | |
| import '../artifacts.dart'; | |
| import '../base/bot_detector.dart'; | |
| import '../base/config.dart'; | |
| import '../base/file_system.dart'; | |
| import '../base/io.dart'; | |
| import '../base/logger.dart'; | |
| import '../base/os.dart'; | |
| import '../base/platform.dart'; | |
| import '../base/process.dart'; | |
| import '../base/signals.dart'; | |
| import '../base/terminal.dart'; | |
| import '../base/time.dart'; | |
| import '../base/user_messages.dart'; | |
| import '../cache.dart'; | |
| import '../custom_devices/custom_devices_config.dart'; | |
| import '../git.dart'; | |
| import '../native_assets.dart'; | |
| import '../persistent_tool_state.dart'; | |
| import '../pre_run_validator.dart'; | |
| import '../project.dart'; | |
| import '../runner/local_engine.dart'; | |
| import '../version.dart'; | |
| /// Holds core, platform-independent dependencies. | |
| class ToolContext { | |
| ToolContext({ | |
| required this.artifacts, | |
| required this.botDetector, | |
| required this.cache, | |
| required this.config, | |
| required this.customDevicesConfig, | |
| required this.flutterVersion, | |
| required this.fs, | |
| required this.git, | |
| required this.localEngineLocator, | |
| required this.logger, | |
| this.nativeAssetsBuilder, | |
| required this.os, | |
| required this.outputPreferences, | |
| required this.persistentToolState, | |
| required this.platform, | |
| required this.preRunValidator, | |
| required this.processInfo, | |
| required this.processManager, | |
| required this.processUtils, | |
| required this.projectFactory, | |
| required this.shutdownHooks, | |
| required this.signals, | |
| required this.stdio, | |
| required this.systemClock, | |
| required this.terminal, | |
| required this.userMessages, | |
| }); | |
| /// Cached and host-specific binary artifacts. | |
| final Artifacts artifacts; | |
| /// Detects whether the tool is running in a CI or automated bot environment. | |
| final BotDetector botDetector; | |
| /// Manages cached SDK artifacts, binary downloads, and directory structures. | |
| final Cache cache; | |
| /// Reads and writes user and persistent global configuration settings. | |
| final Config config; | |
| /// Manages user-configured custom device definitions stored on disk. | |
| final CustomDevicesConfig customDevicesConfig; | |
| /// Provides version and git channel info for the current Flutter SDK. | |
| final FlutterVersion flutterVersion; | |
| /// Provides mockable file system operations across host and virtual environments. | |
| final FileSystem fs; | |
| /// Wraps host `git` operations, tracking repository state and branch revisions. | |
| final Git git; | |
| /// Locates local engine builds specified via command-line flags. | |
| final LocalEngineLocator localEngineLocator; | |
| /// Formats and emits console status, trace, warning, and error logs. | |
| final Logger logger; | |
| /// Builds and packages native C/C++ or Rust assets for compilation and tests. | |
| final TestCompilerNativeAssetsBuilder? nativeAssetsBuilder; | |
| /// Operating system utilities and environment queries. | |
| final OperatingSystemUtils os; | |
| /// Manages formatting preferences for console output, such as line wrapping width. | |
| final OutputPreferences outputPreferences; | |
| /// Global tool internal state that persists across tool invocations. | |
| final PersistentToolState persistentToolState; | |
| /// Provides host operating system details and environment variables. | |
| final Platform platform; | |
| /// Validates environment prerequisites and file permissions before command execution. | |
| final PreRunValidator preRunValidator; | |
| /// Process resource and memory usage reporting. | |
| final ProcessInfo processInfo; | |
| /// Spawns and manages external host processes. | |
| final ProcessManager processManager; | |
| /// Utility helpers for executing processes, error handling, and stream capturing. | |
| final ProcessUtils processUtils; | |
| /// Instantiates and caches [FlutterProject] instances for project directories. | |
| final FlutterProjectFactory projectFactory; | |
| /// Manages lifecycle callbacks executed upon tool termination or interrupt signals. | |
| final ShutdownHooks shutdownHooks; | |
| /// Intercepts and dispatches process signals. | |
| final Signals signals; | |
| /// Provides standard I/O streams (`stdin`, `stdout`, `stderr`). | |
| final Stdio stdio; | |
| /// Provides mockable system time interfaces for timed operations. | |
| final SystemClock systemClock; | |
| /// Formats terminal text output, colorization, and ANSI terminal capabilities. | |
| final AnsiTerminal terminal; | |
| /// Centralized templates for user-facing status strings and error messages. | |
| final UserMessages userMessages; | |
| /// Common file system utilities. | |
| FileSystemUtils get fileSystemUtils => FileSystemUtils(fileSystem: fs, platform: platform); | |
| } |