diff options
| author | CarlosEDP <me@carlosedp.com> | 2015-07-01 13:58:40 -0300 | 
|---|---|---|
| committer | CarlosEDP <me@carlosedp.com> | 2015-07-03 16:40:24 -0300 | 
| commit | 9906fdc25e3769d07b0de78a18501c7a681e6dc9 (patch) | |
| tree | c6efb0ec932d235ab959f04726c0f74d75a95e97 | |
| parent | 3908c20aae55242e666f61fbbfd5985a4b69d824 (diff) | |
Added support to http and https proxies on bootstrap. Variables are read from environment vars http_proxy and https_proxy.
| -rwxr-xr-x | bootstrap | 42 | 
1 files changed, 42 insertions, 0 deletions
| @@ -82,6 +82,7 @@ extract(Binary) ->      {ok, Contents}.  request(Url) -> +    setHttpcOptions(),      case httpc:request(get, {Url, []},                         [{relaxed, true}],                         [{body_format, binary}]) of @@ -91,6 +92,47 @@ request(Url) ->              Error      end. +setHttpcOptions() -> +    %% 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, + +    io:format("Opts: ~p~n", [Opts2]), + +    case Opts2 of +        [] -> +            ok; +        _ -> +            httpc:set_options(Opts2), +            ok +    end. +  compile(App, FirstFiles) ->      Dir = filename:join(filename:absname("_build/default/lib/"), App),      filelib:ensure_dir(filename:join([Dir, "ebin", "dummy.beam"])), | 
