diff options
| author | Fred Hebert <mononcqc@ferd.ca> | 2016-03-01 12:00:24 -0500 | 
|---|---|---|
| committer | Fred Hebert <mononcqc@ferd.ca> | 2016-03-01 12:00:24 -0500 | 
| commit | 0bcacad782d915b837d179412ae4bed5c00e2936 (patch) | |
| tree | d3831b21476ff63ba26f503cdc5f448db3ff7f29 /src | |
| parent | 4fd77ef17236d2cdeb66ec968fbe6e37532270d3 (diff) | |
| parent | bc86eb73146150630b7634332a55ab0ed53757f3 (diff) | |
Merge branch 'saleyn-state'
Diffstat (limited to 'src')
| -rw-r--r-- | src/rebar.app.src | 1 | ||||
| -rw-r--r-- | src/rebar3.erl | 8 | ||||
| -rw-r--r-- | src/rebar_hooks.erl | 1 | ||||
| -rw-r--r-- | src/rebar_prv_state.erl | 44 | ||||
| -rw-r--r-- | src/rebar_state.erl | 17 | 
5 files changed, 67 insertions, 4 deletions
| diff --git a/src/rebar.app.src b/src/rebar.app.src index 58fee02..bd0f871 100644 --- a/src/rebar.app.src +++ b/src/rebar.app.src @@ -66,6 +66,7 @@                       rebar_prv_relup,                       rebar_prv_report,                       rebar_prv_shell, +                     rebar_prv_state,                       rebar_prv_tar,                       rebar_prv_unlock,                       rebar_prv_update, diff --git a/src/rebar3.erl b/src/rebar3.erl index 10eccfd..c1a1ae4 100644 --- a/src/rebar3.erl +++ b/src/rebar3.erl @@ -252,10 +252,10 @@ set_global_flag(State, Options, Flag) ->  %%  global_option_spec_list() ->      [ -    %% {Name, ShortOpt, LongOpt, ArgSpec, HelpMsg} -    {help,     $h, "help",     undefined, "Print this help."}, -    {version,  $v, "version",  undefined, "Show version information."}, -    {task,     undefined, undefined, string, "Task to run."} +    %% {Name,  ShortOpt,  LongOpt,    ArgSpec,   HelpMsg} +    {help,     $h,        "help",     undefined, "Print this help."}, +    {version,  $v,        "version",  undefined, "Show version information."}, +    {task,     undefined, undefined,  string,    "Task to run."}      ].  handle_error(rebar_abort) -> diff --git a/src/rebar_hooks.erl b/src/rebar_hooks.erl index 769890f..3af17ca 100644 --- a/src/rebar_hooks.erl +++ b/src/rebar_hooks.erl @@ -87,6 +87,7 @@ run_hooks(Dir, post, Command, Opts, State) ->  run_hooks(Dir, Type, Command, Opts, State) ->      case rebar_opts:get(Opts, Type, []) of          [] -> +            ?DEBUG("run_hooks(~p, ~p, ~p) -> no hooks defined\n", [Dir, Type, Command]),              ok;          Hooks ->              Env = create_env(State, Opts), diff --git a/src/rebar_prv_state.erl b/src/rebar_prv_state.erl new file mode 100644 index 0000000..4fbcb67 --- /dev/null +++ b/src/rebar_prv_state.erl @@ -0,0 +1,44 @@ +%% -*- erlang-indent-level: 4;indent-tabs-mode: nil -*- +%% ex: ts=4 sw=4 et + +-module(rebar_prv_state). + +-behaviour(provider). + +-export([init/1, +         do/1, +         format_error/1]). + +-include("rebar.hrl"). + +-define(PROVIDER, state). +-define(DEPS, []). + +%% =================================================================== +%% Public API +%% =================================================================== + +-spec init(rebar_state:t()) -> {ok, rebar_state:t()}. +init(State) -> +    Provider = providers:create( +        [{name, ?PROVIDER}, +         {module, ?MODULE}, +         {bare, false}, +         {deps, ?DEPS}, +         {example, "rebar3 state"}, +         {short_desc, "Print current configuration state"}, +         {desc, "Display rebar configuration for debugging purpose"}, +         {opts, []}]), +    State1 = rebar_state:add_provider(State, Provider), +    {ok, State1}. + +-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}. +do(State) -> +    L = rebar_state:to_list(State), +    ?CONSOLE("State:", []), +    [?CONSOLE("  ~w: ~p", [K, V]) || {K,V} <- L], +    {ok, State}. + +-spec format_error(any()) -> iolist(). +format_error(Reason) -> +    io_lib:format("~p", [Reason]). diff --git a/src/rebar_state.erl b/src/rebar_state.erl index 30eff2f..a613a00 100644 --- a/src/rebar_state.erl +++ b/src/rebar_state.erl @@ -36,6 +36,8 @@           deps_names/1, +         to_list/1, +           resources/1, resources/2, add_resource/2,           providers/1, providers/2, add_provider/2,           allow_provider_overrides/1, allow_provider_overrides/2 @@ -418,6 +420,21 @@ create_logic_providers(ProviderModules, State0) ->              throw({error, "Failed creating providers. Run with DEBUG=1 for stacktrace."})      end. +to_list(#state_t{} = State) -> +    Fields = record_info(fields, state_t), +    Values = tl(tuple_to_list(State)), +    DictSz = tuple_size(dict:new()), +    lists:zip(Fields, [reformat(I, DictSz) || I <- Values]). + +reformat({K,V}, DSz) when is_list(V) -> +    {K, [reformat(I, DSz) || I <- V]}; +reformat(V, DSz) when is_tuple(V), element(1,V) =:= dict, tuple_size(V) =:= DSz -> +    [reformat(I, DSz) || I <- dict:to_list(V)]; +reformat({K,V}, DSz) when is_tuple(V), element(1,V) =:= dict, tuple_size(V) =:= DSz -> +    {K, [reformat(I, DSz) || I <- dict:to_list(V)]}; +reformat(Other, _DSz) -> +    Other. +  %% ===================================================================  %% Internal functions  %% =================================================================== | 
