mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 11:06:20 +00:00
Ensure we have the correct hg version
This commit is contained in:
parent
59b1f74498
commit
864d4b74d6
1 changed files with 25 additions and 5 deletions
|
@ -31,6 +31,8 @@
|
|||
-export([preprocess/2,
|
||||
distclean/2]).
|
||||
|
||||
-define(HG_VERSION, "1.4").
|
||||
|
||||
%% ===================================================================
|
||||
%% Public API
|
||||
%% ===================================================================
|
||||
|
@ -207,13 +209,31 @@ download_source(AppDir, {hg, Url, Rev}) ->
|
|||
%% ===================================================================
|
||||
|
||||
source_engine_avail({hg, _, _}) ->
|
||||
Res = os:cmd("which hg"),
|
||||
?DEBUG("which hg = ~p\n", [Res]),
|
||||
case Res of
|
||||
[] ->
|
||||
Path = os:find_executable("hg"),
|
||||
?DEBUG("which hg = ~p\n", [Path]),
|
||||
case Path of
|
||||
false ->
|
||||
false;
|
||||
_ ->
|
||||
true
|
||||
ensure_required_scm_client(hg, Path)
|
||||
end;
|
||||
source_engine_avail(_) ->
|
||||
false.
|
||||
|
||||
%% We expect the initial part of the version string to be of the form:
|
||||
%% "Mercurial Distributed SCM (version 1.4.1+20091201)". Rebar
|
||||
%% requires version 1.4 or higher.
|
||||
ensure_required_scm_client(hg, Path) ->
|
||||
Info = os:cmd(Path ++ " --version"),
|
||||
case re:run(Info, "version (\\d*\.\\d*\.\\d*)", [{capture, all_but_first, list}]) of
|
||||
{match, [Vsn]} ->
|
||||
case Vsn >= ?HG_VERSION of
|
||||
true ->
|
||||
true;
|
||||
false ->
|
||||
?ABORT("Rebar requires version ~p or higher of hg (~p)~n",
|
||||
[?HG_VERSION, Path])
|
||||
end;
|
||||
_ ->
|
||||
false
|
||||
end.
|
||||
|
|
Loading…
Reference in a new issue