@ -18,6 +18,7 @@ init(Type, _State) ->
{ ok , Resource } .
{ ok , Resource } .
lock ( AppInfo , _ ) - >
lock ( AppInfo , _ ) - >
check_type_support ( ) ,
lock_ ( rebar_app_info : dir ( AppInfo ) , rebar_app_info : source ( AppInfo ) ) .
lock_ ( rebar_app_info : dir ( AppInfo ) , rebar_app_info : source ( AppInfo ) ) .
lock_ ( AppDir , { hg , Url , _ } ) - >
lock_ ( AppDir , { hg , Url , _ } ) - >
@ -61,6 +62,7 @@ needs_update_(Dir, {hg, Url, Ref}) ->
not ( ( LocalRef =:= TargetRef ) andalso compare_url ( Dir , Url ) ) .
not ( ( LocalRef =:= TargetRef ) andalso compare_url ( Dir , Url ) ) .
download ( TmpDir , AppInfo , State , _ ) - >
download ( TmpDir , AppInfo , State , _ ) - >
check_type_support ( ) ,
case download_ ( TmpDir , rebar_app_info : source ( AppInfo ) , State ) of
case download_ ( TmpDir , rebar_app_info : source ( AppInfo ) , State ) of
{ ok , _ } - >
{ ok , _ } - >
ok ;
ok ;
@ -110,6 +112,7 @@ download_(Dir, {hg, Url, Rev}, _State) ->
[ { cd , filename : dirname ( Dir ) } ] ) .
[ { cd , filename : dirname ( Dir ) } ] ) .
make_vsn ( AppInfo , _ ) - >
make_vsn ( AppInfo , _ ) - >
check_type_support ( ) ,
make_vsn_ ( rebar_app_info : dir ( AppInfo ) ) .
make_vsn_ ( rebar_app_info : dir ( AppInfo ) ) .
make_vsn_ ( Dir ) - >
make_vsn_ ( Dir ) - >
@ -183,3 +186,19 @@ parse_hg_url("http://" ++ HostPath) ->
parse_hg_url ( " https:// " ++ HostPath ) - >
parse_hg_url ( " https:// " ++ HostPath ) - >
[ Host | Path ] = rebar_string : lexemes ( HostPath , " / " ) ,
[ Host | Path ] = rebar_string : lexemes ( HostPath , " / " ) ,
{ Host , filename : rootname ( filename : join ( Path ) , " .hg " ) } .
{ Host , filename : rootname ( filename : join ( Path ) , " .hg " ) } .
check_type_support ( ) - >
case get ( { is_supported , ? MODULE } ) of
true - >
ok ;
false - >
case rebar_utils : sh ( " hg --version " , [ { return_on_error , true } ,
{ use_stdout , false } ] ) of
{ error , _ } - >
? ABORT ( " hg not installed " , [ ] ) ;
_ - >
put ( { is_supported , ? MODULE } , true ) ,
ok
end
end .