summaryrefslogtreecommitdiff
path: root/src/rebar_prv_update.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_prv_update.erl')
-rw-r--r--src/rebar_prv_update.erl48
1 files changed, 34 insertions, 14 deletions
diff --git a/src/rebar_prv_update.erl b/src/rebar_prv_update.erl
index f48b507..78c7c34 100644
--- a/src/rebar_prv_update.erl
+++ b/src/rebar_prv_update.erl
@@ -30,22 +30,42 @@ init(State) ->
{ok, State1}.
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | relx:error().
-do(Config) ->
- [Name] = rebar_state:command_args(Config),
- ?INFO("Updating ~s~n", [Name]),
+do(State) ->
+ case rebar_state:command_args(State) of
+ [Name] ->
+ ?INFO("Updating ~s~n", [Name]),
- DepsDir = rebar_deps:get_deps_dir(Config),
- Deps = rebar_state:get_local(Config, deps, []),
- {_, _, Source} = lists:keyfind(list_to_atom(Name), 1, Deps),
- TargetDir = rebar_deps:get_deps_dir(DepsDir, Name),
- rebar_fetch:update_source1(TargetDir, Source),
+ DepsDir = rebar_deps:get_deps_dir(State),
+ Deps = rebar_state:get_local(State, deps, []),
+ {_, _, Source} = lists:keyfind(list_to_atom(Name), 1, Deps),
+ TargetDir = rebar_deps:get_deps_dir(DepsDir, Name),
+ rebar_fetch:update_source1(TargetDir, Source),
- [App] = rebar_app_discover:find_apps([TargetDir]),
+ [App] = rebar_app_discover:find_apps([TargetDir]),
- {ok, AppInfo1} = rebar_otp_app:compile(Config, App),
- Config1 = rebar_state:replace_app(Config, rebar_app_info:name(AppInfo1), AppInfo1),
- rebar_erlc_compiler:compile(Config, rebar_app_info:dir(AppInfo1)),
+ {ok, AppInfo1} = rebar_otp_app:compile(State, App),
+ State1 = rebar_state:replace_app(State, rebar_app_info:name(AppInfo1), AppInfo1),
+ rebar_erlc_compiler:compile(State, rebar_app_info:dir(AppInfo1)),
- %update_lock_file(Config, AppInfo1, Source),
+ %update_lock_file(State, AppInfo1, Source),
- {ok, Config}.
+ {ok, State};
+ [] ->
+ ?INFO("Updating package index...", []),
+ Url = rebar_state:get(State, rebar_packages_url, ""),
+ ec_file:mkdir_p(filename:join([os:getenv("HOME"), ".rebar"])),
+ PackagesFile = filename:join([os:getenv("HOME"), ".rebar", "packages"]),
+ {ok, RequestId} = httpc:request(get, {Url, []}, [], [{stream, PackagesFile}, {sync, false}]),
+ wait(RequestId, State)
+ end.
+
+wait(RequestId, State) ->
+ receive
+ {http, {RequestId, saved_to_file}} ->
+ io:format("~n"),
+ {ok, State}
+ after
+ 500 ->
+ io:format("."),
+ wait(RequestId, State)
+ end.