{min_otp_version, "19.0"}.

{deps, [
        acceptor_pool,
        {types, "~> 0.1"},
        time_compat,
        rand_compat,
        {lager, "~> 3.5"}
       ]}.

{dialyzer_base_plt_apps, [kernel, stdlib, erts, sasl, eunit, syntax_tools, compiler, crypto]}.
{xref_checks, [undefined_function_calls]}.
{erl_opts, [debug_info,
            warnings_as_errors,
            {platform_define, "^[0-9]+", namespaced_types},
            {parse_transform, lager_transform}]}.
{cover_enabled, true}.
{eunit_opts, [verbose, {report,{eunit_surefire,[{dir,"."}]}}]}.
{edoc_opts, [{preprocess, true}]}.

{profiles, [
    {test, [
        {erl_opts, [nowarn_export_all]}
    ]},
    {lint,  [
        {plugins, [rebar3_lint]}
    ]},
    {docs, [
        {deps, [edown]}
    ]}
]}.

{elvis,
 [#{dirs => ["src"],
       filter => "*.erl",
       rules => [
                 %% {elvis_style, line_length,
                 %%  #{ignore => [],
                 %%    limit => 80,
                 %%    skip_comments => false}},
                 {elvis_style, no_tabs},
                 {elvis_style, no_trailing_whitespace},
                 {elvis_style, macro_names, #{ignore => []}},
                 %% {elvis_style, macro_module_names},
                 {elvis_style, operator_spaces, #{rules => [{right, ","},
                                                            {right, "++"},
                                                            {left, "++"}]}},
                 %% {elvis_style, nesting_level, #{level => 3}},
                 {elvis_style, god_modules,
                  #{limit => 25,
                    ignore => []}},
                 {elvis_style, no_if_expression},
                 %% {elvis_style, invalid_dynamic_call, #{ignore => []}},
                 {elvis_style, used_ignored_variable},
                 {elvis_style, no_behavior_info},
                 {
                   elvis_style,
                   module_naming_convention,
                   #{regex => "^[a-z]([a-z0-9]*_?)*(_SUITE)?$",
                     ignore => []}
                 },
                 {
                   elvis_style,
                   function_naming_convention,
                   #{regex => "^([a-z][a-z0-9]*_?)*$"}
                 },
                 {elvis_style, state_record_and_type},
                 {elvis_style, no_spec_with_records}
                 %% {elvis_style, dont_repeat_yourself, #{min_complexity => 10}}
                 %% {elvis_style, no_debug_call, #{ignore => []}}
                ]
      },
     #{dirs => ["."],
       filter => "Makefile",
       rules => [{elvis_project, no_deps_master_erlang_mk, #{ignore => []}},
                 {elvis_project, protocol_for_deps_erlang_mk, #{ignore => []}}]
      },
     #{dirs => ["."],
       filter => "rebar.config",
       rules => [{elvis_project, no_deps_master_rebar, #{ignore => []}},
                 {elvis_project, protocol_for_deps_rebar, #{ignore => []}}]
      }
    ]
}.
