%% Common project erlang options.
{erl_opts, [

    % mandatory
    debug_info,
    warnings_as_errors,
    warn_export_all,
    % warn_missing_spec, %ABNFC doesn't generate specs
    warn_untyped_record,
    warn_export_vars,

    % by default
    warn_unused_record,
    warn_bif_clash,
    warn_obsolete_guard,
    warn_unused_vars,
    warn_shadow_vars,
    warn_unused_import,
    warn_unused_function,
    warn_deprecated_function

    % at will
    % bin_opt_info
    % no_auto_import
    % warn_missing_spec_all
]}.

%% Common project dependencies.

%% XRef checks
{xref_checks, [
    undefined_function_calls,
    undefined_functions,
    deprecated_functions_calls,
    deprecated_functions
]}.
% at will
% {xref_warnings, true}.

%% Tests
{cover_enabled, true}.

{dialyzer, [
    {warnings, [
        % mandatory
        unmatched_returns,
        error_handling,
        race_conditions,
        unknown
    ]},
    {plt_apps, all_deps}
]}.

{deps, []}.

{plugins, [
    {rebar3_abnf_compiler, "0.1.3"},
    {rebar3_lint, "0.4.0"},
    {rebar3_proper, "0.12.1"}]}.

{profiles,
    [{test, [
        {deps, [{proper, "1.4.0"}, recon]}
    ]}
]}.

{proper_opts, [
    {numtests, 1000}
]}.

{abnf_opts, [
    binary
]}.
