summaryrefslogtreecommitdiff
path: root/src/rebar_fetch.erl
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2015-05-08 20:06:43 -0500
committerTristan Sloughter <t@crashfast.com>2015-05-12 19:55:06 -0500
commit7905a9f19cdb0ca2ff70567613784084e3e0a2fd (patch)
treebe2b48881e6146baf101cda91c68ba34b051022d /src/rebar_fetch.erl
parent192e85aafa366a014600b6989480fa0b612b0408 (diff)
store hex package downloads in shared cache dir
Diffstat (limited to 'src/rebar_fetch.erl')
-rw-r--r--src/rebar_fetch.erl15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/rebar_fetch.erl b/src/rebar_fetch.erl
index 20bf46b..ec16089 100644
--- a/src/rebar_fetch.erl
+++ b/src/rebar_fetch.erl
@@ -40,20 +40,15 @@ download_source(AppDir, Source, State) ->
ok = rebar_file_utils:mv(TmpDir, filename:absname(AppDir1)),
true;
{tarball, File} ->
- Contents = filename:join(TmpDir, "contents"),
ec_file:mkdir_p(AppDir1),
- ec_file:mkdir_p(Contents),
- ok = erl_tar:extract(File, [{cwd, TmpDir}]),
- ok = erl_tar:extract(filename:join(TmpDir, "contents.tar.gz"),
- [{cwd, Contents}, compressed]),
+ {ok, Files} = erl_tar:extract(File, [memory]),
+
code:del_path(filename:absname(filename:join(AppDir1, "ebin"))),
ec_file:remove(filename:absname(AppDir1), [recursive]),
- ?DEBUG("Moving contents ~p to ~p", [Contents, filename:absname(AppDir1)]),
- ok = rebar_file_utils:mv(Contents, filename:absname(AppDir1)),
-
- ?DEBUG("Removing tmp dir ~p", [TmpDir]),
- ec_file:remove(TmpDir, [recursive]),
+ {"contents.tar.gz", Binary} = lists:keyfind("contents.tar.gz", 1, Files),
+ ok = erl_tar:extract({binary, Binary},
+ [{cwd, filename:absname(AppDir1)}, compressed]),
true
end
catch