summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2015-03-05 17:56:02 -0600
committerTristan Sloughter <t@crashfast.com>2015-03-05 20:13:17 -0600
commit7f508c30a1ece781f5dee552d3b5ae949947eb2f (patch)
treefb562255f32f1afab85fa173e2243e6f3b090154 /src
parent2a7e0ff2b42b762d541cfebc22f7cd9d18c87733 (diff)
apply profiles and overrides for an app's opts to the base opts
Diffstat (limited to 'src')
-rw-r--r--src/rebar_app_discover.erl4
-rw-r--r--src/rebar_core.erl9
-rw-r--r--src/rebar_state.erl6
3 files changed, 11 insertions, 8 deletions
diff --git a/src/rebar_app_discover.erl b/src/rebar_app_discover.erl
index 553947a..c5c0efd 100644
--- a/src/rebar_app_discover.erl
+++ b/src/rebar_app_discover.erl
@@ -34,13 +34,14 @@ format_error({missing_module, Module}) ->
io_lib:format("Module defined in app file missing: ~p~n", [Module]).
merge_deps(AppInfo, State) ->
+ Default = rebar_state:default(State),
Profiles = rebar_state:current_profiles(State),
Name = rebar_app_info:name(AppInfo),
C = rebar_config:consult(rebar_app_info:dir(AppInfo)),
AppState = rebar_state:apply_overrides(
rebar_state:apply_profiles(
- rebar_state:new(State, C, rebar_app_info:dir(AppInfo)), Profiles), Name),
+ rebar_state:new(rebar_state:opts(State, Default), C, rebar_app_info:dir(AppInfo)), Profiles), Name),
AppInfo1 = rebar_app_info:state(AppInfo, AppState),
State1 = lists:foldl(fun(Profile, StateAcc) ->
@@ -50,7 +51,6 @@ merge_deps(AppInfo, State) ->
rebar_state:set(StateAcc, {deps, Profile}, ProfDeps2)
end, State, lists:reverse(Profiles)),
-
{AppInfo1, State1}.
-spec all_app_dirs(list(file:name())) -> list(file:name()).
diff --git a/src/rebar_core.erl b/src/rebar_core.erl
index 205258a..f0d9b3d 100644
--- a/src/rebar_core.erl
+++ b/src/rebar_core.erl
@@ -78,12 +78,13 @@ process_command(State, Command) ->
Command when Command =:= do; Command =:= as ->
do(TargetProviders, State);
_ ->
+ Profiles = providers:profiles(CommandProvider),
+ State1 = rebar_state:apply_profiles(State, Profiles),
Opts = providers:opts(CommandProvider)++rebar3:global_option_spec_list(),
-
- case getopt:parse(Opts, rebar_state:command_args(State)) of
+ case getopt:parse(Opts, rebar_state:command_args(State1)) of
{ok, Args} ->
- State1 = rebar_state:command_parsed_args(State, Args),
- do(TargetProviders, State1);
+ State2 = rebar_state:command_parsed_args(State1, Args),
+ do(TargetProviders, State2);
{error, {invalid_option, Option}} ->
{error, io_lib:format("Invalid option ~s on task ~p", [Option, Command])}
end
diff --git a/src/rebar_state.erl b/src/rebar_state.erl
index 8170b8d..6ca3baa 100644
--- a/src/rebar_state.erl
+++ b/src/rebar_state.erl
@@ -3,7 +3,7 @@
-export([new/0, new/1, new/2, new/3,
get/2, get/3, set/3,
- opts/1,
+ opts/1, opts/2,
default/1, default/2,
escript_path/1, escript_path/2,
@@ -37,7 +37,6 @@
-record(state_t, {dir :: file:name(),
opts = dict:new() :: rebar_dict(),
default = dict:new() :: rebar_dict(),
-
escript_path :: undefined | file:filename_all(),
lock = [],
@@ -129,6 +128,9 @@ default(State, Opts) ->
opts(#state_t{opts=Opts}) ->
Opts.
+opts(State, Opts) ->
+ State#state_t{opts=Opts}.
+
current_profiles(#state_t{current_profiles=Profiles}) ->
Profiles.