Support downloading deps via SVN.

This commit is contained in:
David Reid 2010-03-04 23:50:57 -08:00
parent 56e30351f7
commit 92a5a326d5

View file

@ -203,15 +203,19 @@ download_source(AppDir, {hg, Url, Rev}) ->
download_source(AppDir, {git, Url, Rev}) -> download_source(AppDir, {git, Url, Rev}) ->
ok = filelib:ensure_dir(AppDir), ok = filelib:ensure_dir(AppDir),
rebar_utils:sh(?FMT("git clone -n ~s", [Url]), [], filename:dirname(AppDir)), rebar_utils:sh(?FMT("git clone -n ~s", [Url]), [], filename:dirname(AppDir)),
rebar_utils:sh(?FMT("git checkout ~s", [Rev]), [], AppDir). rebar_utils:sh(?FMT("git checkout ~s", [Rev]), [], AppDir);
download_source(AppDir, {svn, Url, Rev}) ->
ok = filelib:ensure_dir(AppDir),
rebar_utils:sh(?FMT("svn checkout -r ~s ~s ~s",
[Rev, Url, filename:basename(AppDir)]), [],
filename:dirname(AppDir)).
%% =================================================================== %% ===================================================================
%% Source helper functions %% Source helper functions
%% =================================================================== %% ===================================================================
source_engine_avail({Name, _, _}) when Name == hg; Name == git -> source_engine_avail({Name, _, _}) when Name == hg; Name == git; Name == svn ->
case scm_client_vsn(Name) >= required_scm_client_vsn(Name) of case scm_client_vsn(Name) >= required_scm_client_vsn(Name) of
true -> true ->
true; true;
@ -232,11 +236,14 @@ scm_client_vsn(Path, VsnArg, VsnRegex) ->
end. end.
required_scm_client_vsn(hg) -> {1, 4}; required_scm_client_vsn(hg) -> {1, 4};
required_scm_client_vsn(git) -> {1, 6}. required_scm_client_vsn(git) -> {1, 6};
required_scm_client_vsn(svn) -> {1, 6}.
scm_client_vsn(hg) -> scm_client_vsn(hg) ->
scm_client_vsn(os:find_executable(hg), " --version", "version (\\d+).(\\d+)"); scm_client_vsn(os:find_executable(hg), " --version", "version (\\d+).(\\d+)");
scm_client_vsn(git) -> scm_client_vsn(git) ->
scm_client_vsn(os:find_executable(git), " --version", "git version (\\d+).(\\d+)"); scm_client_vsn(os:find_executable(git), " --version", "git version (\\d+).(\\d+)");
scm_client_vsn(svn) ->
scm_client_vsn(os:find_executable(svn), " --version", "svn, version (\\d+).(\\d+)");
scm_client_vsn(_) -> scm_client_vsn(_) ->
undefined. undefined.