|
|
@ -84,6 +84,9 @@ resolve_variables([], Dict) -> |
|
|
|
resolve_variables([{Key, Value0} | Rest], Dict) when is_list(Value0) -> |
|
|
|
Value = render(list_to_binary(Value0), Dict), |
|
|
|
resolve_variables(Rest, dict:store(Key, Value, Dict)); |
|
|
|
resolve_variables([{Key, {list, Dicts}} | Rest], Dict) when is_list(Dicts) -> |
|
|
|
%% just un-tag it so mustache can use it |
|
|
|
resolve_variables(Rest, dict:store(Key, Dicts, Dict)); |
|
|
|
resolve_variables([_Pair | Rest], Dict) -> |
|
|
|
resolve_variables(Rest, Dict). |
|
|
|
|
|
|
@ -158,14 +161,14 @@ create1(Config, TemplateId) -> |
|
|
|
undefined -> |
|
|
|
Context0; |
|
|
|
File -> |
|
|
|
case file:consult(File) of |
|
|
|
{ok, Terms} -> |
|
|
|
%% TODO: Cleanup/merge with similar code in rebar_reltool |
|
|
|
M = fun(_Key, _Base, Override) -> Override end, |
|
|
|
dict:merge(M, Context0, dict:from_list(Terms)); |
|
|
|
case consult(load_file([], file, File)) of |
|
|
|
{error, Reason} -> |
|
|
|
?ABORT("Unable to load template_vars from ~s: ~p\n", |
|
|
|
[File, Reason]) |
|
|
|
[File, Reason]); |
|
|
|
Terms -> |
|
|
|
%% TODO: Cleanup/merge with similar code in rebar_reltool |
|
|
|
M = fun(_Key, _Base, Override) -> Override end, |
|
|
|
dict:merge(M, Context0, dict:from_list(Terms)) |
|
|
|
end |
|
|
|
end, |
|
|
|
|
|
|
@ -299,7 +302,7 @@ consult(Cont, Str, Acc) -> |
|
|
|
case Result of |
|
|
|
{ok, Tokens, _} -> |
|
|
|
{ok, Term} = erl_parse:parse_term(Tokens), |
|
|
|
consult([], Remaining, [Term | Acc]); |
|
|
|
consult([], Remaining, [maybe_dict(Term) | Acc]); |
|
|
|
{eof, _Other} -> |
|
|
|
lists:reverse(Acc); |
|
|
|
{error, Info, _} -> |
|
|
@ -310,6 +313,13 @@ consult(Cont, Str, Acc) -> |
|
|
|
end. |
|
|
|
|
|
|
|
|
|
|
|
maybe_dict({Key, {list, Dicts}}) -> |
|
|
|
%% this is a 'list' element; a list of lists representing dicts |
|
|
|
{Key, {list, [dict:from_list(D) || D <- Dicts]}}; |
|
|
|
maybe_dict(Term) -> |
|
|
|
Term. |
|
|
|
|
|
|
|
|
|
|
|
write_file(Output, Data, Force) -> |
|
|
|
%% determine if the target file already exists |
|
|
|
FileExists = filelib:is_regular(Output), |
|
|
|