%%%-------------------------------------------------------------------
%%% @author Evgeniy Khramtsov <ekhramtsov@process-one.net>
%%% @copyright (C) 2013, Evgeniy Khramtsov
%%% @doc
%%% Rebar build script. Compliant with rebar and rebar3.
%%% @end
%%% Created :  8 May 2013 by Evgeniy Khramtsov <ekhramtsov@process-one.net>
%%%-------------------------------------------------------------------

Cfg = case file:consult("vars.config") of
          {ok, Terms} ->
              Terms;
          _Err ->
              []
      end ++ [{cflags, ""}, {ldflags, "-lexpat"}],
{cflags, CfgCFlags} = lists:keyfind(cflags, 1, Cfg),
{ldflags, CfgLDFlags} = lists:keyfind(ldflags, 1, Cfg),

NIFPortSpec = [{"priv/lib/xml.so", ["c_src/xml.c"]},
               {"priv/lib/xml_stream.so", ["c_src/xml_stream.c"]}],

Config = [{erl_opts, [debug_info, {src_dirs, ["src"]}]},
          {port_env, [{"CFLAGS", CfgCFlags ++ " $CFLAGS -g -O2 -Wall"},
                      {"LDFLAGS", CfgLDFlags ++ " $LDFLAGS"}]},
          {port_specs, NIFPortSpec},

          {cover_enabled, true},
          {cover_export_enabled, true},

          {profiles, [{test, [{erl_opts, [{src_dirs, ["src", "test"]}]}]}]},
          {plugins, [rebar3_hex]}],

%% When running Travis test, upload test coverage result to coveralls:
Config2 = case os:getenv("TRAVIS") of
              "true" ->
                  JobId = os:getenv("TRAVIS_JOB_ID"),
                  C1 = lists:keystore(deps, 1, Config, {deps, [{coveralls, ".*", {git, "https://github.com/markusn/coveralls-erl.git", "master"}}]}),
                  C2 = lists:keystore(plugin_dir, 1, C1, {plugin_dir, "deps/coveralls/src"}),
                  C3 = lists:keystore(plugins, 1, C2, {plugins, [rebar_coveralls]}), %% We do not need rebar3_hex from Travis
                  C4 = lists:keystore(coveralls_coverdata, 1, C3, {coveralls_coverdata, ".eunit/cover.coverdata"}),
                  C5 = lists:keystore(coveralls_service_job_id, 1, C4, {coveralls_service_job_id, JobId}),
                  lists:keystore(coveralls_service_name, 1, C5, {coveralls_service_name, "travis-ci"});
              _ ->
                  Config 
          end,

%%io:format("xml configuration:~n  ~p~n", [Config2]),
Config2.

%% Local Variables:
%% mode: erlang
%% End:
%% vim: set filetype=erlang tabstop=8:
