浏览代码

Fix provider hook handling for escriptize

Previously all escriptize hooks from all apps in the project were
executed, which could lead to issue in case of dependencies on artifacts
which are created by these hooks.

Now the behaviour is similar to the handling of other non-global hooks.
pull/2027/head
Tino Breddin 6 年前
父节点
当前提交
9c28e9122d
共有 1 个文件被更改,包括 8 次插入7 次删除
  1. +8
    -7
      src/rebar_prv_escriptize.erl

+ 8
- 7
src/rebar_prv_escriptize.erl 查看文件

@ -63,13 +63,11 @@ desc() ->
do(State) -> do(State) ->
Providers = rebar_state:providers(State), Providers = rebar_state:providers(State),
Cwd = rebar_state:dir(State), Cwd = rebar_state:dir(State),
rebar_hooks:run_project_and_app_hooks(Cwd, pre, ?PROVIDER, Providers, State),
?INFO("Building escript...", []),
Res = case rebar_state:get(State, escript_main_app, undefined) of
AppInfo0 = case rebar_state:get(State, escript_main_app, undefined) of
undefined -> undefined ->
case rebar_state:project_apps(State) of case rebar_state:project_apps(State) of
[App] ->
escriptize(State, App);
[AppInfo] ->
AppInfo;
_ -> _ ->
?PRV_ERROR(no_main_app) ?PRV_ERROR(no_main_app)
end; end;
@ -77,12 +75,15 @@ do(State) ->
AllApps = rebar_state:all_deps(State)++rebar_state:project_apps(State), AllApps = rebar_state:all_deps(State)++rebar_state:project_apps(State),
case rebar_app_utils:find(rebar_utils:to_binary(Name), AllApps) of case rebar_app_utils:find(rebar_utils:to_binary(Name), AllApps) of
{ok, AppInfo} -> {ok, AppInfo} ->
escriptize(State, AppInfo);
AppInfo;
_ -> _ ->
?PRV_ERROR({bad_name, Name}) ?PRV_ERROR({bad_name, Name})
end end
end, end,
rebar_hooks:run_project_and_app_hooks(Cwd, post, ?PROVIDER, Providers, State),
AppInfo1 = rebar_hooks:run_all_hooks(Cwd, pre, ?PROVIDER, Providers, AppInfo0, State),
?INFO("Building escript...", []),
Res = escriptize(State, AppInfo1),
rebar_hooks:run_all_hooks(Cwd, post, ?PROVIDER, Providers, AppInfo1, State),
Res. Res.
escriptize(State0, App) -> escriptize(State0, App) ->

正在加载...
取消
保存