Packages
reactor
0.4.1
1.0.2
1.0.1
1.0.0
0.17.0
0.16.0
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.0
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.0
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
An asynchronous, graph-based execution engine
Current section
Files
Jump to
Current section
Files
lib/reactor/dsl/wait_for.ex
defmodule Reactor.Dsl.WaitFor do
@moduledoc """
The struct used to store `wait_for` DSL entities.
See `d:Reactor.step.wait_for`.
"""
defstruct __identifier__: nil, names: []
alias Reactor.{Argument, Dsl}
import Reactor.Utils
@type t :: %Dsl.WaitFor{names: [atom], __identifier__: any}
@doc false
def __entity__,
do: %Spark.Dsl.Entity{
name: :wait_for,
describe: """
Wait for the named step to complete before allowing this one to start.
Desugars to `argument :_, result(step_to_wait_for)`
""",
examples: ["wait_for :create_user"],
args: [:names],
target: Dsl.WaitFor,
schema: [
names: [
type: {:wrap_list, :atom},
required: true,
doc: """
The name of the step to wait for.
"""
]
]
}
defimpl Argument.Build do
def build(wait_for) do
wait_for
|> Map.get(:names, [])
|> map_while_ok(fn name ->
{:ok, Argument.from_result(:_, name)}
end)
end
end
end