소스 검색

Clean up and fix vcs functions and logging

pull/3/head
Tuncer Ayaz 13 년 전
부모
커밋
c3a4ed292e
1개의 변경된 파일32개의 추가작업 그리고 25개의 파일을 삭제
  1. +32
    -25
      src/rebar_deps.erl

+ 32
- 25
src/rebar_deps.erl 파일 보기

@ -144,9 +144,7 @@ compile(Config, AppFile) ->
Deps = rebar_config:get_local(Config, deps, []), Deps = rebar_config:get_local(Config, deps, []),
case find_deps(find, Deps) of case find_deps(find, Deps) of
{AvailDeps, []} -> {AvailDeps, []} ->
lists:foreach(fun(Dep) ->
?CONSOLE("~s\n", [print_source(Dep#dep.source)])
end, AvailDeps),
lists:foreach(fun(Dep) -> print_source(Dep) end, AvailDeps),
ok; ok;
{_, MissingDeps} -> {_, MissingDeps} ->
?ABORT("Missing dependencies: ~p\n", [MissingDeps]) ?ABORT("Missing dependencies: ~p\n", [MissingDeps])
@ -422,17 +420,17 @@ source_engine_avail(Source) ->
source_engine_avail(Name, Source) source_engine_avail(Name, Source)
when Name == hg; Name == git; Name == svn; Name == bzr -> when Name == hg; Name == git; Name == svn; Name == bzr ->
case scm_client_vsn(Name) >= required_scm_client_vsn(Name) of
case vcs_client_vsn(Name) >= required_vcs_client_vsn(Name) of
true -> true ->
true; true;
false -> false ->
?ABORT("Rebar requires version ~p or higher of ~s to process ~p\n", ?ABORT("Rebar requires version ~p or higher of ~s to process ~p\n",
[required_scm_client_vsn(Name), Name, Source])
[required_vcs_client_vsn(Name), Name, Source])
end. end.
scm_client_vsn(false, _VsnArg, _VsnRegex) ->
vcs_client_vsn(false, _VsnArg, _VsnRegex) ->
false; false;
scm_client_vsn(Path, VsnArg, VsnRegex) ->
vcs_client_vsn(Path, VsnArg, VsnRegex) ->
{ok, Info} = rebar_utils:sh(Path ++ VsnArg, [{env, [{"LANG", "C"}]}, {ok, Info} = rebar_utils:sh(Path ++ VsnArg, [{env, [{"LANG", "C"}]},
{use_stdout, false}]), {use_stdout, false}]),
case re:run(Info, VsnRegex, [{capture, all_but_first, list}]) of case re:run(Info, VsnRegex, [{capture, all_but_first, list}]) of
@ -442,22 +440,22 @@ scm_client_vsn(Path, VsnArg, VsnRegex) ->
false false
end. end.
required_scm_client_vsn(hg) -> {1, 1};
required_scm_client_vsn(git) -> {1, 5};
required_scm_client_vsn(bzr) -> {2, 0};
required_scm_client_vsn(svn) -> {1, 6}.
required_vcs_client_vsn(hg) -> {1, 1};
required_vcs_client_vsn(git) -> {1, 5};
required_vcs_client_vsn(bzr) -> {2, 0};
required_vcs_client_vsn(svn) -> {1, 6}.
scm_client_vsn(hg) ->
scm_client_vsn(rebar_utils:find_executable("hg"), " --version",
vcs_client_vsn(hg) ->
vcs_client_vsn(rebar_utils:find_executable("hg"), " --version",
"version (\\d+).(\\d+)"); "version (\\d+).(\\d+)");
scm_client_vsn(git) ->
scm_client_vsn(rebar_utils:find_executable("git"), " --version",
vcs_client_vsn(git) ->
vcs_client_vsn(rebar_utils:find_executable("git"), " --version",
"git version (\\d+).(\\d+)"); "git version (\\d+).(\\d+)");
scm_client_vsn(bzr) ->
scm_client_vsn(rebar_utils:find_executable("bzr"), " --version",
vcs_client_vsn(bzr) ->
vcs_client_vsn(rebar_utils:find_executable("bzr"), " --version",
"Bazaar \\(bzr\\) (\\d+).(\\d+)"); "Bazaar \\(bzr\\) (\\d+).(\\d+)");
scm_client_vsn(svn) ->
scm_client_vsn(rebar_utils:find_executable("svn"), " --version",
vcs_client_vsn(svn) ->
vcs_client_vsn(rebar_utils:find_executable("svn"), " --version",
"svn, version (\\d+).(\\d+)"). "svn, version (\\d+).(\\d+)").
has_vcs_dir(git, Dir) -> has_vcs_dir(git, Dir) ->
@ -472,9 +470,18 @@ has_vcs_dir(svn, Dir) ->
has_vcs_dir(_, _) -> has_vcs_dir(_, _) ->
true. true.
print_source({git, Url}) -> ?FMT("BRANCH ~s ~s", ["HEAD", Url]);
print_source({git, Url, ""}) -> ?FMT("BRANCH ~s ~s", ["HEAD", Url]);
print_source({git, Url, {branch, Branch}}) -> ?FMT("BRANCH ~s ~s", [Branch, Url]);
print_source({git, Url, {tag, Tag}}) -> ?FMT("TAG ~s ~s", [Tag, Url]);
print_source({_, Url, Rev}) -> ?FMT("REV ~s ~s", [Rev, Url]).
print_source(#dep{app=App, source=Source}) ->
?CONSOLE("~s~n", [format_source(App, Source)]).
format_source(App, {git, Url}) ->
?FMT("~p BRANCH ~s ~s", [App, "HEAD", Url]);
format_source(App, {git, Url, ""}) ->
?FMT("~p BRANCH ~s ~s", [App, "HEAD", Url]);
format_source(App, {git, Url, {branch, Branch}}) ->
?FMT("~p BRANCH ~s ~s", [App, Branch, Url]);
format_source(App, {git, Url, {tag, Tag}}) ->
?FMT("~p TAG ~s ~s", [App, Tag, Url]);
format_source(App, {_, Url, Rev}) ->
?FMT("~p REV ~s ~s", [App, Rev, Url]);
format_source(App, undefined) ->
?FMT("~p", [App]).

불러오는 중...
취소
저장