diff options
Diffstat (limited to 'lib/nola/plugins.ex')
-rw-r--r-- | lib/nola/plugins.ex | 44 |
1 files changed, 29 insertions, 15 deletions
diff --git a/lib/nola/plugins.ex b/lib/nola/plugins.ex index ac94736..6bfcfec 100644 --- a/lib/nola/plugins.ex +++ b/lib/nola/plugins.ex @@ -31,7 +31,7 @@ defmodule Nola.Plugins do Nola.Plugins.Untappd, Nola.Plugins.UserMention, Nola.Plugins.WolframAlpha, - Nola.Plugins.YouTube, + Nola.Plugins.YouTube ] defmodule Supervisor do @@ -44,13 +44,23 @@ defmodule Nola.Plugins do def start_child(module, opts \\ []) do Logger.info("Starting #{module}") - spec = %{id: {Nola.Plugins,module}, start: {Nola.Plugins, :start_link, [module, opts]}, name: module, restart: :transient} + + spec = %{ + id: {Nola.Plugins, module}, + start: {Nola.Plugins, :start_link, [module, opts]}, + name: module, + restart: :transient + } + case DynamicSupervisor.start_child(__MODULE__, spec) do - {:ok, _} = res -> res + {:ok, _} = res -> + res + :ignore -> Logger.warn("Ignored #{module}") :ignore - {:error,_} = res -> + + {:error, _} = res -> Logger.error("Could not start #{module}: #{inspect(res, pretty: true)}") res end @@ -73,10 +83,14 @@ defmodule Nola.Plugins do end def enabled() do - :dets.foldl(fn - {name, true, _}, acc -> [name | acc] - _, acc -> acc - end, [], dets()) + :dets.foldl( + fn + {name, true, _}, acc -> [name | acc] + _, acc -> acc + end, + [], + dets() + ) end def start_all() do @@ -107,10 +121,12 @@ defmodule Nola.Plugins do @doc "Enables or disables a plugin" def switch(name, value) when is_boolean(value) do - last = case get(name) do - {:ok, last} -> last - _ -> nil - end + last = + case get(name) do + {:ok, last} -> last + _ -> nil + end + :dets.insert(dets(), {name, value, last}) end @@ -124,8 +140,7 @@ defmodule Nola.Plugins do def start_link(module, options \\ []) do with {:disabled, {_, true, last}} <- {:disabled, get(module)}, - {:throttled, false} <- {:throttled, false} - do + {:throttled, false} <- {:throttled, false} do module.start_link() else {error, _} -> @@ -133,5 +148,4 @@ defmodule Nola.Plugins do :ignore end end - end |