-module(version_bump@logging).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/version_bump/logging.gleam").
-export([format/2, log/2, info/1, warn/1, error/1, success/1]).
-export_type([level/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" A tiny leveled logger for the release pipeline.\n"
"\n"
" Mirrors semantic-release's use of a prefixed, leveled signale/console\n"
" logger. Each message is printed to stdout with a `[version_bump]` prefix and a\n"
" colorized level tag. Logging is a side effect, so every function returns\n"
" `Nil`.\n"
).
-type level() :: info | warn | err | success | debug.
-file("src/version_bump/logging.gleam", 54).
-spec tag(level()) -> binary().
tag(Level) ->
case Level of
info ->
gleam_community@ansi:cyan(<<"info"/utf8>>);
warn ->
gleam_community@ansi:yellow(<<"warn"/utf8>>);
err ->
gleam_community@ansi:red(<<"error"/utf8>>);
success ->
gleam_community@ansi:green(<<"success"/utf8>>);
debug ->
gleam_community@ansi:dim(<<"debug"/utf8>>)
end.
-file("src/version_bump/logging.gleam", 50).
?DOC(
" Render a level + message into a single colorized, prefixed line. Pure so it\n"
" can be unit-tested without producing side effects.\n"
).
-spec format(level(), binary()) -> binary().
format(Level, Msg) ->
<<<<<<<<"[version_bump]"/utf8, " "/utf8>>/binary, (tag(Level))/binary>>/binary,
" "/utf8>>/binary,
Msg/binary>>.
-file("src/version_bump/logging.gleam", 24).
?DOC(
" Log a message at the given level. This is the single primitive that the\n"
" convenience helpers below delegate to.\n"
).
-spec log(level(), binary()) -> nil.
log(Level, Msg) ->
gleam_stdlib:println(format(Level, Msg)).
-file("src/version_bump/logging.gleam", 29).
?DOC(" Log an informational message.\n").
-spec info(binary()) -> nil.
info(Msg) ->
log(info, Msg).
-file("src/version_bump/logging.gleam", 34).
?DOC(" Log a warning.\n").
-spec warn(binary()) -> nil.
warn(Msg) ->
log(warn, Msg).
-file("src/version_bump/logging.gleam", 39).
?DOC(" Log an error.\n").
-spec error(binary()) -> nil.
error(Msg) ->
log(err, Msg).
-file("src/version_bump/logging.gleam", 44).
?DOC(" Log a success message.\n").
-spec success(binary()) -> nil.
success(Msg) ->
log(success, Msg).