From 9c28e9122ddc5500e5ce70da6aa06d59dd8a2563 Mon Sep 17 00:00:00 2001 From: Tino Breddin Date: Fri, 22 Feb 2019 11:31:13 +0100 Subject: 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. --- src/rebar_prv_escriptize.erl | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/rebar_prv_escriptize.erl') diff --git a/src/rebar_prv_escriptize.erl b/src/rebar_prv_escriptize.erl index fceb65e..9cb3fdd 100644 --- a/src/rebar_prv_escriptize.erl +++ b/src/rebar_prv_escriptize.erl @@ -63,13 +63,11 @@ desc() -> do(State) -> Providers = rebar_state:providers(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 -> case rebar_state:project_apps(State) of - [App] -> - escriptize(State, App); + [AppInfo] -> + AppInfo; _ -> ?PRV_ERROR(no_main_app) end; @@ -77,12 +75,15 @@ do(State) -> AllApps = rebar_state:all_deps(State)++rebar_state:project_apps(State), case rebar_app_utils:find(rebar_utils:to_binary(Name), AllApps) of {ok, AppInfo} -> - escriptize(State, AppInfo); + AppInfo; _ -> ?PRV_ERROR({bad_name, Name}) 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. escriptize(State0, App) -> -- cgit v1.1 From 93e300b7657d34111f11257e23aebb629ef21438 Mon Sep 17 00:00:00 2001 From: Tino Breddin Date: Fri, 22 Mar 2019 12:12:13 +0100 Subject: Handle incorret app info in escriptize --- src/rebar_prv_escriptize.erl | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'src/rebar_prv_escriptize.erl') diff --git a/src/rebar_prv_escriptize.erl b/src/rebar_prv_escriptize.erl index 9cb3fdd..d6d9414 100644 --- a/src/rebar_prv_escriptize.erl +++ b/src/rebar_prv_escriptize.erl @@ -80,11 +80,16 @@ do(State) -> ?PRV_ERROR({bad_name, Name}) end end, - 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. + case AppInfo0 of + {error, _} = Err -> + Err; + _ -> + 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 + end. escriptize(State0, App) -> AppName = rebar_app_info:name(App), -- cgit v1.1