-module(version_bump@context).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/version_bump/context.gleam").
-export([new/5]).
-export_type([context/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(
" The shared context threaded through every plugin hook, mirroring\n"
" semantic-release's `context` object. It is immutable: the engine produces a\n"
" new `Context` as the pipeline advances (e.g. after analysing commits it sets\n"
" `next_release`).\n"
).
-type context() :: {context,
binary(),
gleam@dict:dict(binary(), binary()),
version_bump@config:config(),
version_bump@branch:branch(),
list(version_bump@branch:branch()),
list(version_bump@commit_parser:conventional_commit()),
gleam@option:option(version_bump@release:last_release()),
gleam@option:option(version_bump@release:next_release()),
list(version_bump@release:release()),
list(binary()),
boolean()}.
-file("src/version_bump/context.gleam", 30).
?DOC(" Build an initial context with the empty/None fields the pipeline fills in.\n").
-spec new(
binary(),
gleam@dict:dict(binary(), binary()),
version_bump@config:config(),
version_bump@branch:branch(),
list(version_bump@branch:branch())
) -> context().
new(Cwd, Env, Config, Branch, Branches) ->
{context,
Cwd,
Env,
Config,
Branch,
Branches,
[],
none,
none,
[],
[],
erlang:element(6, Config)}.