Current section

Files

Jump to
fifo_utils src fifo_console.erl
Raw

src/fifo_console.erl

-module(fifo_console).
-export([hdr/1, fields/2, print_config/2]).
hdr(F) ->
hdr_lines(lists:reverse(F), {"~n", [], "~n", []}).
hdr_lines([{N, n} | R], {Fmt, Vars, FmtLs, VarLs}) ->
hdr_lines(R, {
"~20s " ++ Fmt,
[N | Vars],
"~20c " ++ FmtLs,
[$- | VarLs]});
hdr_lines([{N, S}|R], {Fmt, Vars, FmtLs, VarLs}) ->
%% there is a space that matters here ---------v
hdr_lines(R, {
[$~ | integer_to_list(S) ++ [$s, $\s | Fmt]],
[N | Vars],
[$~ | integer_to_list(S) ++ [$c, $\s | FmtLs]],
[$- | VarLs]});
hdr_lines([], {Fmt, Vars, FmtL, VarLs}) ->
io:format(Fmt, Vars),
io:format(FmtL, VarLs).
fields(F, Vs) ->
fields(lists:reverse(F),
lists:reverse(Vs),
{"~n", []}).
print_config(Prefix, SubPrefix) ->
Fmt = [{"Key", 30}, {"Value", 50}],
hdr(Fmt),
PrintFn = fun({K, [V|_]}, _) ->
fields(Fmt, [key(Prefix, SubPrefix, K), V])
end,
riak_core_metadata:fold(PrintFn, ok, {Prefix, SubPrefix}).
fields([{_, n}|R], [V | Vs], {Fmt, Vars}) when is_list(V)
orelse is_binary(V) ->
fields(R, Vs, {"~s " ++ Fmt, [V | Vars]});
fields([{_, n}|R], [V | Vs], {Fmt, Vars}) ->
fields(R, Vs, {"~p " ++ Fmt, [V | Vars]});
fields([{_, S}|R], [V | Vs], {Fmt, Vars}) when is_list(V)
orelse is_binary(V) ->
%% there is a space that matters here ------------v
fields(R, Vs, {[$~ | integer_to_list(S) ++ [$s, $\s | Fmt]], [V | Vars]});
fields([{_, S}|R], [V | Vs], {Fmt, Vars}) when is_integer(V) ->
%% there is a space that matters here ------------v
fields(R, Vs, {[$~ | integer_to_list(S) ++ [$b, $\s | Fmt]], [V | Vars]});
fields([{_, S}|R], [V | Vs], {Fmt, Vars}) ->
%% there is a space that matters here ------------v
fields(R, Vs, {[$~ | integer_to_list(S) ++ [$p, $\s | Fmt]], [V | Vars]});
fields([], [], {Fmt, Vars}) ->
io:format(Fmt, Vars).
key(Prefix, SubPrefix, Key) ->
io_lib:format("~s.~s.~s", [Prefix, SubPrefix, Key]).