| 1 |
|
defmodule Agent.Manager do |
| 2 |
|
import Agent.Config, only: [load: 0] |
| 3 |
|
import Agent.Session, only: [start_link: 1] |
| 4 |
|
import Enum, only: [each: 2] |
| 5 |
|
import Logger, only: [info: 1, error: 1] |
| 6 |
|
|
| 7 |
|
def launch do |
| 8 |
|
load() |
| 9 |
1 |
|> each(&build/1) |
| 10 |
|
end |
| 11 |
|
|
| 12 |
|
defp build({name, folder}) do |
| 13 |
|
start_link(name: name, folder: folder) |
| 14 |
:-( |
|> report(name, folder) |
| 15 |
|
end |
| 16 |
|
|
| 17 |
|
defp report({:ok, _pid}, name, folder) do |
| 18 |
:-( |
info("Agent booted: #{name} at #{folder}") |
| 19 |
|
end |
| 20 |
|
|
| 21 |
|
defp report({:error, reason}, name, _folder) do |
| 22 |
:-( |
error("Failed to boot #{name}: #{inspect(reason)}") |
| 23 |
|
end |
| 24 |
|
end |