summaryrefslogtreecommitdiff
path: root/src/rebar_config.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_config.erl')
-rw-r--r--src/rebar_config.erl25
1 files changed, 20 insertions, 5 deletions
diff --git a/src/rebar_config.erl b/src/rebar_config.erl
index 31788b1..e9915ea 100644
--- a/src/rebar_config.erl
+++ b/src/rebar_config.erl
@@ -31,12 +31,17 @@
get_all/2,
set/3,
set_global/2, get_global/2,
- is_verbose/0, get_jobs/0]).
+ is_verbose/0, get_jobs/0,
+ set_env/3, get_env/2]).
-include("rebar.hrl").
-record(config, { dir :: file:filename(),
- opts :: list() }).
+ opts = [] :: list(),
+ envs = [] :: list({module(), env()}) }).
+
+-type env() :: [env_var()].
+-type env_var() :: {string(), string()}.
%% Types that can be used from other modules -- alphabetically ordered.
-export_type([config/0]).
@@ -53,8 +58,7 @@ base_config(#config{opts=Opts0}) ->
new(Opts0, ConfName).
new() ->
- #config { dir = rebar_utils:get_cwd(),
- opts = [] }.
+ #config{dir = rebar_utils:get_cwd()}.
new(ConfigFile) when is_list(ConfigFile) ->
case consult_file(ConfigFile) of
@@ -88,7 +92,7 @@ new(Opts0, ConfName) ->
?ABORT("Failed to load ~s: ~p\n", [ConfigFile, Other])
end,
- #config { dir = Dir, opts = Opts }.
+ #config{dir = Dir, opts = Opts}.
get(Config, Key, Default) ->
proplists:get_value(Key, Config#config.opts, Default).
@@ -143,6 +147,17 @@ consult_file(File) ->
end
end.
+set_env(Config, Mod, Env) ->
+ OldEnvs = Config#config.envs,
+ NewEnvs = case lists:keymember(Mod, 1, OldEnvs) of
+ true -> lists:keyreplace(Mod, 1, OldEnvs, {Mod, Env});
+ false -> [{Mod,Env}|OldEnvs]
+ end,
+ Config#config{envs=NewEnvs}.
+
+get_env(Config, Mod) ->
+ proplists:get_value(Mod, Config#config.envs, []).
+
%% ===================================================================
%% Internal functions
%% ===================================================================