Commits

Anonymous committed 1e12069

Support downloading deps via SVN.

Comments (0)

Files changed (1)

src/rebar_deps.erl

 download_source(AppDir, {git, Url, Rev}) ->
     ok = filelib:ensure_dir(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_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
         true ->
             true;
     end.
 
 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(os:find_executable(hg), " --version", "version (\\d+).(\\d+)");
 scm_client_vsn(git) ->
     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(_) ->
     undefined.