summaryrefslogtreecommitdiff
path: root/src/rebar_state.erl
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2014-09-21 09:19:38 -0500
committerTristan Sloughter <t@crashfast.com>2014-09-21 09:19:38 -0500
commit6356112cbbb32b09dd2f94ea856c3cbd32b1c085 (patch)
tree3fee9bbb20d8217bd31f77b693faa27a50870fba /src/rebar_state.erl
parentc3f3f3aa69358a8e181bf8f8804e14ab4f60ddbe (diff)
more dialyzer fun. no likey opaque types
Diffstat (limited to 'src/rebar_state.erl')
-rw-r--r--src/rebar_state.erl55
1 files changed, 11 insertions, 44 deletions
diff --git a/src/rebar_state.erl b/src/rebar_state.erl
index 7ec4b97..58d535a 100644
--- a/src/rebar_state.erl
+++ b/src/rebar_state.erl
@@ -5,7 +5,6 @@
command_args/1, command_args/2,
dir/1, dir/2,
- set_skip_dir/2, is_skip_dir/2, reset_skip_dirs/1,
create_logic_providers/2,
project_apps/1, project_apps/2,
@@ -20,34 +19,23 @@
-include("rebar.hrl").
--ifdef(namespaced_types).
-%% dict:dict() exists starting from Erlang 17.
--type rebar_dict() :: dict:dict(term(), term()).
--else.
-%% dict() has been obsoleted in Erlang 17 and deprecated in 18.
--type rebar_dict() :: dict().
--endif.
+-record(state_t, {dir :: file:name(),
+ opts = [],
--record(state_t, {dir :: file:filename(),
- opts = [] :: list(),
- local_opts = [] :: list(),
- config = new_globals() :: rebar_dict(),
+ command_args = [],
- envs = new_env() :: rebar_dict(),
- command_args = [] :: list(),
-
- src_deps = [] :: [rebar_app_info:t()],
- src_apps = [] :: [rebar_app_info:t()],
+ src_deps = [],
+ src_apps = [],
binary_deps = [],
- project_apps = [] :: [rebar_app_info:t()],
+ project_apps = [],
providers = [],
- hooks = [],
- skip_dirs = new_skip_dirs() :: rebar_dict() }).
+ hooks = []}).
+
-export_type([t/0]).
--opaque t() :: #state_t{}.
+-type t() :: record(state_t).
-spec new() -> t().
new() ->
@@ -84,27 +72,11 @@ get(State, Key) ->
get(State, Key, Default) ->
proplists:get_value(Key, State#state_t.opts, Default).
+-spec set(t(), any(), any()) -> t().
set(State, Key, Value) ->
Opts = proplists:delete(Key, State#state_t.opts),
State#state_t { opts = [{Key, Value} | Opts] }.
-set_skip_dir(State, Dir) ->
- OldSkipDirs = State#state_t.skip_dirs,
- NewSkipDirs = case is_skip_dir(State, Dir) of
- false ->
- ?DEBUG("Adding skip dir: ~s\n", [Dir]),
- dict:store(Dir, true, OldSkipDirs);
- true ->
- OldSkipDirs
- end,
- State#state_t{skip_dirs = NewSkipDirs}.
-
-is_skip_dir(State, Dir) ->
- dict:is_key(Dir, State#state_t.skip_dirs).
-
-reset_skip_dirs(State) ->
- State#state_t{skip_dirs = new_skip_dirs()}.
-
command_args(#state_t{command_args=CmdArgs}) ->
CmdArgs.
@@ -181,15 +153,10 @@ append_hook(State=#state_t{hooks=Hooks}, Target, Hook) ->
{PreHooks, PostHooks} = proplists:get_value(Target, Hooks, {[], []}),
State#state_t{hooks=[{Target, {PreHooks, [Hook | PostHooks]}} | proplists:delete(Target, Hooks)]}.
+-spec hooks(t(), atom()) -> {[rebar_provider:t()], [rebar_provider:t()]}.
hooks(#state_t{hooks=Hooks}, Target) ->
proplists:get_value(Target, Hooks, {[], []}).
%% ===================================================================
%% Internal functions
%% ===================================================================
-
-new_globals() -> dict:new().
-
-new_env() -> dict:new().
-
-new_skip_dirs() -> dict:new().