diff options
author | Tristan Sloughter <t@crashfast.com> | 2015-05-08 20:06:43 -0500 |
---|---|---|
committer | Tristan Sloughter <t@crashfast.com> | 2015-05-12 19:55:06 -0500 |
commit | 7905a9f19cdb0ca2ff70567613784084e3e0a2fd (patch) | |
tree | be2b48881e6146baf101cda91c68ba34b051022d /src/rebar_fetch.erl | |
parent | 192e85aafa366a014600b6989480fa0b612b0408 (diff) |
store hex package downloads in shared cache dir
Diffstat (limited to 'src/rebar_fetch.erl')
-rw-r--r-- | src/rebar_fetch.erl | 15 |
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 |