@ -277,7 +277,8 @@ info_help(Description) ->
{ app_name , " .* " , { svn , " svn://svn.example.org/url " } } ,
{ app_name , " .* " , { bzr , " https://www.example.org/url " , " Rev " } } ,
{ app_name , " .* " , { fossil , " https://www.example.org/url " } } ,
{ app_name , " .* " , { fossil , " https://www.example.org/url " , " Vsn " } } ] }
{ app_name , " .* " , { fossil , " https://www.example.org/url " , " Vsn " } } ,
{ app_name , " .* " , { p4 , " //depot/subdir/app_dir " } } ] }
] ) .
% % Added because of trans deps ,
@ -507,6 +508,40 @@ use_source(Config, Dep, Count) ->
use_source ( Config , Dep #dep { dir = TargetDir } , Count - 1 )
end .
- record ( p4_settings , {
client = undefined ,
transport = " tcp4:perforce:1666 " ,
username ,
password
} ) .
init_p4_settings ( Basename ) - >
#p4_settings { client =
case inet : gethostname ( ) of
{ ok , HostName } - >
HostName ++ " - "
++ os : getenv ( " USER " ) ++ " - "
++ Basename
++ " -Rebar-automated-download "
end } .
download_source ( AppDir , { p4 , Url } ) - >
download_source ( AppDir , { p4 , Url , " #head " } ) ;
download_source ( AppDir , { p4 , Url , Rev } ) - >
download_source ( AppDir , { p4 , Url , Rev , init_p4_settings ( filename : basename ( AppDir ) ) } ) ;
download_source ( AppDir , { p4 , Url , _ Rev , Settings } ) - >
ok = filelib : ensure_dir ( AppDir ) ,
rebar_utils : sh_send ( " p4 client -i " ,
? FMT ( " Client: ~s ~n "
++ " Description: generated by Rebar ~n "
++ " Root: ~s ~n "
++ " View: ~n "
++ " ~s /... // ~s /... ~n " ,
[ Settings #p4_settings.client ,
AppDir ,
Url ,
Settings #p4_settings.client ] ) ,
[ ] ) ,
rebar_utils : sh ( ? FMT ( " p4 -c ~s sync -f " , [ Settings #p4_settings.client ] ) , [ ] ) ;
download_source ( AppDir , { hg , Url , Rev } ) - >
ok = filelib : ensure_dir ( AppDir ) ,
rebar_utils : sh ( ? FMT ( " hg clone -U ~s ~s " , [ Url , filename : basename ( AppDir ) ] ) ,
@ -573,6 +608,8 @@ update_source(Config, Dep) ->
Dep
end .
update_source1 ( AppDir , Args ) when element ( 1 , Args ) =:= p4 - >
download_source ( AppDir , Args ) ;
update_source1 ( AppDir , { git , Url } ) - >
update_source1 ( AppDir , { git , Url , { branch , " HEAD " } } ) ;
update_source1 ( AppDir , { git , Url , " " } ) - >
@ -696,7 +733,7 @@ source_engine_avail(Source) ->
source_engine_avail ( Name , Source )
when Name == hg ; Name == git ; Name == svn ; Name == bzr ; Name == rsync ;
Name == fossil - >
Name == fossil ; Name == p4 - >
case vcs_client_vsn ( Name ) > = required_vcs_client_vsn ( Name ) of
true - >
true ;
@ -717,6 +754,7 @@ vcs_client_vsn(Path, VsnArg, VsnRegex) ->
false
end .
required_vcs_client_vsn ( p4 ) - > { 2013 , 1 } ;
required_vcs_client_vsn ( hg ) - > { 1 , 1 } ;
required_vcs_client_vsn ( git ) - > { 1 , 5 } ;
required_vcs_client_vsn ( bzr ) - > { 2 , 0 } ;
@ -724,6 +762,9 @@ required_vcs_client_vsn(svn) -> {1, 6};
required_vcs_client_vsn ( rsync ) - > { 2 , 0 } ;
required_vcs_client_vsn ( fossil ) - > { 1 , 0 } .
vcs_client_vsn ( p4 ) - >
vcs_client_vsn ( rebar_utils : find_executable ( " p4 " ) , " -V " ,
" Rev \\ . .*/( \\ d+) \\ .( \\ d)/ " ) ;
vcs_client_vsn ( hg ) - >
vcs_client_vsn ( rebar_utils : find_executable ( " hg " ) , " --version " ,
" version ( \\ d+).( \\ d+) " ) ;
@ -743,6 +784,8 @@ vcs_client_vsn(fossil) ->
vcs_client_vsn ( rebar_utils : find_executable ( " fossil " ) , " version " ,
" version ( \\ d+).( \\ d+) " ) .
has_vcs_dir ( p4 , _ ) - >
true ;
has_vcs_dir ( git , Dir ) - >
filelib : is_dir ( filename : join ( Dir , " .git " ) ) ;
has_vcs_dir ( hg , Dir ) - >
@ -760,6 +803,8 @@ has_vcs_dir(_, _) ->
print_source ( #dep { app = App , source = Source } ) - >
? CONSOLE ( " ~s ~n " , [ format_source ( App , Source ) ] ) .
format_source ( App , { p4 , Url } ) - >
format_source ( App , { p4 , Url , " #head " } ) ;
format_source ( App , { git , Url } ) - >
? FMT ( " ~p BRANCH ~s ~s " , [ App , " HEAD " , Url ] ) ;
format_source ( App , { git , Url , " " } ) - >