|
|
@ -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, ""}) -> |
|
|
|