summaryrefslogtreecommitdiff
path: root/src/rebar_fetch.erl
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2014-08-25 21:41:12 -0500
committerTristan Sloughter <t@crashfast.com>2014-08-25 21:41:22 -0500
commitf17812d963b34c8157df44a4dee8380a581aa200 (patch)
treee76b1ec35918aa778b9201ee3693de4da8f6a995 /src/rebar_fetch.erl
parentf72a38c3b3d409dca529697cb3d3715cbf76a1bf (diff)
fix up tarball extraction path and parse goal constraints
Diffstat (limited to 'src/rebar_fetch.erl')
-rw-r--r--src/rebar_fetch.erl17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/rebar_fetch.erl b/src/rebar_fetch.erl
index 09e52a9..83aa0b4 100644
--- a/src/rebar_fetch.erl
+++ b/src/rebar_fetch.erl
@@ -44,10 +44,16 @@ current_ref(AppDir, {git, _, _}) ->
string:strip(os:cmd("git --git-dir='" ++ AppDir ++ "/.git' rev-parse --verify HEAD"), both, $\n).
download_source(AppDir, Source) ->
- ec_file:mkdir_p(AppDir),
TmpDir = ec_file:insecure_mkdtemp(),
- download_source_tmp(TmpDir, Source),
- ok = ec_file:copy(TmpDir, binary_to_list(filename:absname(AppDir)), [recursive]).
+ case download_source_tmp(TmpDir, Source) of
+ ok ->
+ ec_file:mkdir_p(AppDir),
+ ok = ec_file:copy(TmpDir, binary_to_list(filename:absname(AppDir)), [recursive]);
+ {tarball, File} ->
+ ok = erl_tar:extract(File, [{cwd,
+ (filename:dirname(filename:absname(binary_to_list(AppDir))))}
+ ,compressed])
+ end.
download_source_tmp(TmpDir, {p4, Url}) ->
download_source_tmp(TmpDir, {p4, Url, "#head"});
@@ -116,10 +122,9 @@ download_source_tmp(TmpDir, {fossil, Url, Version}) ->
[]);
download_source_tmp(TmpDir, {AppName, AppVersion, Url}) when is_binary(AppName)
, is_binary(AppVersion) ->
- TmpFile = binary_to_list(filename:join(TmpDir, <<AppName/binary, "-", AppVersion/binary>>)),
+ TmpFile = binary_to_list(filename:join(TmpDir, <<AppName/binary, "-", AppVersion/binary, ".tar.gz">>)),
{ok, saved_to_file} = httpc:request(get, {binary_to_list(Url), []}, [], [{stream, TmpFile}]),
- ok = erl_tar:extract(TmpFile, [{cwd, filename:dirname(TmpDir)}, compressed]),
- ok.
+ {tarball, TmpFile}.
update_source1(AppDir, Args) when element(1, Args) =:= p4 ->
download_source_tmp(AppDir, Args);