diff options
author | CarlosEDP <me@carlosedp.com> | 2015-07-01 14:13:43 -0300 |
---|---|---|
committer | CarlosEDP <me@carlosedp.com> | 2015-07-03 16:40:25 -0300 |
commit | 8de84f1af04a716357dbc5473f7daf74cb31f44a (patch) | |
tree | 5a29a4dd0dc8fcd413424d9a266031732fdc822e /src | |
parent | 9906fdc25e3769d07b0de78a18501c7a681e6dc9 (diff) |
Added support for proxy on rebar3 based on environment variables.
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar3.erl | 12 | ||||
-rw-r--r-- | src/rebar_utils.erl | 54 |
2 files changed, 55 insertions, 11 deletions
diff --git a/src/rebar3.erl b/src/rebar3.erl index c501709..13f6017 100644 --- a/src/rebar3.erl +++ b/src/rebar3.erl @@ -273,13 +273,5 @@ start_and_load_apps() -> application:start(public_key), application:start(ssl), inets:start(), - inets:start(httpc, [{profile, hex}]), - http_opts(). - -http_opts() -> - Opts = [{max_sessions, 4}, - {max_keep_alive_length, 4}, - {keep_alive_timeout, 120000}, - {max_pipeline_length, 4}, - {pipeline_timeout, 60000}], - httpc:set_options(Opts, hex). + inets:start(httpc), + rebar_utils:set_httpc_options(). diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl index 0cbc7c2..35964ea 100644 --- a/src/rebar_utils.erl +++ b/src/rebar_utils.erl @@ -56,7 +56,8 @@ wordsize/0, tup_umerge/2, tup_sort/1, - line_count/1]). + line_count/1, + set_httpc_options/0]). %% for internal use only -export([otp_release/0]). @@ -661,3 +662,54 @@ maybe_ends_in_comma(H) -> "," ++ Flag -> lists:reverse(Flag); _ -> false end. + +set_httpc_options() -> + %% Get http_proxy and https_proxy environment variables + case os:getenv("http_proxy") of + false -> + Http = ""; + Http -> + Http + end, + case os:getenv("https_proxy") of + false -> + Https = ""; + Https -> + Https + end, + + %% Parse the variables to extract host and port + Opts = [], + case http_uri:parse(Http) of + {ok,{_, [], Host, Port, _, []}} -> + Opts1 = Opts ++ [{proxy, {{Host, Port}, []}}]; + {error, _} -> + Opts1 = Opts + end, + + case http_uri:parse(Https) of + {ok,{_, [], Host2, Port2, _, []}} -> + Opts2 = Opts1 ++ [{https_proxy, {{Host2, Port2}, []}}]; + {error, _} -> + Opts2 = Opts1 + end, + + case Opts2 of + [] -> + Opts3 = [ + {max_sessions, 4}, + {max_keep_alive_length, 4}, + {keep_alive_timeout, 120000}, + {max_pipeline_length, 4}, + {pipeline_timeout, 60000} + ]; + _ -> + Opts3 = Opts2 ++ [ + {max_sessions, 4}, + {max_keep_alive_length, 4}, + {keep_alive_timeout, 120000}, + {max_pipeline_length, 4}, + {pipeline_timeout, 60000} + ] + end, + httpc:set_options(Opts3). |