浏览代码

Unquote templates, add a warning instead.

pull/1008/head
Fred Hebert 9 年前
父节点
当前提交
3d0aa5e84a
共有 13 个文件被更改,包括 44 次插入23 次删除
  1. +2
    -2
      priv/templates/app.erl
  2. +1
    -1
      priv/templates/escript_mod.erl
  3. +3
    -3
      priv/templates/escript_rebar.config
  4. +1
    -5
      priv/templates/gitignore
  5. +1
    -1
      priv/templates/mod.erl
  6. +2
    -2
      priv/templates/otp_app.app.src
  7. +1
    -1
      priv/templates/otp_lib.app.src
  8. +2
    -2
      priv/templates/plugin.erl
  9. +2
    -2
      priv/templates/provider.erl
  10. +2
    -2
      priv/templates/relx_rebar.config
  11. +1
    -1
      priv/templates/sup.erl
  12. +1
    -1
      priv/templates/sys.config
  13. +25
    -0
      src/rebar_templater.erl

+ 2
- 2
priv/templates/app.erl 查看文件

@ -3,7 +3,7 @@
%% @end
%%%-------------------------------------------------------------------
-module('{{name}}_app').
-module({{name}}_app).
-behaviour(application).
@ -16,7 +16,7 @@
%%====================================================================
start(_StartType, _StartArgs) ->
'{{name}}_sup':start_link().
{{name}}_sup:start_link().
%%--------------------------------------------------------------------
stop(_State) ->

+ 1
- 1
priv/templates/escript_mod.erl 查看文件

@ -1,4 +1,4 @@
-module('{{name}}').
-module({{name}}).
%% API exports
-export([main/1]).

+ 3
- 3
priv/templates/escript_rebar.config 查看文件

@ -2,9 +2,9 @@
{deps, []}.
{escript_incl_apps,
['{{name}}']}.
{escript_top_level_app, '{{name}}'}.
{escript_name, '{{name}}'}.
[{{name}}]}.
{escript_top_level_app, {{name}}}.
{escript_name, {{name}}}.
{escript_emu_args, "%%! +sbtu +A0\n"}.
%% Profiles

+ 1
- 5
priv/templates/gitignore 查看文件

@ -11,9 +11,5 @@ ebin
log
erl_crash.dump
.rebar
_rel
_deps
_plugins
_tdeps
logs
_build
_build

+ 1
- 1
priv/templates/mod.erl 查看文件

@ -1,4 +1,4 @@
-module('{{name}}').
-module({{name}}).
%% API exports
-export([]).

+ 2
- 2
priv/templates/otp_app.app.src 查看文件

@ -1,8 +1,8 @@
{application, '{{name}}',
{application, {{name}},
[{description, "{{desc}}"},
{vsn, "0.1.0"},
{registered, []},
{mod, {'{{name}}_app', []}},
{mod, {{{name}}_app, []}},
{applications,
[kernel,
stdlib

+ 1
- 1
priv/templates/otp_lib.app.src 查看文件

@ -1,4 +1,4 @@
{application, '{{name}}',
{application, {{name}},
[{description, "{{desc}}"},
{vsn, "0.1.0"},
{registered, []},

+ 2
- 2
priv/templates/plugin.erl 查看文件

@ -1,8 +1,8 @@
-module('{{name}}').
-module({{name}}).
-export([init/1]).
-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
init(State) ->
{ok, State1} = '{{name}}_prv':init(State),
{ok, State1} = {{name}}_prv:init(State),
{ok, State1}.

+ 2
- 2
priv/templates/provider.erl 查看文件

@ -1,8 +1,8 @@
-module('{{name}}_prv').
-module({{name}}_prv).
-export([init/1, do/1, format_error/1]).
-define(PROVIDER, '{{name}}').
-define(PROVIDER, {{name}}).
-define(DEPS, [app_discovery]).
%% ===================================================================

+ 2
- 2
priv/templates/relx_rebar.config 查看文件

@ -1,8 +1,8 @@
{erl_opts, [debug_info]}.
{deps, []}.
{relx, [{release, {'{{name}}', "0.1.0"},
['{{name}}',
{relx, [{release, {{{name}}, "0.1.0"},
[{{name}},
sasl]},
{sys_config, "./config/sys.config"},

+ 1
- 1
priv/templates/sup.erl 查看文件

@ -3,7 +3,7 @@
%% @end
%%%-------------------------------------------------------------------
-module('{{name}}_sup').
-module({{name}}_sup).
-behaviour(supervisor).

+ 1
- 1
priv/templates/sys.config 查看文件

@ -1,3 +1,3 @@
[
{'{{name}}', []}
{{{name}}, []}
].

+ 25
- 0
src/rebar_templater.erl 查看文件

@ -159,9 +159,34 @@ drop_var_docs([{K,V}|Rest]) -> [{K,V} | drop_var_docs(Rest)].
create({Template, Type, File}, Files, UserVars, Force, State) ->
TemplateTerms = consult(load_file(Files, Type, File)),
Vars = drop_var_docs(override_vars(UserVars, get_template_vars(TemplateTerms, State))),
maybe_warn_about_name(Vars),
TemplateCwd = filename:dirname(File),
execute_template(TemplateTerms, Files, {Template, Type, TemplateCwd}, Vars, Force).
maybe_warn_about_name(Vars) ->
Name = proplists:get_value(name, Vars, "valid"),
case validate_atom(Name) of
invalid ->
?WARN("The 'name' variable is often associated with Erlang "
"module names and/or file names. The value submitted "
"(~s) isn't an unquoted Erlang atom. Templates "
"generated may contain errors.",
[Name]);
valid ->
ok
end.
validate_atom(Str) ->
case io_lib:fread("~a", unicode:characters_to_list(Str)) of
{ok, [Atom], ""} ->
case io_lib:write_atom(Atom) of
"'" ++ _ -> invalid; % quoted
_ -> valid % unquoted
end;
_ ->
invalid
end.
%% Run template instructions one at a time.
execute_template([], _, {Template,_,_}, _, _) ->
?DEBUG("Template ~s applied", [Template]),

正在加载...
取消
保存