%% -*- mode: erlang;erlang-indent-level: 4;indent-tabs-mode: nil -*-

{erl_opts, [debug_info]}.
{erlydtl_opts, [{doc_root, "src"}, {recursive, true}]}.

{deps, [
        {cowboy, "2.8.0"},
        {uuid, "2.0.0", {pkg, uuid_erl}},
        {erlydtl, "0.13.1"},
        {jhn_stdlib, "3.4.3"}
       ]}.

{profiles, [
            {prod, [{relx, [{dev_mode, false}, {include_erts, true}]}]},
            {docs, [
                    {deps, [
                            {nova_modern, "0.1.3"}
                           ]},
                    {edoc_opts, [
                                 {preprocess, true},
                                 {title, "Nova Framework"},
                                 {stylesheet_file, "src/edoc.css"},
                                 {doclet, nova_modern},
                                 {todo, true}
                                ]}
                   ]},
            {lint,  [
                     {plugins, [
                                {rebar3_lint, {git, "https://github.com/project-fifo/rebar3_lint.git", {tag, "0.1.11"}}}
                               ]}
                    ]}
           ]}.

{dialyzer, [
            {warnings, [
                        unknown
                       ]},
            {plt_apps, all_deps},
            {plt_extra_apps, [jhn_stdlib,
                              edoc,
                              xmerl,
                              uuid,
                              cowboy,
                              erlydtl,
                              cowlib]}
           ]}.

{xref_checks,[
              undefined_function_calls,
              undefined_functions,
              locals_not_used,
              deprecated_function_calls,
              deprecated_functions
             ]}.


{plugins, [
           {rebar3_erlydtl_plugin, ".*",
            {git, "https://github.com/tsloughter/rebar3_erlydtl_plugin.git", {branch, "master"}}}
          ]}.


{provider_hooks, [
                  {pre, [{compile, {erlydtl, compile}}]}
                 ]}.

{elvis,
 [#{dirs => ["src"],
    filter => "*.erl",
    rules => [{elvis_style, line_length,
               #{ignore => [],
                 limit => 120,
                 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, 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 => "rebar.config",
    rules => [{elvis_project, no_deps_master_rebar, #{ignore => []}},
              {elvis_project, protocol_for_deps_rebar, #{ignore => []}}]
   }
 ]
}.
