Вы не можете выбрать более 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).