mirror of
https://github.com/correl/rebar.git
synced 2024-11-23 19:19:54 +00:00
Support conditional template instructions
This commit is contained in:
parent
620c4b01c6
commit
2970fab4b7
1 changed files with 21 additions and 0 deletions
|
@ -347,6 +347,10 @@ write_file(Output, Data, Force) ->
|
|||
{error, exists}
|
||||
end.
|
||||
|
||||
prepend_instructions(Instructions, Rest) when is_list(Instructions) ->
|
||||
Instructions ++ Rest;
|
||||
prepend_instructions(Instruction, Rest) ->
|
||||
[Instruction|Rest].
|
||||
|
||||
%%
|
||||
%% Execute each instruction in a template definition file.
|
||||
|
@ -364,6 +368,23 @@ execute_template(_Files, [], _TemplateType, _TemplateName,
|
|||
?ERROR("One or more files already exist on disk and "
|
||||
"were not generated:~n~s~s", [Msg , Help])
|
||||
end;
|
||||
execute_template(Files, [{'if', Cond, True} | Rest], TemplateType,
|
||||
TemplateName, Context, Force, ExistingFiles) ->
|
||||
execute_template(Files, [{'if', Cond, True, []}|Rest], TemplateType,
|
||||
TemplateName, Context, Force, ExistingFiles);
|
||||
execute_template(Files, [{'if', Cond, True, False} | Rest], TemplateType,
|
||||
TemplateName, Context, Force, ExistingFiles) ->
|
||||
Instructions = case dict:find(Cond, Context) of
|
||||
{ok, true} ->
|
||||
True;
|
||||
{ok, "true"} ->
|
||||
True;
|
||||
_ ->
|
||||
False
|
||||
end,
|
||||
execute_template(Files, prepend_instructions(Instructions, Rest),
|
||||
TemplateType, TemplateName, Context, Force,
|
||||
ExistingFiles);
|
||||
execute_template(Files, [{template, Input, Output} | Rest], TemplateType,
|
||||
TemplateName, Context, Force, ExistingFiles) ->
|
||||
InputName = filename:join(filename:dirname(TemplateName), Input),
|
||||
|
|
Loading…
Reference in a new issue