From c67ac9292c4c264a209e6b9308b619c65d03d86c Mon Sep 17 00:00:00 2001
From: Tristan Sloughter <t@crashfast.com>
Date: Mon, 7 Mar 2016 12:20:57 -0600
Subject: pass loglevel used in rebar3 to relx

---
 src/rebar_log.erl  | 19 +++++++++++++++----
 src/rebar_relx.erl |  7 +++++--
 2 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/rebar_log.erl b/src/rebar_log.erl
index be92199..23ae81e 100644
--- a/src/rebar_log.erl
+++ b/src/rebar_log.erl
@@ -28,11 +28,13 @@
 
 -export([init/2,
          set_level/1,
+         get_level/0,
          error_level/0,
          default_level/0,
          intensity/0,
          log/3,
-         is_verbose/1]).
+         is_verbose/1,
+         valid_level/1]).
 
 -define(ERROR_LEVEL, 0).
 -define(WARN_LEVEL,  1).
@@ -72,11 +74,20 @@ init(Caller, Verbosity) ->
             end,
     Intensity = intensity(),
     Log = ec_cmd_log:new(Level, Caller, Intensity),
+    set_level(valid_level(Verbosity)),
     application:set_env(rebar, log, Log).
 
 set_level(Level) ->
     ok = application:set_env(rebar, log_level, Level).
 
+get_level() ->
+    case application:get_env(rebar, log_level) of
+        undefined ->
+            default_level();
+        {ok, Level} ->
+            Level
+    end.
+
 log(Level = error, Str, Args) ->
     {ok, LogState} = application:get_env(rebar, log),
     ec_cmd_log:Level(LogState, lists:flatten(cf:format("~!^~s~n", [Str])), Args);
@@ -90,9 +101,9 @@ default_level() -> ?INFO_LEVEL.
 is_verbose(State) ->
     rebar_state:get(State, is_verbose, false).
 
+valid_level(Level) ->
+    erlang:max(?ERROR_LEVEL, erlang:min(Level, ?DEBUG_LEVEL)).
+
 %% ===================================================================
 %% Internal functions
 %% ===================================================================
-
-valid_level(Level) ->
-    erlang:max(?ERROR_LEVEL, erlang:min(Level, ?DEBUG_LEVEL)).
diff --git a/src/rebar_relx.erl b/src/rebar_relx.erl
index 125da47..5c653a3 100644
--- a/src/rebar_relx.erl
+++ b/src/rebar_relx.erl
@@ -16,6 +16,7 @@
 do(Module, Command, Provider, State) ->
     %% We set the color mode for relx as a application env
     application:set_env(relx, color_intensity, rebar_log:intensity()),
+    LogLevel = rebar_log:get_level(),
     Options = rebar_state:command_args(State),
     DepsDir = rebar_dir:deps_dir(State),
     ProjectAppDirs = lists:delete(".", ?DEFAULT_PROJECT_APP_DIRS),
@@ -30,12 +31,14 @@ do(Module, Command, Provider, State) ->
         case rebar_state:get(State, relx, []) of
             [] ->
                 relx:main([{lib_dirs, LibDirs}
-                          ,{caller, api} | output_dir(OutputDir, Options)], AllOptions);
+                          ,{caller, api}
+                          ,{log_level, LogLevel} | output_dir(OutputDir, Options)], AllOptions);
             Config ->
                 Config1 = merge_overlays(Config),
                 relx:main([{lib_dirs, LibDirs}
                           ,{config, Config1}
-                          ,{caller, api} | output_dir(OutputDir, Options)], AllOptions)
+                          ,{caller, api}
+                          ,{log_level, LogLevel} | output_dir(OutputDir, Options)], AllOptions)
         end,
         rebar_hooks:run_project_and_app_hooks(Cwd, post, Provider, Providers, State),
         {ok, State}
-- 
cgit v1.1