enum RunnerOutputStyle {
  normal,
  success,
  warning,
  error,
  accent,
  progress,
}

abstract class RunnerOutputPort {
  Future<void> line(String message,
      {RunnerOutputStyle style = RunnerOutputStyle.normal});
  Future<void> block(String message,
      {RunnerOutputStyle style = RunnerOutputStyle.normal});
  Future<void> buildStep(String name,
      {RunnerOutputStyle style = RunnerOutputStyle.success});
}

class NoopRunnerOutputPort implements RunnerOutputPort {
  const NoopRunnerOutputPort();

  @override
  Future<void> line(String message,
      {RunnerOutputStyle style = RunnerOutputStyle.normal}) async {}

  @override
  Future<void> block(String message,
      {RunnerOutputStyle style = RunnerOutputStyle.normal}) async {}

  @override
  Future<void> buildStep(String name,
      {RunnerOutputStyle style = RunnerOutputStyle.success}) async {}
}
