mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 03:00:17 +00:00
Do not use rebar_config:set_global in rebar_templater
This commit is contained in:
parent
d9e6cc3d90
commit
e1c9d69d1d
1 changed files with 34 additions and 38 deletions
|
@ -43,15 +43,13 @@
|
|||
%% Public API
|
||||
%% ===================================================================
|
||||
|
||||
'create-app'(Config, File) ->
|
||||
'create-app'(_Config, _File) ->
|
||||
%% Alias for create w/ template=simpleapp
|
||||
rebar_config:set_global(template, "simpleapp"),
|
||||
create(Config, File).
|
||||
create("simpleapp").
|
||||
|
||||
'create-node'(Config, File) ->
|
||||
'create-node'(_Config, _File) ->
|
||||
%% Alias for create w/ template=simplenode
|
||||
rebar_config:set_global(template, "simplenode"),
|
||||
create(Config, File).
|
||||
create("simplenode").
|
||||
|
||||
'list-templates'(_Config, _File) ->
|
||||
{AvailTemplates, Files} = find_templates(),
|
||||
|
@ -70,13 +68,40 @@
|
|||
end, AvailTemplates),
|
||||
ok.
|
||||
|
||||
|
||||
create(_Config, _) ->
|
||||
TemplateId = template_id(),
|
||||
create(TemplateId).
|
||||
|
||||
%%
|
||||
%% Given a list of key value pairs, for each string value attempt to
|
||||
%% render it using Dict as the context. Storing the result in Dict as Key.
|
||||
%%
|
||||
resolve_variables([], Dict) ->
|
||||
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([_Pair | Rest], Dict) ->
|
||||
resolve_variables(Rest, Dict).
|
||||
|
||||
%%
|
||||
%% Render a binary to a string, using mustache and the specified context
|
||||
%%
|
||||
render(Bin, Context) ->
|
||||
%% Be sure to escape any double-quotes before rendering...
|
||||
ReOpts = [global, {return, list}],
|
||||
Str0 = re:replace(Bin, "\\\\", "\\\\\\", ReOpts),
|
||||
Str1 = re:replace(Str0, "\"", "\\\\\"", ReOpts),
|
||||
mustache:render(Str1, Context).
|
||||
|
||||
%% ===================================================================
|
||||
%% Internal functions
|
||||
%% ===================================================================
|
||||
|
||||
create(TemplateId) ->
|
||||
{AvailTemplates, Files} = find_templates(),
|
||||
?DEBUG("Available templates: ~p\n", [AvailTemplates]),
|
||||
|
||||
TemplateId = template_id(),
|
||||
|
||||
%% Using the specified template id, find the matching template file/type.
|
||||
%% Note that if you define the same template in both ~/.rebar/templates
|
||||
%% that is also present in the escript, the one on the file system will
|
||||
|
@ -141,35 +166,6 @@ create(_Config, _) ->
|
|||
Force = rebar_config:get_global(force, "0"),
|
||||
execute_template(Files, FinalTemplate, Type, Template, Context, Force, []).
|
||||
|
||||
|
||||
%%
|
||||
%% Given a list of key value pairs, for each string value attempt to
|
||||
%% render it using Dict as the context. Storing the result in Dict as Key.
|
||||
%%
|
||||
resolve_variables([], Dict) ->
|
||||
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([_Pair | Rest], Dict) ->
|
||||
resolve_variables(Rest, Dict).
|
||||
|
||||
|
||||
%%
|
||||
%% Render a binary to a string, using mustache and the specified context
|
||||
%%
|
||||
render(Bin, Context) ->
|
||||
%% Be sure to escape any double-quotes before rendering...
|
||||
ReOpts = [global, {return, list}],
|
||||
Str0 = re:replace(Bin, "\\\\", "\\\\\\", ReOpts),
|
||||
Str1 = re:replace(Str0, "\"", "\\\\\"", ReOpts),
|
||||
mustache:render(Str1, Context).
|
||||
|
||||
|
||||
%% ===================================================================
|
||||
%% Internal functions
|
||||
%% ===================================================================
|
||||
|
||||
find_templates() ->
|
||||
%% Load a list of all the files in the escript -- cache them since
|
||||
%% we'll potentially need to walk it several times over the course of
|
||||
|
|
Loading…
Reference in a new issue