浏览代码

Merge pull request #221 from tsloughter/new_template_defaults

New template defaults
pull/229/head
Fred Hebert 10 年前
父节点
当前提交
c20e824e63
共有 4 个文件被更改,包括 59 次插入22 次删除
  1. +29
    -2
      src/rebar_templater.erl
  2. +26
    -2
      test/rebar_new_SUITE.erl
  3. +3
    -0
      test/rebar_resource_SUITE.erl
  4. +1
    -18
      test/rebar_xref_SUITE.erl

+ 29
- 2
src/rebar_templater.erl 查看文件

@ -132,14 +132,41 @@ override_vars([{Var, Default, Doc} | Rest], General) ->
%% Default variables, generated dynamically.
default_variables() ->
{DefaultAuthor, DefaultEmail} = default_author_and_email(),
{{Y,M,D},{H,Min,S}} = calendar:universal_time(),
[{date, lists:flatten(io_lib:format("~4..0w-~2..0w-~2..0w",[Y,M,D]))},
{datetime, lists:flatten(io_lib:format("~4..0w-~2..0w-~2..0wT~2..0w:~2..0w:~2..0w+00:00",[Y,M,D,H,Min,S]))},
{author_name, "Anonymous"},
{author_email, "anonymous@example.org"},
{author_name, DefaultAuthor},
{author_email, DefaultEmail},
{copyright_year, integer_to_list(Y)},
{apps_dir, "apps", "Directory where applications will be created if needed"}].
default_author_and_email() ->
%% See if we can get a git user and email to use as defaults
case rebar_utils:sh("git config --global user.name", []) of
{ok, Name} ->
case rebar_utils:sh("git config --global user.email", []) of
{ok, Email} ->
{string:strip(Name, both, $\n), string:strip(Email, both, $\n)};
{error, _} ->
%% Use neither if one doesn't exist
{"Anonymous", "anonymous@example.org"}
end;
{error, _} ->
%% Ok, try mecurial
case rebar_utils:sh("hg showconfig ui.username", []) of
{ok, NameEmail} ->
case re:run(NameEmail, [{capture, [1,2], list}]) of
{match, [Name, Email]} ->
{Name, Email};
_ ->
{"Anonymous", "anonymous@example.org"}
end;
{error, _} ->
{"Anonymous", "anonymous@example.org"}
end
end.
%% Load variable definitions from the 'Globals' file in the home template
%% directory
global_variables(State) ->

+ 26
- 2
test/rebar_new_SUITE.erl 查看文件

@ -6,7 +6,7 @@
-include_lib("common_test/include/ct.hrl").
-include_lib("eunit/include/eunit.hrl").
all() -> [app].
all() -> [app, app_with_fallbacks].
init_per_testcase(Case, Config0) ->
@ -32,6 +32,10 @@ mock_empty_escript_templates() ->
meck:expect(rebar_utils, escript_foldl, fun(_,_,_) -> {ok, []} end).
app(Config) ->
meck:expect(rebar_utils, sh, fun("git config --global user.name", _) -> {ok, "gitname"};
("git config --global user.email", _) -> {ok, "git@email.com"}
end),
Name = ?config(name, Config),
rebar_test_utils:run_and_check(
Config, [],
@ -40,7 +44,7 @@ app(Config) ->
),
validate_files(
Config, Name,
[{"LICENSE", ["some_name", "anonymous@example.org"]},
[{"LICENSE", ["some_name", "git@email.com"]},
{"README.md", [Name]},
{".gitignore", []},
{"rebar.config", []},
@ -49,6 +53,26 @@ app(Config) ->
{filename:join(["src", Name++"_app.erl"]), [Name]}
]).
app_with_fallbacks(Config) ->
meck:expect(rebar_utils, sh, fun(_, _) -> {error, fallback} end),
Name = ?config(name, Config),
rebar_test_utils:run_and_check(
Config, [],
["new", "test_app", Name],
{ok, []}
),
validate_files(
Config, Name,
[{"LICENSE", ["Anonymous", "anonymous@example.org"]},
{"README.md", [Name]},
{".gitignore", []},
{"rebar.config", []},
{filename:join(["src", Name++".app.src"]), [Name]},
{filename:join(["src", Name++"_sup.erl"]), [Name]},
{filename:join(["src", Name++"_app.erl"]), [Name]}
]).
validate_files(_Config, Name, Checks) ->
[begin
Path = filename:join([Name, File]),

+ 3
- 0
test/rebar_resource_SUITE.erl 查看文件

@ -17,6 +17,9 @@ init_per_group(Name, Config) ->
[{type, Name},
{resource, {Name, "https://example.org/user/app", "vsn"}} | Config].
end_per_group(_, _Config) ->
ok.
%% Changing the resource type is seen as an upgrade
init_per_testcase(change_type_upgrade, Config) ->
Type = ?config(type, Config),

+ 1
- 18
test/rebar_xref_SUITE.erl 查看文件

@ -31,7 +31,6 @@ end_per_suite(_Config) ->
init_per_testcase(Case, Config) ->
UpdConfig = rebar_test_utils:init_rebar_state(Config),
AppDir = ?config(apps, UpdConfig),
{ok, OrigDir} = file:get_cwd(),
file:set_cwd(AppDir),
Name = rebar_test_utils:create_random_name("xrefapp_"),
Vsn = rebar_test_utils:create_random_vsn(),
@ -43,25 +42,9 @@ init_per_testcase(Case, Config) ->
undefined_function_calls,undefined_functions,
exports_not_used,locals_not_used]}],
[{app_name, Name},
{rebar_config, RebarConfig},
{orig_dir, OrigDir} | UpdConfig].
{rebar_config, RebarConfig} | UpdConfig].
end_per_testcase(_, Config) ->
?debugMsg("End test case cleanup"),
AppDir = ?config(apps, Config),
OrigDir = ?config(orig_dir, Config),
%% Code path cleanup because we set the CWD to the `AppDir' prior
%% to launching rebar and these paths make it into the code path
%% before the xref module executes so they don't get cleaned up
%% automatically after the xref run. Only have to do this because
%% we are about to remove the directory and there may be
%% subsequent test cases that error out when the code path tries
%% to include one of these soon-to-be nonexistent directories.
Name = ?config(app_name, Config),
EbinDir = filename:join([AppDir, "_build", "default" "lib", Name, "ebin"]),
true = code:del_path(EbinDir),
file:set_cwd(OrigDir),
ec_file:remove(AppDir, [recursive]),
ok.
all() ->

正在加载...
取消
保存