zf

zenflows testing
git clone https://s.sonu.ch/~srfsh/zf.git
Log | Files | Refs | Submodules | README | LICENSE

initialize_plugins.ex (956B)


      1 defmodule Credo.Execution.Task.InitializePlugins do
      2   @moduledoc false
      3 
      4   use Credo.Execution.Task
      5 
      6   alias Credo.Execution
      7 
      8   def call(exec, _opts) do
      9     Enum.reduce(exec.plugins, exec, &init_plugin(&2, &1))
     10   end
     11 
     12   defp init_plugin(exec, {_mod, false}), do: exec
     13 
     14   defp init_plugin(exec, {mod, _params}) do
     15     if Code.ensure_loaded?(mod) do
     16       if function_exported?(mod, :init, 1) do
     17         exec
     18         |> Execution.set_initializing_plugin(mod)
     19         |> mod.init()
     20         |> Execution.ensure_execution_struct("#{mod}.init/1")
     21         |> Execution.set_initializing_plugin(nil)
     22       else
     23         Execution.halt(
     24           exec,
     25           "Plugin module `#{Credo.Code.Module.name(mod)}` is not a valid plugin: does not implement expected behavior."
     26         )
     27       end
     28     else
     29       Execution.halt(
     30         exec,
     31         "Plugin module `#{Credo.Code.Module.name(mod)}` is not available and could not be initialized."
     32       )
     33     end
     34   end
     35 end