diff options
author | Francisco Rojas <frojas@groupon.com> | 2016-04-06 21:16:25 -0700 |
---|---|---|
committer | Francisco Rojas <frojas@groupon.com> | 2016-04-06 21:16:25 -0700 |
commit | 243e94391a4ac446cfe0c814750abfb014db9ac4 (patch) | |
tree | 5c0f9fc9ea5408bc4c8b0a0359c2e646e6ad80ee | |
parent | 2d1d251add285c6296e0ce1c12e2a9a961c2209b (diff) |
Read env var REBAR_CACHE_DIR on rebar3 only once
Instead of reading every time that rebar_dir:global_cache_dir/1 is
called
-rw-r--r-- | src/rebar3.erl | 13 | ||||
-rw-r--r-- | src/rebar_dir.erl | 10 | ||||
-rw-r--r-- | test/rebar_dir_SUITE.erl | 2 |
3 files changed, 13 insertions, 12 deletions
diff --git a/src/rebar3.erl b/src/rebar3.erl index c1a1ae4..ff0ab6a 100644 --- a/src/rebar3.erl +++ b/src/rebar3.erl @@ -129,13 +129,20 @@ run_aux(State, RawArgs) -> %% Initializing project_plugins which can override default providers State6 = rebar_plugins:project_plugins_install(State5), State7 = rebar_plugins:top_level_install(State6), - State8 = rebar_state:default(State7, rebar_state:opts(State7)), + State8 = case os:getenv("REBAR_CACHE_DIR") of + false -> + State7; + ConfigFile -> + rebar_state:set(State7, global_rebar_dir, ConfigFile) + end, + + State9 = rebar_state:default(State8, rebar_state:opts(State8)), {Task, Args} = parse_args(RawArgs), - State9 = rebar_state:code_paths(State8, default, code:get_path()), + State10 = rebar_state:code_paths(State9, default, code:get_path()), - rebar_core:init_command(rebar_state:command_args(State9, Args), Task). + rebar_core:init_command(rebar_state:command_args(State10, Args), Task). init_config() -> %% Initialize logging system diff --git a/src/rebar_dir.erl b/src/rebar_dir.erl index df05cdb..1ec58d4 100644 --- a/src/rebar_dir.erl +++ b/src/rebar_dir.erl @@ -94,14 +94,8 @@ global_config() -> -spec global_cache_dir(rebar_dict()) -> file:filename_all(). global_cache_dir(Opts) -> - RebarCacheDir = case os:getenv("REBAR_CACHE_DIR") of - false -> - Home = home_dir(), - filename:join([Home, ".cache", "rebar3"]); - ConfigFile -> - ConfigFile - end, - rebar_opts:get(Opts, global_rebar_dir, RebarCacheDir). + Home = home_dir(), + rebar_opts:get(Opts, global_rebar_dir, filename:join([Home, ".cache", "rebar3"])). local_cache_dir(Dir) -> filename:join(Dir, ".rebar3"). diff --git a/test/rebar_dir_SUITE.erl b/test/rebar_dir_SUITE.erl index f287d5f..9734830 100644 --- a/test/rebar_dir_SUITE.erl +++ b/test/rebar_dir_SUITE.erl @@ -25,6 +25,7 @@ init_per_testcase(default_global_cache_dir, Config) -> ,{root_dir, AppsDir}]), [{apps, AppsDir}, {checkouts, CheckoutsDir}, {state, NewState} | Config]; init_per_testcase(overwrite_default_global_cache_dir, Config) -> + os:putenv("REBAR_CACHE_DIR", ?config(priv_dir, Config)), [{apps, AppsDir}, {checkouts, CheckoutsDir}, {state, _State} | Config] = rebar_test_utils:init_rebar_state(Config), NewState = rebar_state:new([{base_dir, filename:join([AppsDir, "_build"])} ,{root_dir, AppsDir}]), @@ -189,7 +190,6 @@ default_global_cache_dir(Config) -> ?assertEqual(Expected, rebar_dir:global_cache_dir(rebar_state:opts(State))). overwrite_default_global_cache_dir(Config) -> - os:putenv("REBAR_CACHE_DIR", ?config(priv_dir, Config)), RebarConfig = [{erl_opts, []}], {ok, State} = rebar_test_utils:run_and_check(Config, RebarConfig, ["compile"], return), Expected = ?config(priv_dir, Config), |