summaryrefslogtreecommitdiff
path: root/src/rebar_rel_utils.erl
diff options
context:
space:
mode:
authorTuncer Ayaz <tuncer.ayaz@gmail.com>2012-04-22 21:53:32 +0200
committerTuncer Ayaz <tuncer.ayaz@gmail.com>2012-07-13 15:21:56 +0200
commite185e86bff17fa7d093f8b24fcc45069ffde55ae (patch)
tree08cbdc29922bc67d691f21be9d76d7a5c8d4c668 /src/rebar_rel_utils.erl
parent1948eb4a47c1aa61aebbd046aa951f103a1f8644 (diff)
downloadrebar-e185e86bff17fa7d093f8b24fcc45069ffde55ae.tar.gz
Remove shared state
Diffstat (limited to 'src/rebar_rel_utils.erl')
-rw-r--r--src/rebar_rel_utils.erl29
1 files changed, 18 insertions, 11 deletions
diff --git a/src/rebar_rel_utils.erl b/src/rebar_rel_utils.erl
index e502743..3c94d97 100644
--- a/src/rebar_rel_utils.erl
+++ b/src/rebar_rel_utils.erl
@@ -35,7 +35,7 @@
get_rel_apps/2,
get_previous_release_path/0,
get_rel_file_path/2,
- load_config/1,
+ load_config/2,
get_sys_tuple/1,
get_target_dir/1,
get_root_dir/1,
@@ -123,10 +123,10 @@ get_previous_release_path() ->
%%
%% Load terms from reltool.config
%%
-load_config(ReltoolFile) ->
+load_config(Config, ReltoolFile) ->
case rebar_config:consult_file(ReltoolFile) of
{ok, Terms} ->
- expand_version(Terms, filename:dirname(ReltoolFile));
+ expand_version(Config, Terms, filename:dirname(ReltoolFile));
Other ->
?ABORT("Failed to load expected config from ~s: ~p\n",
[ReltoolFile, Other])
@@ -217,16 +217,23 @@ make_proplist([H|T], Acc) ->
make_proplist([], Acc) ->
Acc.
-expand_version(ReltoolConfig, Dir) ->
+expand_version(Config, ReltoolConfig, Dir) ->
case lists:keyfind(sys, 1, ReltoolConfig) of
{sys, Sys} ->
- ExpandedSys = {sys, [expand_rel_version(Term, Dir) || Term <- Sys]},
- lists:keyreplace(sys, 1, ReltoolConfig, ExpandedSys);
+ {Config1, Rels} =
+ lists:foldl(
+ fun(Term, {C, R}) ->
+ {C1, Rel} = expand_rel_version(C, Term, Dir),
+ {C1, [Rel|R]}
+ end, {Config, []}, Sys),
+ ExpandedSys = {sys, lists:reverse(Rels)},
+ {Config1, lists:keyreplace(sys, 1, ReltoolConfig, ExpandedSys)};
_ ->
- ReltoolConfig
+ {Config, ReltoolConfig}
end.
-expand_rel_version({rel, Name, Version, Apps}, Dir) ->
- {rel, Name, rebar_utils:vcs_vsn(Version, Dir), Apps};
-expand_rel_version(Other, _Dir) ->
- Other.
+expand_rel_version(Config, {rel, Name, Version, Apps}, Dir) ->
+ {NewConfig, VsnString} = rebar_utils:vcs_vsn(Config, Version, Dir),
+ {NewConfig, {rel, Name, VsnString, Apps}};
+expand_rel_version(Config, Other, _Dir) ->
+ {Config, Other}.