%% -*- mode: erlang;erlang-indent-level: 2;indent-tabs-mode: nil -*-
%% ex: ts=4 sw=4 ft=erlang et

%% == Erlang Compiler ==

%% Erlang compiler options
{erl_opts,
 [warn_unused_vars,
  warn_export_all,
  warn_shadow_vars,
  warn_unused_import,
  warn_unused_function,
  warn_bif_clash,
  warn_unused_record,
  warn_deprecated_function,
  warn_obsolete_guard,
  strict_validation,
  warn_export_vars,
  warn_exported_vars,
  warn_missing_spec,
  warn_untyped_record,
  debug_info,
  {feature, maybe_expr, enable}]}.

{profiles,
 [{test,
   [{extra_src_dirs, ["test/examples"]},
    {deps, [{meck, "0.9.2"}]},
    {erl_opts, [nowarn_missing_spec, nowarn_export_all]},
    {dialyzer, [{warnings, [no_return, unmatched_returns, error_handling]}]}]}]}.

{ct_opts, [{sys_config, ["./config/test.config"]}, {logdir, "./logs"}, {verbose, true}]}.

%% == Cover ==

{cover_enabled, true}.

{cover_opts, [verbose]}.

%% == Dependencies ==

{deps, [{zipper, "1.0.1"}, {katana_code, "~> 2.0.1"}]}.

%% == Dialyzer ==

{dialyzer,
 [{warnings, [no_return, unmatched_returns, error_handling, unknown]},
  {plt_apps, top_level_deps},
  {plt_extra_apps, [kernel, stdlib]},
  {plt_location, local}]}.

{shell, [{config, "config/test.config"}]}.

%% == xref ==

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

%% == Aliases ==

{alias, [{test, [format, xref, dialyzer, hank, ct, cover, edoc]}]}.

{project_plugins,
 [{rebar3_hex, "~> 7.0.1"}, {rebar3_format, "~> 1.2.0"}, {rebar3_hank, "~> 1.3.0"}]}.

%% == hank ==

{hank,
 [{ignore,
   [{"test/*/**", unnecessary_function_arguments},
    {"test/*/**", unused_macros},
    {"test/*/**", unused_callbacks}]}]}.

%% == format ==

{format,
 [{files,
   ["config/**/*.config", "src/**/*.app.src", "src/**/*.erl", "test/*.erl", "*.config"]}]}.
