%% == Compiler and Profiles ==

{erl_opts, [
    warn_missing_spec,
    warn_unused_import,
    warn_export_vars,
    warnings_as_errors,
    verbose,
    debug_info
]}.

{minimum_otp_vsn, "26"}.

{profiles, [
    {test, [
        {extra_src_dirs, ["test/examples"]},
        {deps, [{meck, "1.1.0"}]},
        {erl_opts, [nowarn_missing_spec, nowarn_export_all]},
        {dialyzer, [{warnings, [no_return, error_handling]}, {plt_extra_apps, [common_test]}]},
        {ct_opts, [{sys_config, ["./config/test.config"]}, {verbose, true}]},
        {cover_enabled, true},
        {cover_opts, [verbose]}
    ]}
]}.

{alias, [
    {test, [hank, xref, dialyzer, ct, cover, ex_doc]},
    {go, [fmt, hank, xref, dialyzer, {ct, "--verbose"}, {cover, "--verbose"}, ex_doc, escriptize]}
]}.

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

%% == Dependencies and plugins ==

{deps, [{zipper, "1.1.0"}, {katana_code, "~> 2.4.2"}]}.

{project_plugins, [
    {rebar3_hank, "~> 1.6.1"},
    {rebar3_hex, "~> 7.0.11"},
    {erlfmt, "~> v1.7.0"},
    {rebar3_ex_doc, "0.2.30"}
]}.

%% == Documentation ==

{ex_doc, [
    {source_url, <<"https://github.com/inaka/elvis_core">>},
    {extras, [<<"README.md">>, <<"MIGRATION.md">>, <<"LICENSE">>]},
    {main, <<"README.md">>},
    {prefix_ref_vsn_with_v, false}
]}.

{hex, [{doc, #{provider => ex_doc}}]}.

%% == Format ==

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

%% == Hank ==

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

%% == Dialyzer + XRef ==

{dialyzer, [{warnings, [no_return, unmatched_returns, error_handling, unknown]}]}.

{xref_checks, [
    undefined_function_calls, deprecated_function_calls, deprecated_functions, exports_not_used
]}.

{xref_extra_paths, ["test/**"]}.
