Packages

A Reactor extension which provides steps for working with supervisors.

Current section

Files

Jump to
reactor_process lib reactor process builders delete_child.ex
Raw

lib/reactor/process/builders/delete_child.ex

defimpl Reactor.Dsl.Build, for: Reactor.Process.Dsl.DeleteChild do
@moduledoc false
alias Reactor.{Argument, Builder, Template}
require Template
@doc false
@impl true
def build(step, reactor) do
arguments =
case step.supervisor do
template when Template.is_template(template) ->
[
Argument.from_template(:supervisor, template),
Argument.from_template(:child_id, step.child_id) | step.arguments
]
supervisor ->
[
Argument.from_value(:supervisor, supervisor),
Argument.from_template(:child_id, step.child_id) | step.arguments
]
end
Builder.add_step(
reactor,
step.name,
{Reactor.Process.Step.DeleteChild, module: step.module},
arguments,
guards: step.guards,
ref: :step_name
)
end
@doc false
@impl true
def verify(_, _), do: :ok
end