{erl_opts, [
    debug_info,
    warnings_as_errors
]}.

{deps, [enough]}.

{plugins, [
    rebar3_lint,
    rebar3_hex,
    covertool,
    erlfmt
]}.

{profiles, [{test, [{erl_opts, [nowarn_export_all,
                                {d, 'TEST'}]}]}]}.

{erlfmt, [
    write,
    {print_width, 81},
    {files, "{src,test}/*.{hrl,erl,src}"}
]}.

{elvis, [
    #{
        dirs => ["apps/*/src", "src"],
        filter => "*.erl",
        rules => [
            {elvis_style, line_length, #{
                ignore => [],
                limit => 81,
                skip_comments => whole_line
            }},
            {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 => [
                    systemd_journal_h,
                    systemd_kmsg_formatter
                ]
            }},
            {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 => 20}},
            {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 => []}}
        ]
    }
]}.
