summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2015-07-19 14:48:54 -0500
committerTristan Sloughter <t@crashfast.com>2015-07-19 14:48:54 -0500
commit0097a841a3cc94aefc030250c9e0925658e99a05 (patch)
tree1da72d027634a5256cc09c165cb0ff67be5f4d70
parent93c000d02a4b79a2f17202016b119800d061ee57 (diff)
handle global config file that can't be read
-rw-r--r--src/rebar3.erl48
1 files changed, 29 insertions, 19 deletions
diff --git a/src/rebar3.erl b/src/rebar3.erl
index a797c46..46082f0 100644
--- a/src/rebar3.erl
+++ b/src/rebar3.erl
@@ -59,6 +59,10 @@ run(BaseState, Commands) ->
start_and_load_apps(),
BaseState1 = rebar_state:set(BaseState, task, Commands),
BaseState2 = rebar_state:set(BaseState1, caller, api),
+
+ Verbosity = log_level(),
+ ok = rebar_log:init(api, Verbosity),
+
run_aux(BaseState2, Commands).
%% ====================================================================
@@ -122,25 +126,17 @@ init_config() ->
end,
Config1 = rebar_config:merge_locks(Config, rebar_config:consult_lock_file(?LOCK_FILE)),
- %% If $HOME/.config/rebar3/config exists load and use as global config
+ %% If $HOME/.config/rebar3/rebar.config exists load and use as global config
GlobalConfigFile = rebar_dir:global_config(),
State = case filelib:is_regular(GlobalConfigFile) of
true ->
- ?DEBUG("Load global config file ~p",
- [GlobalConfigFile]),
- GlobalConfigTerms = rebar_config:consult_file(GlobalConfigFile),
- GlobalConfig = rebar_state:new(GlobalConfigTerms),
-
- %% We don't want to worry about global plugin install state effecting later
- %% usage. So we throw away the global profile state used for plugin install.
- GlobalConfigThrowAway = rebar_state:current_profiles(GlobalConfig, [global]),
- GlobalState = rebar_plugins:handle_plugins(global,
- rebar_state:get(GlobalConfigThrowAway, plugins, []),
- GlobalConfigThrowAway),
- GlobalPlugins = rebar_state:providers(GlobalState),
- GlobalConfig2 = rebar_state:set(GlobalConfig, plugins, []),
- GlobalConfig3 = rebar_state:set(GlobalConfig2, {plugins, global}, rebar_state:get(GlobalConfigThrowAway, plugins, [])),
- rebar_state:providers(rebar_state:new(GlobalConfig3, Config1), GlobalPlugins);
+ ?DEBUG("Load global config file ~s", [GlobalConfigFile]),
+ try state_from_global_config(Config1, GlobalConfigFile)
+ catch
+ _:_ ->
+ ?WARN("Global config ~s exists but can not be read. Ignoring global config values.", [GlobalConfigFile]),
+ rebar_state:new(Config1)
+ end;
false ->
rebar_state:new(Config1)
end,
@@ -273,6 +269,20 @@ start_and_load_apps() ->
application:start(public_key),
application:start(ssl),
inets:start(),
- inets:start(httpc, [{profile, rebar}]),
- rebar_utils:set_httpc_options().
-
+ inets:start(httpc, [{profile, rebar}]).
+
+state_from_global_config(Config, GlobalConfigFile) ->
+ rebar_utils:set_httpc_options(),
+ GlobalConfigTerms = rebar_config:consult_file(GlobalConfigFile),
+ GlobalConfig = rebar_state:new(GlobalConfigTerms),
+
+ %% We don't want to worry about global plugin install state effecting later
+ %% usage. So we throw away the global profile state used for plugin install.
+ GlobalConfigThrowAway = rebar_state:current_profiles(GlobalConfig, [global]),
+ GlobalState = rebar_plugins:handle_plugins(global,
+ rebar_state:get(GlobalConfigThrowAway, plugins, []),
+ GlobalConfigThrowAway),
+ GlobalPlugins = rebar_state:providers(GlobalState),
+ GlobalConfig2 = rebar_state:set(GlobalConfig, plugins, []),
+ GlobalConfig3 = rebar_state:set(GlobalConfig2, {plugins, global}, rebar_state:get(GlobalConfigThrowAway, plugins, [])),
+ rebar_state:providers(rebar_state:new(GlobalConfig3, Config), GlobalPlugins).