Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

38 рядки
1.4 KiB

10 роки тому
10 роки тому
10 роки тому
10 роки тому
10 роки тому
10 роки тому
10 роки тому
10 роки тому
10 роки тому
10 роки тому
10 роки тому
  1. %% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*-
  2. %% ex: ts=4 sw=4 et
  3. -module(rebar_plugins).
  4. -export([install/1]).
  5. -include("rebar.hrl").
  6. %% ===================================================================
  7. %% Public API
  8. %% ===================================================================
  9. install(State) ->
  10. State1 = rebar_state:set(State, deps_dir, ?DEFAULT_PLUGINS_DIR),
  11. Plugins = rebar_state:get(State1, plugins, []),
  12. {ok, State2} = rebar_prv_install_deps:handle_deps(State1, Plugins),
  13. Apps = rebar_state:get(State2, all_deps, []),
  14. ToBuild = lists:dropwhile(fun rebar_app_info:valid/1, Apps),
  15. lists:foreach(fun(AppInfo) ->
  16. C = rebar_config:consult(rebar_app_info:dir(AppInfo)),
  17. S = rebar_state:new(rebar_state:new(), C, rebar_app_info:dir(AppInfo)),
  18. rebar_prv_compile:build(S, AppInfo)
  19. end, ToBuild),
  20. PluginProviders = plugin_providers(Plugins),
  21. {ok, PluginProviders, rebar_state:set(State2, deps_dir, ?DEFAULT_DEPS_DIR)}.
  22. plugin_providers(Plugins) ->
  23. lists:map(fun({Plugin, _, _}) when is_atom(Plugin) ->
  24. Plugin;
  25. ({Plugin, _}) when is_atom(Plugin) ->
  26. Plugin;
  27. (Plugin) when is_atom(Plugin) ->
  28. Plugin
  29. end, Plugins).