build method

LogStream<void> build({
  1. required String tag,
  2. required BuildSource source,
  3. List<DockerSecret> credentials = const [],
})

Implementation

LogStream<void> build({required String tag, required BuildSource source, List<DockerSecret> credentials = const []}) {
  final requestId = Uuid().v4().toString();
  final controller = StreamController<String>();
  final progress = StreamController<LogProgress>();
  final completer = Completer();
  final stream = LogStream._(completer, controller.stream, progress.stream, () async {
    await room.sendRequest('containers.stop_build', {'request_id': requestId});
  });
  _loggers[requestId] = controller;
  _progress[requestId] = progress;

  final req = _BuildRequest(
    tag: tag,
    requestId: requestId,
    git: source is BuildSourceGit ? source : null,
    room: source is BuildSourceRoom ? source : null,
    context: source is BuildSourceContext ? source : null,
    credentials: credentials,
  );

  room
      .sendRequest("containers.build", req.toJson(), data: source is BuildSourceContext ? source.context : null)
      .then(
        (_) {
          controller.close();
          completer.complete();
          _loggers.remove(requestId);
        },
        onError: (error) {
          completer.completeError(error);
          _loggers.remove(requestId);
        },
      );

  return stream;
}