mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 11:06:20 +00:00
Use file:script if a .config.script file present
This commit is contained in:
parent
fc83f4b961
commit
b3e9e76f57
2 changed files with 56 additions and 11 deletions
|
@ -26,7 +26,7 @@
|
||||||
%% -------------------------------------------------------------------
|
%% -------------------------------------------------------------------
|
||||||
-module(rebar_config).
|
-module(rebar_config).
|
||||||
|
|
||||||
-export([new/0, new/1, base_config/1,
|
-export([new/0, new/1, base_config/1, consult_file/1,
|
||||||
get/3, get_local/3, get_list/3,
|
get/3, get_local/3, get_list/3,
|
||||||
get_all/2,
|
get_all/2,
|
||||||
set/3,
|
set/3,
|
||||||
|
@ -128,13 +128,50 @@ is_verbose() ->
|
||||||
get_jobs() ->
|
get_jobs() ->
|
||||||
get_global(jobs, 3).
|
get_global(jobs, 3).
|
||||||
|
|
||||||
|
consult_file(File) ->
|
||||||
|
case filename:extension(File) of
|
||||||
|
".script" ->
|
||||||
|
consult_and_eval(remove_script_ext(File), File);
|
||||||
|
_ ->
|
||||||
|
Script = File ++ ".script",
|
||||||
|
case filelib:is_regular(Script) of
|
||||||
|
true ->
|
||||||
|
consult_and_eval(File, Script);
|
||||||
|
false ->
|
||||||
|
?DEBUG("Consult config file ~p~n", [File]),
|
||||||
|
file:consult(File)
|
||||||
|
end
|
||||||
|
end.
|
||||||
|
|
||||||
%% ===================================================================
|
%% ===================================================================
|
||||||
%% Internal functions
|
%% Internal functions
|
||||||
%% ===================================================================
|
%% ===================================================================
|
||||||
|
|
||||||
consult_file(File) ->
|
consult_and_eval(File, Script) ->
|
||||||
|
?DEBUG("Evaluating config script ~p~n", [Script]),
|
||||||
|
ConfigData = try_consult(File),
|
||||||
|
file:script(File, bs([{'CONFIG', ConfigData}, {'SCRIPT', File}])).
|
||||||
|
|
||||||
|
|
||||||
|
remove_script_ext(F) ->
|
||||||
|
"tpircs." ++ Rev = lists:reverse(F),
|
||||||
|
lists:reverse(Rev).
|
||||||
|
|
||||||
|
try_consult(File) ->
|
||||||
|
case file:consult(File) of
|
||||||
|
{ok, Terms} ->
|
||||||
?DEBUG("Consult config file ~p~n", [File]),
|
?DEBUG("Consult config file ~p~n", [File]),
|
||||||
file:consult(File).
|
Terms;
|
||||||
|
{error, enoent} -> [];
|
||||||
|
{error, Reason} ->
|
||||||
|
?ABORT("Failed to read config file ~s: ~p~n", [File, Reason])
|
||||||
|
end.
|
||||||
|
|
||||||
|
bs(Vars) ->
|
||||||
|
lists:foldl(fun({K,V}, Bs) ->
|
||||||
|
erl_eval:add_binding(K, V, Bs)
|
||||||
|
end, erl_eval:new_bindings(), Vars).
|
||||||
|
|
||||||
|
|
||||||
local_opts([], Acc) ->
|
local_opts([], Acc) ->
|
||||||
lists:reverse(Acc);
|
lists:reverse(Acc);
|
||||||
|
|
|
@ -48,12 +48,20 @@ is_rel_dir() ->
|
||||||
|
|
||||||
is_rel_dir(Dir) ->
|
is_rel_dir(Dir) ->
|
||||||
Fname = filename:join([Dir, "reltool.config"]),
|
Fname = filename:join([Dir, "reltool.config"]),
|
||||||
|
Scriptname = Fname ++ ".script",
|
||||||
|
Res = case filelib:is_regular(Scriptname) of
|
||||||
|
true ->
|
||||||
|
{true, Scriptname};
|
||||||
|
false ->
|
||||||
case filelib:is_regular(Fname) of
|
case filelib:is_regular(Fname) of
|
||||||
true ->
|
true ->
|
||||||
{true, Fname};
|
{true, Fname};
|
||||||
false ->
|
false ->
|
||||||
false
|
false
|
||||||
end.
|
end
|
||||||
|
end,
|
||||||
|
?DEBUG("is_rel_dir(~s) -> ~p~n", [Dir, Res]),
|
||||||
|
Res.
|
||||||
|
|
||||||
%% Get release name and version from a reltool.config
|
%% Get release name and version from a reltool.config
|
||||||
get_reltool_release_info([{sys, Config}| _]) ->
|
get_reltool_release_info([{sys, Config}| _]) ->
|
||||||
|
@ -116,7 +124,7 @@ get_previous_release_path() ->
|
||||||
%% Load terms from reltool.config
|
%% Load terms from reltool.config
|
||||||
%%
|
%%
|
||||||
load_config(ReltoolFile) ->
|
load_config(ReltoolFile) ->
|
||||||
case file:consult(ReltoolFile) of
|
case rebar_config:consult_file(ReltoolFile) of
|
||||||
{ok, Terms} ->
|
{ok, Terms} ->
|
||||||
expand_version(Terms, filename:dirname(ReltoolFile));
|
expand_version(Terms, filename:dirname(ReltoolFile));
|
||||||
Other ->
|
Other ->
|
||||||
|
|
Loading…
Reference in a new issue