mirror of
https://github.com/correl/rebar.git
synced 2024-11-27 11:09:55 +00:00
Add REBAR to environment before executing hooks
REBAR will be set to the rebar binary which was executed and runs the builds. Enables the use of the same binary for rebar invocations as part of a pre or post hook like so: ${REBAR} escriptize
This commit is contained in:
parent
7936f9e873
commit
9c23dfef72
2 changed files with 21 additions and 2 deletions
|
@ -496,8 +496,9 @@ run_modules([Module | Rest], Command, Config, File) ->
|
||||||
{Module, Error}
|
{Module, Error}
|
||||||
end.
|
end.
|
||||||
|
|
||||||
apply_hooks(Mode, Config, Command, Env) ->
|
apply_hooks(Mode, Config, Command, Env0) ->
|
||||||
Hooks = rebar_config:get_local(Config, Mode, []),
|
Hooks = rebar_config:get_local(Config, Mode, []),
|
||||||
|
Env = rebar_utils:patch_env(Config, Env0),
|
||||||
lists:foreach(fun apply_hook/1,
|
lists:foreach(fun apply_hook/1,
|
||||||
[{Env, Hook} || Hook <- Hooks,
|
[{Env, Hook} || Hook <- Hooks,
|
||||||
element(1, Hook) =:= Command orelse
|
element(1, Hook) =:= Command orelse
|
||||||
|
|
|
@ -53,7 +53,8 @@
|
||||||
src_dirs/1,
|
src_dirs/1,
|
||||||
ebin_dir/0,
|
ebin_dir/0,
|
||||||
base_dir/1,
|
base_dir/1,
|
||||||
processing_base_dir/1, processing_base_dir/2]).
|
processing_base_dir/1, processing_base_dir/2,
|
||||||
|
patch_env/2]).
|
||||||
|
|
||||||
-include("rebar.hrl").
|
-include("rebar.hrl").
|
||||||
|
|
||||||
|
@ -319,6 +320,23 @@ processing_base_dir(Config, Dir) ->
|
||||||
AbsDir = filename:absname(Dir),
|
AbsDir = filename:absname(Dir),
|
||||||
AbsDir =:= base_dir(Config).
|
AbsDir =:= base_dir(Config).
|
||||||
|
|
||||||
|
%% @doc Returns the list of environment variables including 'REBAR' which points to the
|
||||||
|
%% rebar executable used to execute the currently running command. The environment is
|
||||||
|
%% not modified if rebar was invoked programmatically.
|
||||||
|
-spec patch_env(rebar_config:config(), [{string(), string()}]) -> [{string(), string()}].
|
||||||
|
patch_env(Config, []) ->
|
||||||
|
% if we reached an empty list the env did not contain the REBAR variable
|
||||||
|
case rebar_config:get_xconf(Config, escript, "") of
|
||||||
|
"" -> % rebar was invoked programmatically
|
||||||
|
[];
|
||||||
|
Path ->
|
||||||
|
[{"REBAR", Path}]
|
||||||
|
end;
|
||||||
|
patch_env(_Config, [{"REBAR", _} | _]=All) ->
|
||||||
|
All;
|
||||||
|
patch_env(Config, [E | Rest]) ->
|
||||||
|
[E | patch_env(Config, Rest)].
|
||||||
|
|
||||||
%% ====================================================================
|
%% ====================================================================
|
||||||
%% Internal functions
|
%% Internal functions
|
||||||
%% ====================================================================
|
%% ====================================================================
|
||||||
|
|
Loading…
Reference in a new issue