Current section
Files
Jump to
Current section
Files
lib/mix/live_view_native.ex
defmodule Mix.LiveViewNative do
def plugins() do
config_plugins = LiveViewNative.plugins()
found_plugins =
Mix.Project.deps_tree()
|> Enum.filter(fn({_app, deps}) -> Enum.member?(deps, :live_view_native) end)
|> Enum.reduce(%{}, fn({app, _deps}, plugins) ->
spec = Application.spec(app)
Enum.reduce(spec[:modules], %{}, fn(module, plugins) ->
if Code.ensure_loaded?(module) && Kernel.function_exported?(module, :__lvn_client__, 0) do
client = struct(module)
format = Atom.to_string(client.format)
Map.put(plugins, format, client)
else
plugins
end
end)
|> Map.merge(plugins)
end)
Map.merge(found_plugins, config_plugins)
end
end