lib/command_supervisor.ex
defmodule HonchoSupervisor.CommandSupervisor do
use Supervisor
alias Honcho.Command
def start_link(commands) do
System.no_halt(true)
Supervisor.start_link(__MODULE__, commands, name: __MODULE__)
end
#### Callbacks
def init(commands),
do:
commands
|> children()
|> Supervisor.init(strategy: :one_for_one)
#### Private
defp children(commands),
do: commands |> Enum.map(&child/1)
defp child({name, command}),
do: %{id: name, start: {Command, :start_link, [[name: name, command: command]]}}
end