1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
## This Source Code Form is subject to the terms of the Mozilla Public
## License, v. 2.0. If a copy of the MPL was not distributed with this
## file, You can obtain one at https://mozilla.org/MPL/2.0/.
##
## Copyright (c) 2007-2024 Broadcom. All Rights Reserved. The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries. All rights reserved.
defmodule RabbitMQ.CLI.Formatters.Report do
alias RabbitMQ.CLI.Formatters.FormatterHelpers
alias RabbitMQ.CLI.Core.{Output, Config}
@behaviour RabbitMQ.CLI.FormatterBehaviour
@dialyzer {:nowarn_function, format_output: 2}
def format_output(_, _) do
raise "format_output is not implemented for report formatter"
end
def format_stream(stream, options) do
quiet = options[:quiet] || options[:silent] || false
Stream.flat_map(
stream,
FormatterHelpers.without_errors_1(fn
{_command, _banner, {:error, _} = err} ->
err
{_command, _banner, {:error, _, _} = err} ->
err
{command, banner, result} ->
case quiet do
true ->
Stream.concat([""], format_result(command, result, options))
false ->
Stream.concat(["" | banner_list(banner)], format_result(command, result, options))
end
end)
)
end
def format_result(command, output, options) do
formatter = Config.get_formatter(command, options)
case Output.format_output(output, formatter, options) do
:ok -> []
{:ok, val} -> [val]
{:stream, stream} -> stream
end
end
def banner_list([_ | _] = list), do: list
def banner_list(val), do: [val]
end
|