summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_port_compiler.erl18
-rw-r--r--src/rebar_utils.erl4
2 files changed, 13 insertions, 9 deletions
diff --git a/src/rebar_port_compiler.erl b/src/rebar_port_compiler.erl
index 1f5ebac..2673160 100644
--- a/src/rebar_port_compiler.erl
+++ b/src/rebar_port_compiler.erl
@@ -300,23 +300,27 @@ expand_vars_loop([], Recurse, Vars, Count) ->
expand_vars_loop(Recurse, [], Vars, Count-1);
expand_vars_loop([{K, V} | Rest], Recurse, Vars, Count) ->
%% Identify the variables that need expansion in this value
- case re:run(V, "\\\${?(\\w+)}?", [global, {capture, all_but_first, list}]) of
+ ReOpts = [global, {capture, all_but_first, list}],
+ case re:run(V, "\\\${?(\\w+)}?", ReOpts) of
{match, Matches} ->
%% Identify the unique variables that need to be expanded
UniqueMatches = lists:usort([M || [M] <- Matches]),
- %% For each variable, expand it and return the final value. Note that
- %% if we have a bunch of unresolvable variables, nothing happens and
- %% we don't bother attempting further expansion
+ %% For each variable, expand it and return the final
+ %% value. Note that if we have a bunch of unresolvable
+ %% variables, nothing happens and we don't bother
+ %% attempting further expansion
case expand_keys_in_value(UniqueMatches, V, Vars) of
V ->
%% No change after expansion; move along
expand_vars_loop(Rest, Recurse, Vars, Count);
Expanded ->
- %% Some expansion occurred; move to next k/v but revist
- %% this value in the next loop to check for further expansion
+ %% Some expansion occurred; move to next k/v but
+ %% revisit this value in the next loop to check
+ %% for further expansion
NewVars = dict:store(K, Expanded, Vars),
- expand_vars_loop(Rest, [{K, Expanded} | Recurse], NewVars, Count)
+ expand_vars_loop(Rest, [{K, Expanded} | Recurse],
+ NewVars, Count)
end;
nomatch ->
diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl
index 88c0c25..a32adfd 100644
--- a/src/rebar_utils.erl
+++ b/src/rebar_utils.erl
@@ -191,11 +191,11 @@ expand_env_variable(InStr, VarName, RawVarValue) ->
%% No variables to expand
InStr;
_ ->
- ReOpts = [global, {return, list}],
VarValue = re:replace(RawVarValue, "\\\\", "\\\\\\\\", [global]),
%% Use a regex to match/replace:
- %% $FOO\s | ${FOO} | $FOO eol
+ %% Given variable "FOO": match $FOO\s | $FOOeol | ${FOO}
RegEx = io_lib:format("\\\$(~s(\\s|$)|{~s})", [VarName, VarName]),
+ ReOpts = [global, {return, list}],
re:replace(InStr, RegEx, VarValue ++ "\\2", ReOpts)
end.