connect static method

Future<BuildDaemonClient> connect(
  1. String workingDirectory,
  2. List<String> daemonCommand, {
  3. Serializers? serializersOverride,
  4. void logHandler(
    1. ServerLog
    )?,
  5. bool includeParentEnvironment = true,
  6. Map<String, String>? environment,
  7. BuildMode buildMode = BuildMode.Auto,
})

Connects to the current daemon instance.

The options of the running daemon are checked against daemonCommand. If there is a mismatch, an exception is thrown.

If one is not running, a new daemon instance will be started.

Implementation

static Future<BuildDaemonClient> connect(
  String workingDirectory,
  List<String> daemonCommand, {
  Serializers? serializersOverride,
  void Function(ServerLog)? logHandler,
  bool includeParentEnvironment = true,
  Map<String, String>? environment,
  BuildMode buildMode = BuildMode.Auto,
}) async {
  logHandler ??= (_) {};
  final daemonArgs = daemonCommand.sublist(1)
    ..add('--$buildModeFlag=$buildMode');

  final process = await Process.start(
    daemonCommand.first,
    daemonArgs,
    mode: ProcessStartMode.detachedWithStdio,
    workingDirectory: workingDirectory,
    environment: environment,
    includeParentEnvironment: includeParentEnvironment,
  );

  try {
    await _handleDaemonStartup(process, logHandler);
  } catch (_) {
    process.kill();
    rethrow;
  }

  return connectUnchecked(
    workingDirectory,
    serializersOverride: serializersOverride,
    logHandler: logHandler,
  );
}