-module(version_bump@error).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/version_bump/error.gleam").
-export([to_string/1]).
-export_type([release_error/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(
" Error types for the release pipeline. Mirrors semantic-release's use of\n"
" AggregateError to collect multiple problems before failing.\n"
).
-type release_error() :: {config_error, binary()} |
{git_error, binary()} |
{plugin_error, binary(), binary()} |
{version_error, binary()} |
{network_error, binary()} |
{validation_error, binary()} |
{aggregate_error, list(release_error())}.
-file("src/version_bump/error.gleam", 18).
-spec to_string(release_error()) -> binary().
to_string(Error) ->
case Error of
{config_error, M} ->
<<"Config error: "/utf8, M/binary>>;
{git_error, M@1} ->
<<"Git error: "/utf8, M@1/binary>>;
{plugin_error, P, M@2} ->
<<<<<<"Plugin '"/utf8, P/binary>>/binary, "' error: "/utf8>>/binary,
M@2/binary>>;
{version_error, M@3} ->
<<"Version error: "/utf8, M@3/binary>>;
{network_error, M@4} ->
<<"Network error: "/utf8, M@4/binary>>;
{validation_error, M@5} ->
<<"Validation error: "/utf8, M@5/binary>>;
{aggregate_error, Errs} ->
<<"Multiple errors:\n"/utf8,
(gleam@string:join(
gleam@list:map(Errs, fun to_string/1),
<<"\n"/utf8>>
))/binary>>
end.