diff options
Diffstat (limited to 'src/rebar_config.erl')
-rw-r--r-- | src/rebar_config.erl | 25 |
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 %% =================================================================== |